aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Alex Bennee <alex@bennee.com>2010-07-14 15:57:06 +0100
committerGravatar Alex Bennee <alex@bennee.com>2010-07-14 15:57:06 +0100
commitba15707b292d827bdce732e7713b26fae3f75c74 (patch)
tree8159d5daa4588ade1e71b9cb8541d6438c6b80c6
EasyTag 2.1.1
-rw-r--r--ABOUT-NLS324
-rw-r--r--COPYING340
-rwxr-xr-xChangeLog1489
-rwxr-xr-xINSTALL163
-rwxr-xr-xMakefile.am158
-rw-r--r--Makefile.in942
-rw-r--r--Makefile.mingw42
-rwxr-xr-xREADME88
-rwxr-xr-xREADME_win32.txt131
-rwxr-xr-xTHANKS217
-rw-r--r--TODO7
-rwxr-xr-xUSERS-GUIDE6
-rw-r--r--acconfig.h18
-rw-r--r--aclocal.m48257
-rwxr-xr-xautogen.sh17
-rwxr-xr-xconfig.guess1411
-rwxr-xr-xconfig.h.in237
-rwxr-xr-xconfig.h.mingw428
-rwxr-xr-xconfig.sub1500
-rwxr-xr-xconfigure26877
-rwxr-xr-xconfigure.in465
-rwxr-xr-xdebian/changelog492
-rwxr-xr-xdebian/compat1
-rwxr-xr-xdebian/control39
-rwxr-xr-xdebian/copyright11
-rwxr-xr-xdebian/dirs3
-rwxr-xr-xdebian/docs3
-rwxr-xr-xdebian/easytag.149
-rwxr-xr-xdebian/easytag.xpm360
-rwxr-xr-xdebian/menu5
-rwxr-xr-xdebian/rules13
-rwxr-xr-xdepcomp436
-rwxr-xr-xdoc/EasyTAG_Documentation.html612
-rwxr-xr-xdoc/EasyTAG_Documentation_fr.html448
-rwxr-xr-xdoc/easytag.1.in63
-rwxr-xr-xdoc/id3/easy.html52
-rwxr-xr-xdoc/id3/id3v2.3.0.html2257
-rwxr-xr-xdoc/id3/id3v2_blocks.gifbin0 -> 13446 bytes
-rwxr-xr-xdoc/id3/mpeghdr-19991222.htm769
-rwxr-xr-xdoc/users_guide_french/USERS-GUIDE-11_fr1.html63
-rwxr-xr-xdoc/users_guide_french/USERS-GUIDE-11_fr2.html274
-rwxr-xr-xdoc/users_guide_french/USERS-GUIDE-11_fr3.html94
-rwxr-xr-xdoc/users_guide_french/USERS-GUIDE-11_fr4.html205
-rwxr-xr-xdoc/users_guide_french/USERS-GUIDE-11_fr5.html171
-rwxr-xr-xdoc/users_guide_french/USERS-GUIDE-11_fr6.html103
-rwxr-xr-xdoc/users_guide_french/USERS-GUIDE.css144
-rwxr-xr-xdoc/users_guide_french/images/bouton_arbo.pngbin0 -> 1294 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_img1.pngbin0 -> 668 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_img2.pngbin0 -> 953 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_img3.pngbin0 -> 567 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_scan1.pngbin0 -> 840 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_scan2.pngbin0 -> 972 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_scan3.pngbin0 -> 1249 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_scan4.pngbin0 -> 727 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_scan5.pngbin0 -> 817 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_scan6.pngbin0 -> 376 bytes
-rwxr-xr-xdoc/users_guide_french/images/bouton_scan7.pngbin0 -> 1079 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_boutons.pngbin0 -> 11893 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_cddb1.pngbin0 -> 77639 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_cddb2.pngbin0 -> 60110 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_fic_txt.pngbin0 -> 56485 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_fich.pngbin0 -> 27006 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_lect1.pngbin0 -> 14213 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_lect2.pngbin0 -> 15200 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_playlist.pngbin0 -> 60770 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_rech1.pngbin0 -> 23060 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_scan1.pngbin0 -> 75452 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_scan2.pngbin0 -> 62227 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_scan3.pngbin0 -> 49409 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_scan4.pngbin0 -> 68109 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_sel1.pngbin0 -> 78276 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_sel2.pngbin0 -> 63546 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_sel3.pngbin0 -> 16495 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_tag_bout1.pngbin0 -> 482 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_tag_bout2.pngbin0 -> 548 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_tag_gen.pngbin0 -> 32127 bytes
-rwxr-xr-xdoc/users_guide_french/images/fen_tag_img.pngbin0 -> 34700 bytes
-rwxr-xr-xdoc/users_guide_french/images/interface.pngbin0 -> 176980 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_context1.pngbin0 -> 31313 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_context2.pngbin0 -> 34953 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_context3.pngbin0 -> 31174 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_div.pngbin0 -> 19904 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_fic.pngbin0 -> 70225 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_pref.pngbin0 -> 75545 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_recherche.pngbin0 -> 29821 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_recherche1.pngbin0 -> 46836 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_recherche2.pngbin0 -> 49431 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_scan.pngbin0 -> 13305 bytes
-rwxr-xr-xdoc/users_guide_french/images/menu_sel.pngbin0 -> 42337 bytes
-rwxr-xr-xdoc/users_guide_french/images/sousmenu_fic1.pngbin0 -> 15212 bytes
-rwxr-xr-xdoc/users_guide_french/images/sousmenu_fic2.pngbin0 -> 19103 bytes
-rwxr-xr-xdoc/users_guide_german/bedienung1.htm54
-rwxr-xr-xdoc/users_guide_german/bedienung2.htm43
-rwxr-xr-xdoc/users_guide_german/easy.css10
-rwxr-xr-xdoc/users_guide_german/einleitung.htm61
-rwxr-xr-xdoc/users_guide_german/images/EasyTAG.pngbin0 -> 3254 bytes
-rwxr-xr-xdoc/users_guide_german/images/eigensch.pngbin0 -> 9765 bytes
-rwxr-xr-xdoc/users_guide_german/images/filelist.pngbin0 -> 4186 bytes
-rwxr-xr-xdoc/users_guide_german/images/playlist.pngbin0 -> 11629 bytes
-rwxr-xr-xdoc/users_guide_german/images/search.pngbin0 -> 9996 bytes
-rwxr-xr-xdoc/users_guide_german/images/t_easytag.jpgbin0 -> 13259 bytes
-rwxr-xr-xdoc/users_guide_german/images/treeview.pngbin0 -> 3737 bytes
-rwxr-xr-xdoc/vorbis/v-comment.html194
-rwxr-xr-xdoc/vorbis/white-ogg.pngbin0 -> 1181 bytes
-rw-r--r--easytag.desktop25
-rw-r--r--easytag.spec156
-rwxr-xr-xeasytag.spec.in156
-rwxr-xr-xeasytag.win32.setup.iss217
-rwxr-xr-xinstall-sh251
-rwxr-xr-xltmain.sh6911
-rwxr-xr-xmissing336
-rwxr-xr-xmkinstalldirs101
-rwxr-xr-xpixmaps/EasyTAG.icobin0 -> 4286 bytes
-rwxr-xr-xpixmaps/EasyTAG.xpm631
-rwxr-xr-xpixmaps/EasyTAG2.icobin0 -> 13094 bytes
-rwxr-xr-xpixmaps/EasyTAG2.xpm1318
-rwxr-xr-xpixmaps/EasyTAG_logo.xpm2300
-rwxr-xr-xpixmaps/add.xpm212
-rwxr-xr-xpixmaps/add_folder.xpm157
-rwxr-xr-xpixmaps/all_downcase.xpm25
-rwxr-xr-xpixmaps/all_uppercase.xpm25
-rwxr-xr-xpixmaps/artist_album.xpm329
-rwxr-xr-xpixmaps/black.xpm11
-rwxr-xr-xpixmaps/blackwhite.xpm12
-rwxr-xr-xpixmaps/closed_folder.xpm107
-rwxr-xr-xpixmaps/closed_folder_locked.xpm94
-rwxr-xr-xpixmaps/first_letter_uppercase.xpm25
-rwxr-xr-xpixmaps/first_letter_uppercase_word.xpm25
-rwxr-xr-xpixmaps/forbidden.xpm91
-rw-r--r--pixmaps/freedb.xpm86
-rw-r--r--pixmaps/gnudb.xpm91
-rwxr-xr-xpixmaps/grab.xpm64
-rwxr-xr-xpixmaps/invert_selection.xpm28
-rwxr-xr-xpixmaps/mask.xpm123
-rw-r--r--pixmaps/musicbrainz.xpm36
-rwxr-xr-xpixmaps/opened_folder.xpm145
-rwxr-xr-xpixmaps/parent_folder.xpm120
-rwxr-xr-xpixmaps/ram_disk.xpm29
-rwxr-xr-xpixmaps/read_only.xpm138
-rwxr-xr-xpixmaps/red_lines.xpm25
-rwxr-xr-xpixmaps/scan.xpm44
-rwxr-xr-xpixmaps/select_all.xpm27
-rwxr-xr-xpixmaps/sequence_track.xpm10
-rwxr-xr-xpixmaps/sound.xpm226
-rwxr-xr-xpixmaps/unselect_all.xpm27
-rw-r--r--po/ChangeLog10
-rw-r--r--po/Makefile.in.in196
-rw-r--r--po/Makefile.mingw68
-rwxr-xr-xpo/POTFILES.in29
-rw-r--r--po/bg.gmobin0 -> 78741 bytes
-rw-r--r--po/bg.po5045
-rw-r--r--po/cs.gmobin0 -> 81031 bytes
-rw-r--r--po/cs.po4941
-rw-r--r--po/da.gmobin0 -> 74923 bytes
-rw-r--r--po/da.po5149
-rw-r--r--po/de.gmobin0 -> 86868 bytes
-rw-r--r--po/de.po5891
-rw-r--r--po/easytag.pot4558
-rw-r--r--po/el.gmobin0 -> 81836 bytes
-rw-r--r--po/el.po5099
-rw-r--r--po/es.gmobin0 -> 80678 bytes
-rw-r--r--po/es.po5214
-rw-r--r--po/fr.gmobin0 -> 92414 bytes
-rw-r--r--po/fr.po5029
-rw-r--r--po/he.gmobin0 -> 67422 bytes
-rw-r--r--po/he.po4697
-rw-r--r--po/hu.gmobin0 -> 76033 bytes
-rw-r--r--po/hu.po5157
-rw-r--r--po/it.gmobin0 -> 86523 bytes
-rw-r--r--po/it.po5055
-rw-r--r--po/ja.gmobin0 -> 89080 bytes
-rw-r--r--po/ja.po4975
-rw-r--r--po/nl.gmobin0 -> 57654 bytes
-rw-r--r--po/nl.po5165
-rw-r--r--po/pl.gmobin0 -> 74236 bytes
-rw-r--r--po/pl.po5057
-rw-r--r--po/pt_BR.gmobin0 -> 86597 bytes
-rw-r--r--po/pt_BR.po5033
-rw-r--r--po/ro.gmobin0 -> 65495 bytes
-rw-r--r--po/ro.po5151
-rw-r--r--po/ru.gmobin0 -> 98439 bytes
-rw-r--r--po/ru.po5210
-rw-r--r--po/sv.gmobin0 -> 79444 bytes
-rw-r--r--po/sv.po5024
-rw-r--r--po/uk.gmobin0 -> 34683 bytes
-rw-r--r--po/uk.po5432
-rw-r--r--po/zh_CN.gmobin0 -> 31169 bytes
-rw-r--r--po/zh_CN.po4717
-rwxr-xr-xsrc/Makefile.am84
-rw-r--r--src/Makefile.in710
-rwxr-xr-xsrc/Makefile.mingw178
-rwxr-xr-xsrc/about.c536
-rwxr-xr-xsrc/about.h33
-rwxr-xr-xsrc/ape_tag.c342
-rwxr-xr-xsrc/ape_tag.h40
-rwxr-xr-xsrc/bar.c482
-rwxr-xr-xsrc/bar.h165
-rwxr-xr-xsrc/browser.c4084
-rwxr-xr-xsrc/browser.h178
-rwxr-xr-xsrc/cddb.c4105
-rw-r--r--src/cddb.h130
-rwxr-xr-xsrc/charset.c824
-rwxr-xr-xsrc/charset.h72
-rwxr-xr-xsrc/crc32.c130
-rwxr-xr-xsrc/crc32.h98
-rwxr-xr-xsrc/dlm.c90
-rwxr-xr-xsrc/dlm.h8
-rwxr-xr-xsrc/easytag.c4612
-rwxr-xr-xsrc/easytag.h206
-rwxr-xr-xsrc/et_core.c4835
-rwxr-xr-xsrc/et_core.h469
-rwxr-xr-xsrc/flac_header.c335
-rwxr-xr-xsrc/flac_header.h41
-rwxr-xr-xsrc/flac_tag.c1029
-rwxr-xr-xsrc/flac_tag.h43
-rwxr-xr-xsrc/genres.h195
-rwxr-xr-xsrc/id3_tag.c1362
-rwxr-xr-xsrc/id3_tag.h47
-rwxr-xr-xsrc/id3lib/Makefile.am14
-rw-r--r--src/id3lib/Makefile.in466
-rwxr-xr-xsrc/id3lib/c_wrapper.cpp141
-rwxr-xr-xsrc/id3lib/id3_bugfix.h56
-rwxr-xr-xsrc/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff39
-rwxr-xr-xsrc/id3v24_tag.c1499
-rwxr-xr-xsrc/libapetag/COPYING.LGPL510
-rwxr-xr-xsrc/libapetag/Makefile.am22
-rw-r--r--src/libapetag/Makefile.in471
-rwxr-xr-xsrc/libapetag/README.apetag12
-rwxr-xr-xsrc/libapetag/apetaglib.c1065
-rwxr-xr-xsrc/libapetag/apetaglib.h277
-rwxr-xr-xsrc/libapetag/id3v2_read.c385
-rwxr-xr-xsrc/libapetag/id3v2_read.h42
-rwxr-xr-xsrc/libapetag/info_mac.c151
-rwxr-xr-xsrc/libapetag/info_mac.h96
-rwxr-xr-xsrc/libapetag/info_mpc.c198
-rwxr-xr-xsrc/libapetag/info_mpc.h96
-rwxr-xr-xsrc/libapetag/is_tag.c175
-rwxr-xr-xsrc/libapetag/is_tag.h41
-rwxr-xr-xsrc/libmpg123/Makefile.am24
-rw-r--r--src/libmpg123/Makefile.in476
-rw-r--r--src/libmpg123/README35
-rwxr-xr-xsrc/libmpg123/common.c746
-rwxr-xr-xsrc/libmpg123/dxhead.c165
-rwxr-xr-xsrc/libmpg123/dxhead.h60
-rwxr-xr-xsrc/libmpg123/getbits.c126
-rwxr-xr-xsrc/libmpg123/getbits.h46
-rwxr-xr-xsrc/libmpg123/huffman.h329
-rwxr-xr-xsrc/libmpg123/l2tables.h997
-rwxr-xr-xsrc/libmpg123/layer1.c187
-rwxr-xr-xsrc/libmpg123/layer2.c336
-rwxr-xr-xsrc/libmpg123/layer3.c2100
-rwxr-xr-xsrc/libmpg123/mpg123.c172
-rwxr-xr-xsrc/libmpg123/mpg123.h144
-rwxr-xr-xsrc/log.c307
-rw-r--r--src/log.h42
-rwxr-xr-xsrc/misc.c3392
-rwxr-xr-xsrc/misc.h122
-rwxr-xr-xsrc/monkeyaudio_header.c122
-rwxr-xr-xsrc/monkeyaudio_header.h42
-rwxr-xr-xsrc/mp4_header.c315
-rwxr-xr-xsrc/mp4_header.h42
-rwxr-xr-xsrc/mp4_tag.c429
-rwxr-xr-xsrc/mp4_tag.h41
-rwxr-xr-xsrc/mpeg_header.c401
-rwxr-xr-xsrc/mpeg_header.h41
-rwxr-xr-xsrc/msgbox.c312
-rwxr-xr-xsrc/msgbox.h103
-rwxr-xr-xsrc/musepack_header.c125
-rwxr-xr-xsrc/musepack_header.h42
-rwxr-xr-xsrc/ogg_header.c293
-rwxr-xr-xsrc/ogg_header.h44
-rwxr-xr-xsrc/ogg_tag.c836
-rwxr-xr-xsrc/ogg_tag.h42
-rwxr-xr-xsrc/picture.c1174
-rwxr-xr-xsrc/picture.h125
-rwxr-xr-xsrc/prefs.c1857
-rwxr-xr-xsrc/prefs.h182
-rwxr-xr-xsrc/scan.c3455
-rwxr-xr-xsrc/scan.h89
-rwxr-xr-xsrc/setting.c1616
-rwxr-xr-xsrc/setting.h375
-rwxr-xr-xsrc/ui_manager.h325
-rwxr-xr-xsrc/vcedit.c629
-rwxr-xr-xsrc/vcedit.h75
-rwxr-xr-xsrc/wavpack_header.c114
-rwxr-xr-xsrc/wavpack_header.h41
-rwxr-xr-xsrc/wavpack_tag.c400
-rwxr-xr-xsrc/wavpack_tag.h42
-rwxr-xr-xsrc/win32/easytag.rc4
-rwxr-xr-xsrc/win32/resource.h1
-rwxr-xr-xsrc/win32/win32dep.c493
-rwxr-xr-xsrc/win32/win32dep.h84
-rwxr-xr-xsrc/win32/win_easytag.c557
293 files changed, 222675 insertions, 0 deletions
diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644
index 0000000..5fde45a
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,324 @@
+Notes on the Free Translation Project
+*************************************
+
+ Free software is going international! The Free Translation Project
+is a way to get maintainers of free software, translators, and users all
+together, so that will gradually become able to speak many languages.
+A few packages already provide translations for their messages.
+
+ If you found this `ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU `gettext' internally,
+itself available at your nearest GNU archive site. But you do _not_
+need to install GNU `gettext' prior to configuring, installing or using
+this package with messages translated.
+
+ Installers will find here some useful hints. These notes also
+explain how users should proceed for getting the programs to use the
+available translations. They tell how people wanting to contribute and
+work at translations should contact the appropriate team.
+
+ When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used. The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+Quick configuration advice
+==========================
+
+ If you want to exploit the full power of internationalization, you
+should configure it using
+
+ ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed. So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias, message inheritance, automatic
+charset conversion or plural form handling) as the implementation here.
+It is also not possible to offer this additional functionality on top
+of a `catgets' implementation. Future versions of GNU `gettext' will
+very likely convey even more functionality. So it might be a good idea
+to change to GNU `gettext' as soon as possible.
+
+ So you need _not_ provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+INSTALL Matters
+===============
+
+ Some packages are "localizable" when properly installed; the
+programs they contain can be made to speak your own native language.
+Most such packages use GNU `gettext'. Other packages have their own
+ways to internationalization, predating GNU `gettext'.
+
+ By default, this package will be installed to allow translation of
+messages. It will automatically detect whether the system already
+provides the GNU `gettext' functions. If not, the GNU `gettext' own
+library will be used. This library is wholly contained within this
+package, usually in the `intl/' subdirectory, so prior installation of
+the GNU `gettext' package is _not_ required. Installers may use
+special options at configuration time for changing the default
+behaviour. The commands:
+
+ ./configure --with-included-gettext
+ ./configure --disable-nls
+
+will respectively bypass any pre-existing `gettext' to use the
+internationalizing routines provided within this package, or else,
+_totally_ disable translation of messages.
+
+ When you already have GNU `gettext' installed on your system and run
+configure without an option for your new package, `configure' will
+probably detect the previously built and installed `libintl.a' file and
+will decide to use this. This might be not what is desirable. You
+should use the more recent version of the GNU `gettext' library. I.e.
+if the file `intl/VERSION' shows that the library which comes with this
+package is more recent, you should use
+
+ ./configure --with-included-gettext
+
+to prevent auto-detection.
+
+ The configuration process will not test for the `catgets' function
+and therefore it will not be used. The reason is that even an
+emulation of `gettext' on top of `catgets' could not provide all the
+extensions of the GNU `gettext' library.
+
+ Internationalized packages have usually many `po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language. Unless
+translations have been forbidden at `configure' time by using the
+`--disable-nls' switch, all available translations are installed
+together with the package. However, the environment variable `LINGUAS'
+may be set, prior to configuration, to limit the installed set.
+`LINGUAS' should then contain a space separated list of two-letter
+codes, stating which languages are allowed.
+
+Using This Package
+==================
+
+ As a user, if your language has been installed for this package, you
+only have to set the `LANG' environment variable to the appropriate
+`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
+and `CC' is an ISO 3166 two-letter country code. For example, let's
+suppose that you speak German and live in Germany. At the shell
+prompt, merely execute `setenv LANG de_DE' (in `csh'),
+`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
+This can be done from your `.login' or `.profile' file, once and for
+all.
+
+ You might think that the country code specification is redundant.
+But in fact, some languages have dialects in different countries. For
+example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
+country code serves to distinguish the dialects.
+
+ Not all programs have translations for all languages. By default, an
+English message is shown in place of a nonexistent translation. If you
+understand other languages, you can set up a priority list of languages.
+This is done through a different environment variable, called
+`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
+for the purpose of message handling, but you still need to have `LANG'
+set to the primary language; this is required by other parts of the
+system libraries. For example, some Swedish users who would rather
+read translations in German than English for when Swedish is not
+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+
+ In the `LANGUAGE' environment variable, but not in the `LANG'
+environment variable, `LL_CC' combinations can be abbreviated as `LL'
+to denote the language's main dialect. For example, `de' is equivalent
+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
+(Portuguese as spoken in Portugal) in this context.
+
+Translating Teams
+=================
+
+ For the Free Translation Project to be a success, we need interested
+people who like their own language and write it well, and who are also
+able to synergize with other translators speaking the same language.
+Each translation team has its own mailing list. The up-to-date list of
+teams can be found at the Free Translation Project's homepage,
+`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
+area.
+
+ If you'd like to volunteer to _work_ at translating messages, you
+should become a member of the translating team for your own language.
+The subscribing address is _not_ the same as the list itself, it has
+`-request' appended. For example, speakers of Swedish can send a
+message to `sv-request@li.org', having this message body:
+
+ subscribe
+
+ Keep in mind that team members are expected to participate
+_actively_ in translations, or at solving translational difficulties,
+rather than merely lurking around. If your team does not exist yet and
+you want to start one, or if you are unsure about what to do or how to
+get started, please write to `translation@iro.umontreal.ca' to reach the
+coordinator for all translator teams.
+
+ The English team is special. It works at improving and uniformizing
+the terminology in use. Proven linguistic skill are praised more than
+programming skill, here.
+
+Available Packages
+==================
+
+ Languages are not equally supported in all packages. The following
+matrix shows the current state of internationalization, as of September
+2001. The matrix shows, in regard of each package, for which languages
+PO files have been submitted to translation coordination, with a
+translation percentage of at least 50%.
+
+ Ready PO files bg cs da de el en eo es et fi fr gl he hr id it ja
+ +----------------------------------------------------+
+ a2ps | [] [] [] |
+ bash | [] [] [] [] |
+ bfd | |
+ binutils | [] |
+ bison | [] [] [] [] [] |
+ clisp | [] [] [] [] |
+ cpio | [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] [] |
+ enscript | [] [] |
+ error | [] [] |
+ fetchmail | |
+ fileutils | [] [] [] [] [] [] [] [] |
+ findutils | [] [] [] [] [] [] [] [] |
+ flex | [] [] [] |
+ freetype | |
+ gas | |
+ gawk | [] [] |
+ gcal | |
+ gcc | |
+ gettext | [] [] [] [] [] [] [] [] [] [] |
+ gnupg | [] [] [] [] [] [] [] |
+ gprof | |
+ grep | [] [] [] [] [] [] [] [] |
+ hello | [] [] [] [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] |
+ indent | [] [] [] [] [] |
+ jpilot | [] |
+ kbd | |
+ ld | [] |
+ libc | [] [] [] [] [] [] [] [] |
+ lilypond | [] |
+ lynx | [] [] [] [] |
+ m4 | [] [] [] [] [] [] [] [] |
+ make | [] [] [] [] [] [] |
+ mysecretdiary | [] |
+ nano | [] [] [] |
+ opcodes | |
+ parted | [] [] [] |
+ ptx | [] [] [] [] [] [] [] |
+ python | |
+ recode | [] [] [] [] [] [] [] [] [] |
+ sed | [] [] [] [] [] [] [] [] [] [] [] [] |
+ sh-utils | [] [] [] [] [] [] [] [] [] [] |
+ sharutils | [] [] [] [] [] [] [] [] |
+ sketch | |
+ soundtracker | [] [] [] |
+ sp | |
+ tar | [] [] [] [] [] [] [] [] |
+ texinfo | [] [] [] [] [] [] |
+ textutils | [] [] [] [] [] [] [] [] |
+ util-linux | [] [] |
+ wdiff | [] [] [] |
+ wget | [] [] [] [] [] [] [] [] [] [] |
+ +----------------------------------------------------+
+ bg cs da de el en eo es et fi fr gl he hr id it ja
+ 0 14 24 32 11 1 8 23 13 1 33 22 4 0 7 9 18
+
+ ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh
+ +----------------------------------------------------+
+ a2ps | [] [] [] | 6
+ bash | | 4
+ bfd | | 0
+ binutils | | 1
+ bison | [] | 6
+ clisp | [] | 5
+ cpio | [] [] [] [] [] | 10
+ diffutils | [] [] [] [] | 11
+ enscript | [] [] [] | 5
+ error | [] [] | 4
+ fetchmail | | 0
+ fileutils | [] [] [] [] [] [] [] [] [] | 17
+ findutils | [] [] [] [] [] [] [] [] | 16
+ flex | [] [] [] | 6
+ freetype | | 0
+ gas | | 0
+ gawk | [] | 3
+ gcal | | 0
+ gcc | | 0
+ gettext | [] [] [] [] [] [] [] [] | 18
+ gnupg | [] [] [] | 10
+ gprof | | 0
+ grep | [] [] [] [] | 12
+ hello | [] [] [] [] [] [] [] [] [] [] [] | 22
+ id-utils | [] [] [] | 6
+ indent | [] [] [] [] [] [] [] | 12
+ jpilot | | 1
+ kbd | [] | 1
+ ld | | 1
+ libc | [] [] [] [] [] [] [] [] | 16
+ lilypond | [] [] | 3
+ lynx | [] [] [] [] | 8
+ m4 | [] [] [] [] | 12
+ make | [] [] [] [] [] [] | 12
+ mysecretdiary | | 1
+ nano | [] | 4
+ opcodes | [] | 1
+ parted | [] [] | 5
+ ptx | [] [] [] [] [] [] [] [] | 15
+ python | | 0
+ recode | [] [] [] [] | 13
+ sed | [] [] [] [] [] [] [] | 19
+ sh-utils | [] [] [] [] [] [] [] [] [] [] [] | 21
+ sharutils | [] [] [] | 11
+ sketch | | 0
+ soundtracker | | 3
+ sp | | 0
+ tar | [] [] [] [] [] [] [] | 15
+ texinfo | [] | 7
+ textutils | [] [] [] [] [] [] [] [] | 16
+ util-linux | [] [] | 4
+ wdiff | [] [] [] [] | 7
+ wget | [] [] [] [] [] [] [] | 17
+ +----------------------------------------------------+
+ 33 teams ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh
+ 53 domains 9 1 6 20 0 6 17 1 13 25 10 11 23 21 2 2 387
+
+ Some counters in the preceding matrix are higher than the number of
+visible blocks let us expect. This is because a few extra PO files are
+used for implementing regional variants of languages, or language
+dialects.
+
+ For a PO file in the matrix above to be effective, the package to
+which it applies should also have been internationalized and
+distributed as such by its maintainer. There might be an observable
+lag between the mere existence a PO file and its wide availability in a
+distribution.
+
+ If September 2001 seems to be old, you may fetch a more recent copy
+of this `ABOUT-NLS' file on most GNU archive sites. The most
+up-to-date matrix with full percentage details can be found at
+`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
+
+Using `gettext' in new packages
+===============================
+
+ If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU `gettext' in your
+package. Of course you have to respect the GNU Library General Public
+License which covers the use of the GNU `gettext' library. This means
+in particular that even non-free programs can use `libintl' as a shared
+library, whereas only free software can use `libintl' as a static
+library or use modified versions of `libintl'.
+
+ Once the sources are changed appropriately and the setup can handle
+to use of `gettext' the only thing missing are the translations. The
+Free Translation Project is also available for packages which are not
+developed inside the GNU project. Therefore the information given above
+applies also for every other Free Software Project. Contact
+`translation@iro.umontreal.ca' to make the `.pot' files available to
+the translation teams.
+
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..eeb586b
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
new file mode 100755
index 0000000..4f204d1
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,1489 @@
+2.1.1 - July 4th, 2007 :
+========================
+ * Added support of ID3v2.4 tags by using library libid3tag (thanks to Alexey
+ Illarionov),
+ * Added Speex support (thanks to Pierre Dumuid) (without displaying bitrate
+ and duration),
+ * Added displaying of the number of pictures in the label of the tab.
+ * Fixed name of default server for the MusicBrainz FreeDB Gateway (thanks to
+ Steve Wyles),
+ * Fixed a problem when renaming file, by changing the case, that may delete
+ one file,
+ * Fixed a small mistake in the cddb query string (thanks to Steve Wyles),
+ * Fix for Ogg Vorbis files: read also the COMMENT tag field when it is used
+ instead of DESCRIPTION,
+ * Should be fixed a bug when refreshing the tree (not sure as it is
+ difficult to reproduce),
+ * In preferences window, the load on startup option and the default
+ directory setting were splitted,
+ * Added some improvments in the cddb window,
+ * Added time in log view,
+ * New Hebrew translation (thanks to Yuval Hager),
+ * Czech translation updated (thanks to Zbynek Mrkvicka),
+ * German translation updated (thanks to Götz Waschk),
+ * French translation updated.
+
+
+ Windows version :
+ * Fixed the default Russian encoding used under Windows (set to windows-1251
+ instead of KOI8-R)
+
+
+2.1 - May 7th, 2007 :
+=====================
+ * Fixed a crash in the Artist/Album view after saving files,
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * Brazilian Portuguese translation updated (thanks to doutor.zero),
+ * French translation updated.
+
+
+ Windows version :
+ * Fixed displaying of header informations of Ogg Vorbis file,
+ * Fixed crash when writing tag of Ogg Vorbis file.
+
+
+2.0.2 - May 1st, 2007 :
+=========================
+ * Fixed a runtime crash on Mac OS 10.x platform (thanks to Timothy Lee),
+ * When adding a picture to a file, the selection window starts on the same
+ directory of the file,
+ * Fixed command buttons not disabled when using the scanner command,
+ * Fixed a compilation bug under Solaris (thanks to Ben Taylor),
+ * Fixed sorting of filenames containing some particular UTF-8 characters,
+ * Fixed a crash when double clicking over the file list when no file loaded,
+ * Fixed a crash when deleting severals files,
+ * Some code improvments to increase speed,
+ * Czech translation updated (thanks to Zbynek Mrkvicka),
+ * German translation updated (thanks to Götz Waschk),
+ * French translation updated.
+
+
+2.0.1 - April 12th, 2007 :
+==========================
+ * Added WavPack support (thanks to Maarten Maathuis),
+ * Added a log area in the main window to avoid sending all messages to the
+ console,
+ * Added local access to the cddb search for the automatic mode,
+ * Fixed some bugs in the cddb window,
+ * Fixed the reloading of the current which was done two times when changing
+ state of the "Show hidden directories" checkbox,
+ * Fixed Glib warnings on startup,
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * Brazilian Portuguese translation updated (thanks to doutor.zero),
+ * German translation updated (thanks to Götz Waschk),
+ * French translation updated.
+
+
+ Windows version :
+ * Fixed a crash in the Cddb window for the manual search.
+
+
+2.0 - February 21th, 2007 :
+===========================
+ * Added buttons in toolbar to search files, to search in cddb and to write
+ playlist,
+ * Added in the cddb window the option to match lines with the Levenshtein
+ algorithm,
+ * Fixed crash when no audio player is defined and problem of checking in the
+ preferences window,
+ * Added automatically removing of APE tag in a MP3 file,
+ * Improved decoding of Arabic characters,
+ * Added French Users Guide (Than to Emmanuel Brun),
+ * Swedish translation updated (thanks to Anders Strömer),
+ * Brazilian Portuguese translation updated (thanks to doutor.zero),
+ * Czech translation updated (thanks to Zbynek Mrkvicka),
+ * German translation updated (thanks to Götz Waschk),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * French translation updated and typo fixed (thanks to Emmanuel Brun).
+
+
+ Windows version :
+ * Fixed autocompletion of year when a partial one was entered,
+ * Fixed crash when no audio player selected in the preferences window,
+ * Improved detection of the locale.
+
+
+1.99.13 - December 10th, 2006 :
+===============================
+ * The manual cddb search was reactivated by using now "gnudb.org" instead of
+ "freedb.org" as the last service didn't work,
+ * Faster access for the Cddb search,
+ * Added ability to use the MusicBrainz Cddb Gateway for the automatic search,
+ * The automatic search request the two servers : freedb.org and the
+ MusicBrainz Cddb Gateway,
+ * Fixed compilation for the new FLAC version 1.1.3 (thanks to Josh Coalson),
+ * Fixed reading of invalid UTF-8 strings in Ogg Vorbis and APE tags. We try
+ to convert it to the right encoding.
+ * Added French documentation (thanks to Emmanuel Brun),
+ * A new Chinese translation (thanks to Yang Jinsong),
+ * Hungarian translation updated (thanks to Mészáros Csaba),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * Swedish translation updated (thanks to Anders Strömer),
+ * German translation updated (thanks to Götz Waschk),
+ * French translation updated.
+
+ Windows version :
+ * Fixed problem when renaming file with the scanner if a field contained
+ the character '/' or '\',
+ * Fixed loading of a path ended by '\' in the browser entry,
+ * Fixed, missing the first file when lauching the player.
+
+
+1.99.12 - April 6th, 2006 :
+===========================
+ * New logo and icons (thanks to Der Humph),
+ * Added ability to display all albums of an artist in the 'Artist / Album'
+ view,
+ * Added detection of the bugged version of id3lib when writting ID3 tag to
+ Unicode to inform the user (a patch for id3lib is supplied in package
+ source),
+ * For Ogg files, the field DESCRIPTION is also used for the comment,
+ * Fixed stack corruption bugs in Fill Tag scanner (thanks to Mark Ferry),
+ * Fixed loading disk number for FLAC tag (thanks to Robert Norris),
+ * Fixed error that displays MP3 files in red when no tag is present,
+ * Fixed a crash in the CDDB window when getting tracks of a album,
+ * Fixed playlist name bug when creating it in the parent directory,
+ * Fixed manual CDDB search when using Squid (thanks to Christopher Oliver),
+ * Little fix for FLAC tags,
+ * Fixed various bugs,
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * Greek translation updated (thanks to Apollon Oikonomopoulos),
+ * Spanish translation updated (thanks to Francisco Javier F. Serrador),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * Czech translation updated (thanks to Zbynek Mrkvicka),
+ * Brazilian Portuguese translation updated (thanks to doutor.zero),
+ * Danish translation updated (thanks to Morten Brix Pedersen),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * Hungarian translation updated (thanks to Mészáros Csaba),
+ * German translation updated (thanks to Götz Waschk),
+ * French translation updated.
+
+ Windows version : (thanks to Michael Pujos)
+ * Fixed starting the program with a directory as parameter,
+ * Fixed problem in Fill Tag scanner with the first code,
+ * Available menu entry to "Open file(s) with...",
+ * Available menu entry to "Browse Directory with...",
+ * We recommend to remove your .easytag directory to reinitialize it : as
+ there are many changes when storing filenames or directories in
+ configuration files.
+
+
+1.99.11 - December 15th, 2005 :
+===============================
+ * Added ability to force saving tag of file even if no changes made (useful
+ to convert quickly tags),
+ * Added switch '--disable-mp3' to not compile the program with id3lib (will
+ allow in future version to choose between id3lib or taglib),
+ * Fixed problem of saving file order (bug introduced in version 1.99.10),
+ * French translation updated,
+ * Czech translation updated (thanks to Zbynek Mrkvicka),
+ * Hungarian translation updated (thanks to Mészáros Csaba),
+ * Spanish translation updated (thanks to Francisco Javier F. Serrador),
+ * German translation updated (thanks to Götz Waschk).
+
+ Windows version : (thanks to Michael Pujos)
+ * Fixed sorting of files,
+ * Paths and file names are displayed with character '\' instead of '/',
+ * Fixed renaming directories,
+ * Various fixes.
+
+
+1.99.10 - November 28th, 2005 :
+===============================
+ * Added port to Win32, to compile under MinGW (thanks to Michael Pujos),
+ * The preferences window was clean up : saving configuration changed (the
+ apply button was removed to not confuse user), position of main window,
+ scanner window and cddb are automatically saved (settings were removed
+ from the window),
+ * Added a protection against MP3 corrupted files (files containing only
+ zeroes) which cause a bug in id3lib and so freeze the program,
+ * Added some documentation,
+ * Changed some shortcuts in the menu by following the GNOME Human Interface
+ Guidelines 2.0,
+ * Added ability to load pictures contained in ID3v2 tag of a FLAC file,
+ * Fixed a crash that may occurs with the browser at startup,
+ * Fixed displaying of player in preferences window if it not exists, else
+ were can't save the settings,
+ * Fixed a crash that may occurs with message boxes (thanks to Falk Hueffner),
+ * Fixed some memory leaks,
+ * French translation updated,
+ * Czech translation updated (thanks to Zbynek Mrkvicka),
+ * Danish translation updated (thanks to Morten Brix Pedersen),
+ * Brazilian Portuguese translation updated (thanks to doutor.zero)
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.9 - November 3rd, 2005 :
+=============================
+ * Ability to read and write UTF-16 strings in ID3 tag (thanks to Javier
+ Kohen and Alexey Illarionov),
+ * Added options to save tags only in ISO-8859-1, or only in Unicode, or to
+ let the program to do the best choice,
+ * Added options to select a non-standard encoding for ISO-8859-1 fields in
+ the tag (very useful for example for Russian people), and can apply some
+ rules when writing tag if some characters can't be converted to this
+ non-standard encoding (activate the transliteration or silently discard
+ some characters),
+ * Changed way to read and write filenames : use the encoding specified into
+ environment variables of language (as LANG or LC_ALL), instead of the GTK2
+ environment variable G_FILENAME_ENCODING,
+ * Added options to apply some rules when writing filename if some characters
+ can't be converted to the system encoding (activate the transliteration or
+ silently discard some characters),
+ * Added ability to rename the directory in the browser with masks,
+ * Added an option to return focus to the 'Title' field when switching files
+ with the previous/next button/shortcut,
+ * Added a menu item for the action "Show hidden directories" in the browser,
+ * For Ogg Vorbis files, the file vcedit.h was updated from vorbis-tools-1.1.1,
+ * Some fixes and improvements in the CDDB windows,
+ * Improved compatibility for MP4/AAC files with MPEG4IP-1.2,
+ * Fixed a crash when reading FLAC files,
+ * Fixed : remove old directories when changing path of the file with the
+ 'Rename File' scanner,
+ * Fixed crash when numbering tracks sequentially after renaming files,
+ * Fixed problem when renaming file from one partition to an other one
+ (mananage the error "Invalid cross-device link"),
+ * Fixed : don't replace illegal characters when writing playlist content
+ from a pattern,
+ * Fixed writting of playlist to improve compatibility with some players
+ (uses DOS characters for a new line),
+ * Fixed conversion of the word 'I' with the 'first letter uppercase' scanner:
+ now it stays to upper case,
+ * Check if the program to launch to open files exists before to run it,
+ * A new bulgarian translation (thanks to Luchezar P. Petkov),
+ * French translation updated,
+ * Brazilian Portuguese translation updated (thanks to doutor.zero)
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.8 - August 31th, 2005 :
+============================
+ * Added MP4/AAC file and tag support (including pictures in tag) by using
+ MPEG4IP-1.3 (libmp4v2) (thanks to Michael Ihde and Stewart Whitman),
+ * Fixed hangs in the cddb lookups (thanks to Paul Giordano),
+ * Fixed problem when parsing markup in the 'Fill Tag' scanner preview,
+ * "Copyright" replaced by "License" in .spec file to allow to build the RPM
+ package with rpm-4.4.0 (thanks to Nathaniel Clark),
+ * French translation updated,
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.7 - July 11th, 2005 :
+==========================
+ * When adding a picture, it tries to identify the type (front or back cover)
+ from the filename,
+ * Fixed saving a path in the browser entry after entering a new path,
+ * Fixed bug on Ogg Vorbis and Flac files which saves severals times the
+ TRACKTOTAL field if tag contains an unsupported field (thanks to Alan
+ Swanson),
+ * Fixed some strings that don't appear translated,
+ * Fixed loading of picture in ID3 tag with file name containing characters
+ not in UTF-8,
+ * French translation updated,
+ * Czech translation updated (thanks to Zbynek Mrkvicka),
+ * Brazilian Portuguese translation updated (thanks to doutor.zero)
+ * Hungarian translation updated (thanks to Mészáros Csaba),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.6 - June 26th, 2005 :
+==========================
+ * Added scanner code '%d' for disc number,
+ * Configuration files updated to support ppc64 (thanks to Andreas Jochens),
+ * History list in comboboxes limited to 15 items,
+ * Fixed tab focus order in the 'Tag' area to avoid auto handling from gtk
+ (may changes on some systems),
+ * Fixed problem when writing playlist after renaming a directory,
+ * Fixed string encoding when writing playlist with the scanner,
+ * Fixed encoding of the default path to file chosen from preferences,
+ * Fixed problem of different file name sorting between file list and cddb
+ track name list,
+ * Fixed displaying number of files located in a directory with UTF-8 characters,
+ * Spanish translation updated (thanks to Francisco Javier F. Serrador),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.5 - June 6th, 2005 :
+=========================
+ * Fixed crash when deleting pictures to severals tags at same time (thanks
+ to Fredrik Noring),
+ * Fixed a little bug when writing album disc number,
+ * Fixed changing case of a directory in FAT partitions,
+ * Fixed crash when using scanner to uppercase first letter of each word,
+ * Added icons in popup menu of tag fields,
+ * A new Greek translation (thanks to Apollon Oikonomopoulos),
+ * A new Brazilian Portuguese translation (thanks to doutor.zero),
+ * French translation updated,
+ * Spanish translation updated (thanks to Francisco Javier F. Serrador),
+ * Czech translation updated (thanks to Zbynek Mrkvicka),
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.4 - May 1st, 2005 :
+========================
+ * Added ability to rename directories from the "Rename File" scanner (thanks
+ to Guilherme Destefani),
+ * Added new field for ID3v2 tag, Ogg Vorbis tag, FLAC tag and APE tag : disc
+ number,
+ * Added entry in file popup menu to run directly an automatic CDDB search
+ with the selected files,
+ * The CDDB protocol level had been changed to 6 to accept UTF-8 strings,
+ * Some fixes in the CDDB window and search file window,
+ * Added reading of FLAC Vorbis tag encoded into ISO-8859-1 character set,
+ * Added an option to preserve the modification time when saving the file,
+ * Improved settings of character set (for ID3 tags) to allow you to fix some
+ tags (for example if tags were written with UTF-8 instead of ISO-8859-15),
+ * Fixed wrong order of ID3 genres 'Swing' and 'Fast Fusion' (thanks to
+ Charles Shannon Hendrix),
+ * Fixed a bug into APE tag when deleting a field (thanks to Artur
+ Polaczynski),
+ * Fixed a bug in the Process fields scanner to remove spaces,
+ * Fixed for FLAC tag : keep the original vendor string while saving tag,
+ * Fixed displaying picture size when changing properties,
+ * Fixed lot of problems when handling UTF-8 filenames and strings,
+ * Fixed converting filenames to UTF-8 : if it fails try to convert from the
+ locale of your lang, else from ISO-8859-1,
+ * Fixed some memory leaks,
+ * French translation updated,
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * Romanian translation updated (thanks to George Pauliuc),
+ * Spanish translation updated (thanks to Fernando M. Bueno Moreno),
+ * Danish translation updated (thanks to Morten Brix Pedersen),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.3 - January 20th, 2005 :
+=============================
+ * Added searching (search window) in the new tag fields added in the
+ previous version 1.99.1 (Composer, ...),
+ * Fixed displaying ratio for pictures in ID3v2 tags,
+ * Fixed requested server when using a proxy for the Cddb automatic searching
+ (thanks to bjustus schwartz),
+ * Fixed a bug with APE tags (thanks to Daniel Drake and Artur Polaczynski),
+ * Removed association of the program with directories in easytag.desktop,
+ * Removed forcing ID3v2.3 tags to ISO-8859-1 at start (was boring for
+ russian people),
+ * Replaced icons for directories in the browser,
+ * French translation updated,
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.2 - November 30th, 2004 :
+==============================
+ * Added support for picture into ID3v2 tags (thanks to Fredrik Noring),
+ * Added, for Ogg Vorbis and FLAC Vorbis, use of field TRACKTOTAL for the
+ number of file (instead doing like '02/21' in field TRACKNUMBER),
+ * Added ability to authentifiate on the proxy with username and password,
+ * Some fixes for the process fields scanner (thanks to Baris Cicek),
+ * Changed order of buttons in the message box dialogs (button OK on the
+ right, ...),
+ * Fixed saving of FLAC Vorbis tag, which was truncated with UTF-8 strings,
+ * Fixed running program from console using a relative or absolute path,
+ * Fixed displaying of hidden directories in the browser,
+ * Fixed using the command line to run EasyTAG with an hidden directory as
+ parameter (for example "easytag .a_hidden_dir/"),
+ * Using previous version for requesting cddb server as the new one doesn't
+ work with a proxy,
+ * Fixed gtk2 dependencies in easytag.spec file (thanks to John Thacker),
+ * French translation updated,
+ * Danish translation updated (thanks to Morten Brix Pedersen),
+ * Dutch translation updated (thanks to Vincent van Adrighem),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * German translation updated (thanks to Götz Waschk).
+
+
+1.99.1 - October 25th, 2004 :
+=============================
+ * Added new fields for ID3v2 tag, Ogg Vorbis tag, FLAC tag and APE tag :
+ Composer, Original Artist/Performer, Copyright, URL and Encoder name,
+ * Added an option to select or not the corresponding file when selecting a
+ track name in the Cddb results,
+ * Added ability to search files in hidden directories,
+ * Added an option to not convert some words when using the scanner 'First
+ letter uppercase of each word' (theses words were skipped automatically in
+ the previous release),
+ * Fixed crash when switching between the Artist/Album view and the Browser
+ view (thanks to Daniel Drake), code was also improved,
+ * Fixed bug of loss of filename after opening the file with an external
+ program,
+ * Fixed displaying of small icons on small button as in Sequence Track
+ button,
+ * Fixed some memory leaks,
+ * French translation updated,
+ * German translation updated (thanks to Götz Waschk).
+
+ Note about numbering :
+ - 1.x : versions for GTK 1.2
+ - 2.x : versions for GTK 2.4 (1.99.x were pre releases)
+
+
+0.31_gtk2.4_pre3 - September 29th, 2004 :
+=========================================
+ * UTF-8 filename fixes (thanks to Daniel Drake),
+ * Added ability to request Cddb database automatically from the selected
+ files (computing the CddbId) (thanks to Justus Schwartz),
+ * When applying Cddb results to the files, the cddb genre is converted to an
+ ID3 genre,
+ * Added ability to convert filename extension to lower or upper case,
+ * Removed old function to keep the tree browser in memory (to not refresh it
+ automatically when collapsing and expanding a node),
+ * Fixed problem with UTF-8 strings and the process fields scanner (thanks to
+ Baris Cicek),
+ * Fixed ability to open a file with the popup menu entry "Open File(s)
+ with ...",
+ * Fixed displaying search result to red if matching
+ * Fixed displaying of the last selected file when selecting severals files,
+ * Fixed error messages in the Artist/Album view,
+ * French translation updated,
+ * Danish translation updated (thanks to Morten Brix Pedersen),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.31_gtk2.4_pre2 - September 11th, 2004 :
+=========================================
+ * Fixed the option to load a directory at start (it read the dir. even if
+ disactivated),
+ * Fixed the conversion of the red lines to black when file was saved (thanks
+ to John Spray),
+ * Fixed UTF-8 strings in easytag.desktop,
+ * Fixed 'configure' scripts as libvorbis is needed for libFLAC (thanks to
+ Daniel Drake),
+ * Fixed request to cddb for getting album tracks,
+ * Fixed the command to 'Reload Directory' which didn't work,
+ * The fields identifiers for Vorbis FLAC tag are written with upper letters
+ (ex: TITLE= instead of title=) as they are recommended by Vorbis standard,
+ * Various fixes,
+ * Some updates in the USERS-GUIDE files (thanks to David Greaves),
+ * Added an option to write or remove ID3 tag in FLAC files,
+ * Added the matching of cddb title against every file using the Levenshtein
+ algorithm (DLM : Damerau-Levenshtein Metric) (thanks to Santtu Lakkala),
+ * Added Mime type in desktop file to be visible in the right click menu for
+ directories (with GNOME-2.7) (thanks to Goetz Waschk),
+ * A new Danish translation (thanks to Morten Brix Pedersen),
+ * French translation updated,
+ * German translation updated (thanks to Götz Waschk).
+
+
+
+0.31_gtk2.4_pre1 - July 16th, 2004 :
+====================================
+ * Added an option to display the changed files to bold or red, like in the
+ gtk-1.2 version (thanks to Hagen Möbius),
+ * Fixed functions to process fields with UTF-8 strings, in the scanner
+ (thanks to Santtu Lakkala),
+ * Fixed renaming directories (thanks to Daniel Drake),
+ * Fixed sensivity of file and tag area, when changing directory,
+ * French translation updated,
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.31_gtk2.4_pre0 - July 3rd, 2004 :
+===================================
+ * GTK 2.4 port (thanks to Daniel Drake),
+ * Initial GTK2 porting work (thanks to Mihael Vrbanec).
+
+
+0.31 - May 29th, 2004 :
+=======================
+
+ * Tried to fixed the problem to get list of selected files after deleting of
+ files,
+ * Added ability to set/unset padding in ID3v2 tags,
+ * Added an option in the 'Playlist window' to write only the selected files
+ or directly all the files in the playlist,
+ * Polish translation updated (thanks to Artur Polaczynski),
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * Romanian translation updated (thanks to George Pauliuc),
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * Czech translation updated (thanks to Milan Siebenburger),
+ * Italian translation updated (thanks to Costantino Ceoldo).
+
+
+0.30.2 - March 25th, 2004 :
+===========================
+ * Some tabs in the preferences window have been reorganized,
+ * Fixed in configure script, the detection of libFLAC when using the switch
+ --disable-ogg,
+ * Fixed a wrong numbering in sub directories for the new track field button
+ (to set the number of files in the directory to the track field),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.30.1 - March 22th, 2004 :
+===========================
+ * Added support of FLAC Vorbis tag for FLAC files (if the file has no FLAC
+ vorbis file, it tries to read the ID3 tag) (thanks to Pavel Minayev),
+ * Added support of APE tag for OptimFROG files (.ofr, .ofs),
+ * Added ability to write by default ID3v2.3 tags to ISO-8859-1,
+ * Version of libFLAC (1.0.3) supplied in the package was removed,
+ * Added ability in the Process Fields scanner to convert a character by an
+ other on (patch from Ben Hearsum),
+ * Added ability to display the files by Artists and by Albums,
+ * Added ability to set independently the character conversion for the Tag
+ scanner and the Rename File scanner,
+ * Added a new button to set the number of files in the directory to the
+ track field,
+ * Added the entry "Tag selected files with this field" in the popup menu of
+ tag entries,
+ * Added a sub menu Scanner into popup menu over the file list,
+ * When resizing the main window, the tag area doesn't grow,
+ * The fields identifiers for Ogg Vorbis tag are written with upper letters
+ (ex: TITLE= instead of title=) as they are recommended by Vorbis standard,
+ * The CDDB results can be applied to the files selected in the main list,
+ * Fixed the execution of scanner, when using entries of the main menu
+ 'Scanner' in the menu bar,
+ * Fixed the CDDB server name, that wasn't saved in the configuration file,
+ * Fixed connection to CDDB under FreeBSD 5.1 (thanks to from Jan Kanty Palus),
+ * Fixed a bug when using "Repeat action for the rest of the files" when
+ deleting files,
+ * Fixed a bug that doesn't save the changed files, which aren't selected,
+ when changing of directory or exiting, even if you select the button "Yes"
+ in the dialog box,
+ * Fixed a bug when renaming files with the scanner and using the character
+ conversion (some spaces or underscores weren't replaced),
+ * Fixed some memory leaks (in browser, scanner, ...),
+ * Updated easytag.desktop and EasyTAG icon,
+ * French translation updated,
+ * Spanish translation updated (thanks to Fernando M. Bueno Moreno),
+ * Italian translation updated (thanks to Costantino Ceoldo),
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Ukrainian translation updated (thanks to Cawko Xakep).
+
+
+
+0.30 - September 8th, 2003 :
+============================
+ * Added an option to define the number of characters to use for the Track
+ field (see Misc tab),
+ * Added a button in the browser to jump to the parent directory,
+ * Pressing the Enter key in the tag entries set the focus to the next entry,
+ * The selection of files in the search window select also the corresponding
+ files in the main list,
+ * Added ability to select files of the same directory by double clicking
+ over the list, triple clicking select all files,
+ * The tree browser is sorted again after renaming a directory,
+ * The tree browser is sorted ignoring the word case,
+ * Content of the clipboard is automatically set in the 'Words' field of the
+ CDDB window and Search window, when opening them,
+ * Added button in the CDDB window to filtrate the 'red' lines in the albums
+ list,
+ * Added button in the CDDB window to select/unselect all lines and invert
+ the selection in the tracks album list,
+ * Fixed position in the list when selecting a file with the mouse (use of
+ the next or previous button select the wrong line),
+ * Fixed state of the Undo and Redo buttons when using the command to select
+ all files and invert the selection,
+ * Fixed tooltips message on the small buttons in the tag area,
+ * French translation updated,
+ * Czech translation updated (thanks to Milan Siebenburger),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.29 - September 1rst, 2003 :
+=============================
+ * When selecting a "changed" file, the background color is set to red (as
+ for the filename in the normal state),
+ * Fixed problem when selecting file after to have been sorted,
+ * Fixed problem to display file data, when selecting finally only one file
+ of the last selected files,
+ * Added ability to sort the CDDB results by track name or track number or
+ manually,
+ * Added detection and linking with iconv in the configure script to avoid
+ compilation error,
+ * When using buttons 'first', 'previous', 'next' and 'last', only one line
+ is selected,
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * Polish translation updated (thanks to Artur Polaczynski),
+ * Italian translation updated (thanks to Lorenzo Cappelletti),
+ * Romanian translation updated (thanks to George Pauliuc),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.28.1 - July 13th, 2003 :
+==========================
+ * Added the ability to perform an action only for the selected files : to
+ set a field to other files, to remove tags, to scan files, to save files,
+ to delete files, to use undo and redo, to open files with an external
+ program,
+ * Added ability to (un)select all files or to invert the selection,
+ * Changed writing of the genre in ID3v2.3 tags (according to id3v2.3.0
+ standard),
+ * Added displaying of number of files in the directory of the selected file
+ (in the browser area),
+ * Added preview for the Fill Tag scanner,
+ * Added buttons in the toolbar to select all files and invert the selection,
+ * Cleanup in the toolbar and in menus,
+ * Warning : Many shortcuts have been changed!,
+ * A lot of code cleanup,
+ * Fixed a small bug in the preview of the Rename File Scanner,
+ * Fixed problem of zombie process when terminating the audio player (thanks
+ to Tony Mancill),
+ * Fixed a bug when starting with some gtk themes as H2O (no window appeared)
+ (thanks to Tony Mancill),
+ * Fixed a bug when applying CDDB results to the files excepted for the
+ filename,
+ * French translation updated,
+ * Romanian translation updated (thanks to George Pauliuc),
+ * German translation updated (thanks to Götz Waschk),
+ * Russian translation updated (thanks to Andrey Astafiev).
+
+
+0.28 - May 31th, 2003 :
+=======================
+ * Added ability to add the CRC-32 value (for files with ID3 tags only) as
+ default comment when using scanner (thanks to Oliver),
+ * Added ability to write the playlist with DOS directory separator (thanks
+ to Oliver),
+ * Added ability to write the playlist in the parent directory (thanks to
+ Oliver),
+ * Fix for Ogg Vorbis files : skip the ID3v2 tag (if it exists) to open the
+ file without error,
+ * Bugfixes in the playlist generator (character replacement, ...),
+ * Fixed refreshing of file path when renaming a directory,
+ * Now the configuration and history files were created at the start up to
+ avoid error messages,
+ * Added some patch for NetBSD (thanks to Soren Jacobsen),
+ * French translation updated,
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.27.1 - April 20th, 2003 :
+===========================
+ * Added support of APE tag for MusePack and Monkey's Audio files (thanks to
+ Artur Polaczynski),
+ * Cast and pointers fixes for a clean compilation on 64bits platform (thanks
+ to Philipp Thomas),
+ * Fixed a bug when using "Open File With..." after renaming a file without
+ reloading the directory (it was using the old filename),
+ * Cleaning in the configure script (thanks to Philipp Thomas),
+ * When loading files with id3 tags, it checks if it has the versions of tags
+ specified in the preferences window,
+ * Genre in ID3v2 tag : use only the string for an unknowm id3v1 genre,
+ * Added the missing instruction "#include <errno.h>" in about.c that may
+ produce compilation problems,
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Polish translation updated (thanks to Artur Polaczynski),
+ * Czech translation updated (thanks to Milan Siebenburger),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.27 - February 2nd, 2003 :
+===========================
+ * Fixed an other filepointer leak when renaming file and directories (thanks
+ to Artur Polaczynski),
+ * Improved speed when applying a field to all other files, removing all tags
+ and scanning all files,
+ * Fixed problem with too long track name in CDDB albums,
+ * When getting files list of a cddb album, it tries to reconnect severals
+ times if the connection fails,
+ * Ability to select lines in the CDDB track name to load to the file list,
+ * Ability to run the scanner when loading filenames from a TXT file,
+ * Ability to run the scanner when loading fields from CDDB results,
+ * Ability to load CDDB results only for the selected lines,
+ * Ability to generate the playlist name from mask codes,
+ * Added tab in "About" window to display the ChangeLog,
+ * Fixed detection of version id3lib (due to an error in configure.in),
+ * Added german help documentation (thanks to Daniel Pichler),
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.26 - December 31th, 2002 :
+============================
+ * Fixed filepointers leaks when ID3v2 tag is missing for files using ID3
+ tags (thanks to Martijn van Buul),
+ * NetBSD patches from Thomas Klausner,
+ * Some bugfixes in the CDDB search,
+ * Updated character conversion for CD-Rom filesystems,
+ * Fixed a crash when applying the CDDB result to a list with less files,
+ * Fixed a memory bug when using the menu entry 'Reload the directory',
+ * Added a man page (thanks to George Pauliuc),
+ * When sorting the files, they are sorted also by ascending filename by
+ default,
+ * When tag entries have the focus, PageUp and PageDown keys select the
+ previous or the next file,
+ * Polish translation updated (thanks to Maciej Kasprzyk),
+ * Italian translation updated (thanks to Lorenzo Cappelletti),
+ * Ukrainian translation updated (thanks to Cawko Xakep).
+
+
+0.25 - November 11th, 2002 :
+============================
+ * Ability to stop the saving of all files,
+ * Improvement of the directory browser, when renaming a directory,
+ * Ability to set also the filename from CDDB results,
+ * Ability to search a word in the album list of the CDDB window,
+ * Don't loose unsupported tag items for the Ogg files,
+ * A new Romanian translation (thanks to George Pauliuc),
+ * French translation updated,
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * Spanish translation updated (thanks to Jaime Serrano Cartagena),
+ * Swedish translation updated (thanks to Patrik Israelsson),
+ * Hungarian translation updated (thanks to Nagy Boldizsar),
+ * Czech translation updated (thanks to Milan Siebenburger),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.24.1 - October 24th, 2002 :
+=============================
+ * Added CDDB support (from http protocol),
+ * New possibilities for sorting the list of files (type, size, duration,
+ birate, ...),
+ * Fixed to compile with flac-1.0.4 (thanks to Bastian Kleineidam and Götz
+ Waschk),
+ * Old versions of ID3v2 tags are automatically updated to ID3v2.3,
+ * Fixed renaming files or directories (the old method was better than the
+ newer one, with patch from Alan Swanson),
+ * Use of 'mkstemp' instead of 'mktemp',
+ * Various bugfixes,
+ * French translation updated,
+ * Polish translation updated (thanks to Maciej Kasprzyk),
+ * Ukrainian translation updated (thanks to Cawko Xakep),
+ * German translation updated (thanks to Götz Waschk),
+ * Hungarian translation updated (thanks to Nagy Boldizsar).
+
+
+0.24 - September 15th, 2002 :
+=============================
+ * Added ability to open a file with an external program,
+ * Added ability to use arguments when opening a directory or a file with an
+ external program (for example : 'xmms -e'),
+ * Some fixes when deleting files : the total size and total duration are
+ updated,
+ * Invalid characters are replaced when renaming the file from the scanner,
+ * Re-added preprocessor instructions in the file vcedit.h (forgotten when
+ updating this file from vorbis-tools-1.0),
+ * Fix for an unsupported ID3v2 tag : we get data of the ID3v1 tag (for
+ example: ID3v2.4 tag with id3lib-3.8.0),
+ * Added check of validity of playlist content mask,
+ * Fixed reading of informations of mpeg header, and calculation of song
+ time, with files containing an ID3v2 tag (patch from Artur Polaczynski),
+ * Fixed the popup menu in entries field : now we don't need to click two
+ times the left mouse button (patch from Maciej Kasprzyk),
+ * Corrections in text menu (thanks to Artur Polaczynski),
+ * Fixed renaming of directory,
+ * Number of files to save is displayed in the progress bar,
+ * Code clean up for scanners,
+ * Various fixes,
+ * Logo "updated",
+ * French translation updated,
+ * Polish translation updated (thanks to Maciej Kasprzyk),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * Italian translation updated (thanks to Lorenzo Cappelletti),
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * Czech translation updated (thanks to Milan Siebenburger),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.23.2 - September 1rst, 2002 :
+===============================
+ * Fixed a stupid bug in the rename file scanner : the file path was lost!
+
+
+0.23.1 - September 1rst, 2002 :
+===============================
+ * Playlist generator : ability to define the informations to write in the
+ playlist, by using masks (like in scanners),
+ * Fixed a bug with an empty field in Ogg Vorbis file,
+ * Fixed a bug into the scanner window, due to a missing initialisation,
+ * A fix for the undo function: now the history list has a logical behaviour,
+ * Patch from Götz Waschk to compile with the version of libFLAC installed on
+ your system if found,
+ * Added switch '--disable-flac' to force the compilation with files of
+ libFLAC supplied in the package,
+ * Improved speed of removing tags from the interface,
+ * Improved speed of the three scanners,
+ * Improved speed of searching and loading files when browsing directories,
+ * Process fields: the genre field was added,
+ * Number of files parsed is displayed in the progress bar,
+ * Updated vcedit.c from vorbis-tools-1.0 to remove all memory leaks when
+ processing Ogg Vorbis files,
+ * Binary linked with Vorbis libraries 1.0,
+ * A new Polish translation (thanks to Maciej Kasprzyk),
+ * French translation updated,
+ * Czech translation updated (thanks to Milan Siebenburger).
+
+
+0.23 - July 18th, 2002 :
+========================
+ * A fix for 'Makefile.am' in the FLAC directory : the file /usr/include/assert.h'
+ may be overwritten on some systems,
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.22 - July 17th, 2002 :
+========================
+ * Added an option to ignore the case when sorting the list,
+ * Italian translation updated (thanks to Lorenzo Cappelletti),
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Spanish translation updated (thanks to Jaime Serrano Cartagena),
+ * Czech translation updated (thanks to Milan Siebenburger),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.21.1 - July 9th, 2002 : (released for translators only)
+=========================
+ * id3_tag.c : replaced 'index_t' by 'size_t' to compile with
+ id3lib-3.8.0pre3.0,
+ * Configure scripts upgraded to autoconf 2.53, automake 1.6.1 and gettext
+ 0.10.40,
+ * The old command bar on the right (hidden by default) was removed,
+ * Fixed the behaviour of the tag entries when increasing the height of the
+ window,
+ * Added reading of header informations of FLAC files,
+ * Changed files during the loading are shown (spaces stripped for example),
+ * When saving all files, it displays only modified files to improve speed,
+ * Improvement when applying a field to all other files,
+ * Code cleanup for the undo functions,
+ * Fixed displaying of file sorting into the preferences window,
+ * Added ability to sort files by the other fields (as artist, ...),
+ * Added ability to open the scanner window on startup,
+ * Added scanner items in the main menu bar,
+ * French translation updated,
+ * Italian translation updated (thanks to Lorenzo Cappelletti).
+
+
+0.21 - May 26th, 2002 :
+=======================
+ * Fixed crash when deleting the filename,
+ * Fixed displaying of an error message for Ogg Vorbis files (when writting
+ tag),
+ * Scanner to Fill Tag : the problem to parse correctly filename like
+ '01 track name.mp3', with a mask like '%n %t' was fixed,
+ * Added shorcuts in the menu 'Misc.',
+ * Fix the popup menu of the genre entry which was opened when typing the
+ space bar,
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * Czech translation updated (thanks to Milan Siebenburger),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.20 - May 10th, 2002 :
+=======================
+ * Added ability to load the filenames from a TXT file,
+ * Added an option for the Ogg Vorbis files to not write the comment field to
+ the XMMS format (it appears as unknow for the others applications),
+ * Added options to select the style of the lines and expanders in the tree
+ browser,
+ * Ogg file : when reading the file, if the tag contains severals entries for
+ each field,
+ they are concatenated,
+ * Fixed properties of the file (owner and group) that may changes when
+ rewriting the file,
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Italian translation updated (thanks to Lorenzo Cappelletti),
+ * Czech translation updated (thanks to Milan Siebenburger),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.19 - April 22th, 2002 :
+=========================
+ * Added a protection to prevent corrupted fields doing segfaults into id3lib
+ (for mp3),
+ * Fixed a bug when deleting the last file of the file,
+ * Now the button used to apply the track number to all files, can only
+ remove the track fields or set the number of tracks (length of album) to
+ all files,
+ * Searching window : added a status bar,
+ * Searching window : keywords hightighted in the result list,
+ * A new Spanish translation (thanks to Jaime Serrano Cartagena),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * French translation updated,
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.18.1 - April 17th, 2002 :
+===========================
+ * Added a searching window for the files in the list,
+ * Added ability to choose the audio player, and to play only the selected
+ file,
+ * Fixed a bug into playlist writter (tag of the first file might be changed),
+ * Fixed problem with comboboxes which were not case sensitive,
+ * Fixed a bug of the ENABLE/DISABLE_OGG feature. The problem occured when
+ using the Tag Scanner with Ogg Vorbis files,
+ * Fixed a crash that may occurs when displaying the layer version,
+ * Fixed a bug that prevents to delete the first file of the list,
+ * Added song length (TLEN) into the ID3v2 tag,
+ * A new Czech translation (thanks to Milan Siebenburger),
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Italian translation updated (thanks to Lorenzo Cappelletti),
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.18 - April 4th, 2002 :
+========================
+ * Added ability to browse a directory with an external program,
+ * Fixed execution of XMMS: use of execvp intead of system, and load only the
+ list of files instead of the base directory,
+ * French translation updated,
+ * Ukrainian translation updated (thanks to Olexander Kunytsa),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.17.2 (devel) - March 24th, 2002 :
+===================================
+ * Ability to delete files,
+ * Improved sensivity of buttons for saving files,
+ * Fixed a bug into "Rename File" scanner with the trailing separator (patch
+ from Björn Olievier),
+ * Swedish translation updated (thanks to Patrik Israelsson),
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * Italian translation updated (thanks to Lorenzo Cappelletti).
+
+
+0.17.1 (devel) - March 12th, 2002 :
+===================================
+ * Code cleanup and better memory use (very big optimization due to some old
+ parts of code removed),
+ * Fixed syntax of static librairy libmpeg123 into Makefile.am (might cause
+ some problems),
+ * Ability to choose the genre freely, completion of text rewritten,
+ * Rename file scanner: doesn't write the 'trailing separator' of an empty
+ field,
+ * Dutch translation updated (thanks to Björn Olievier),
+ * Japanese translation updated (thanks to Takeshi Aihana).
+
+
+0.17 - March 5th, 2002 :
+========================
+ * Ability to disable the Ogg Vorbis file support with the switch
+ '--disable-ogg',
+ * Fixed problem with fields declared in the tag and containing no
+ information,
+ * Fixed coloration of changed files in the list,
+ * Added code %l into scanner corresponding to the field of the number of
+ tracks,
+ * German translation updated (thanks to Götz Waschk),
+ * Italian translation updated (thanks to Lorenzo Cappelletti).
+
+
+0.16.1 (devel) - February 21th, 2002 :
+======================================
+ * Ability to write playlist of files,
+ * Ability to write the track field with the number of tracks (ex: "10/21"),
+ * Name of files (in list) are refreshed when renamed,
+ * Testing: File in list colored in red when modified,
+ * Ability to select a file in the list by typing the first characters of the
+ file name (like the genre field),
+ * Fixed and improved parsing of header and VBR detection for MP3 and MP2
+ files,
+ * Fixed displaying of state of a file on read-only file system,
+ * French translation updated,
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.16 - February 3rd, 2002 :
+===========================
+ * Fixed compilation problem with id3lib-3.7.13,
+ * Fixed a bug when fields are empty into preview of filename scanner,
+ * Improved genre handling: ability to type the first characters of the word
+ to select it directly (example: 'tec' for 'Techno'),
+ * Added an option to expand the selected node in file browser,
+ * Added an option to convert the track field to two characters or to don't
+ change it,
+ * Added 'redo' buttons in command bar,
+ * Now, value 0 for the track is authorised (else causes problems with undo
+ function),
+ * French translation updated,
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * German translation updated (thanks to Götz Waschk).
+
+
+0.15.7 (devel) - January 20th, 2002 :
+=====================================
+ * Added "main" undo/redo (history list) to process all files,
+ * A fix for tag priority problem with id3lib-3.8.0 (patch from Holger
+ Schemel),
+ * Patch from Goetz Waschk for id3lib detection into configure.in,
+ * A fix for undo and redo function to check chronological order when aplying
+ them,
+ * The character '/' into filename is replaced automatically by '-' instead
+ of to don't accept them,
+ * Added an option to convert in filename other characters as '\', ':', ...,
+ which cause problem on windows filesystems,
+ * 'Rename file' scanner: remove the separator before a mask code if the
+ corresponding entry doesn't contain text,
+ * Preview of renaming file scanner, updated when changing the selected file,
+ * Changed some icons (taken from gtk 2),
+ * Italian translation updated (thanks to Lorenzo Cappelletti),
+ * German translation updated (thanks to Götz Waschk),
+ * Japanese translation updated (thanks to Takeshi Aihana).
+
+
+0.15.6 (devel) - December 24th, 2001 :
+======================================
+ * A fix for a BIG bug when writing ID3 tags: if the character set
+ translation isn't used, the tag is converted to UTF-8 by default!,
+ * A fix for "configure.in" to detect correctly libvorbis (thanks to Goetz
+ Waschk),
+ * A fix for "configure.in" to compile EasyTAG with id3lib 3.8.0pre2 and
+ 3.8.0pre2.1 (linked with zlib and libstdc++),
+ * A fix for character set identification for Ogg Vorbis files (patch from
+ Vaclav Slavik),
+ * A fix for path of files in list after renaming a parent directory,
+ * Tree browser: update subdirectories when collapsing and re-expanding a
+ node,
+ * Minor changes into the preference window,
+ * Removed some unused pixmaps,
+ * Russian translation updated (thanks to Andrey Astafiev).
+
+
+0.15.5 (devel) - December 18th, 2001 :
+======================================
+ * Rewritten core to support other file formats,
+ * Ability to write tag of Ogg Vorbis files (Ogg Vorbis tag) and file infos,
+ * Ability to write tag of FLAC files (ID3 tag),
+ * Ability to write tag of MP2 files (ID3 tag),
+ * File type and tag type displayed into label of each frame,
+ * Now, masks musn't be suffixed by an extension (users must remove .mp3 at
+ the end of each mask),
+ * Use of iconv for character set translations,
+ * Changed file names for 'scan tag' and 'rename file' lists (lists without
+ extension),
+ * Added a preview for the 'rename file' scanner,
+ * Ability to load a directory by command line (ex: "easytag /tmp/mp3" or
+ "easytag ." to load the current directory),
+ * Added an option to select the mode of sorting for the file list by default,
+ * Added individual undo/redo for each file, undo/redo for "all files" not
+ yet implemented,
+ * Added a button into tools bar to stop the recursive search of files,
+ * Changed displayed icon for read only file,
+ * Fixed sorting of files (ascending by filename) at loading of the list,
+ * Reading id3 tag with id3lib 3.7.x : added a fix for the year field with
+ garbage when the id3v1 tag was filled with spaces instead of zeroes (for
+ files containing only id3v1 tag),
+ * Added the missing "Rename directory" entry into Browser sub-menu,
+ * Fixed some memory leak (tag scanner and other location),
+ * The both scan buttons (in toolbar) have been duplicated into the scanner
+ window,
+ * Now, the yellow background of tooltips can be turn off by an option to
+ avoid problem with cyrrilic font.
+ * French translation updated,
+ * German translation updated (thanks to Philipp Thomas),
+ * Russian translation updated (thanks to Andrey Astafiev).
+
+
+0.15.1 (devel) - September 23th, 2001 :
+=======================================
+ * Now autoconf and automake are used to build the package (thanks to
+ Götz Waschk),
+ * Some language corrections (thanks to Colin Marquardt),
+ * Fixed bug when refreshing browser directory from popup menu,
+ * Ability to sort (ascending/descending) the list of files by track number,
+ * Ability to sort (ascending/descending) the list of files by date of
+ creation,
+ * A new Ukrainian translation (thanks to Olexander Kunytsa),
+ * Russian translation updated (thanks to Andrey Astafiev),
+ * German translation updated (thanks to Colin Marquardt),
+ * Dutch translation updated (thanks to Vincent van Adrighem).
+
+
+0.15 - July 17th, 2001 :
+========================
+ * All widgets usable by user were disabled when saving files,
+ * Can't press the Save button to rename the directory is no text typed
+ in the entry,
+ * Some code cleanup.
+
+
+0.14.4 (devel) - July 3rd, 2001 :
+=================================
+ * Added a browser list to wiew directly all mp3 files,
+ * Background color of list changes for each new directory,
+ * Default configuration modified,
+ * Makefile in po directory: display state of each po file when compiling
+ (thanks to Lorenzo Cappelletti),
+ * French translation updated,
+ * German translation updated (thanks to Colin Marquardt).
+
+
+0.14.3 (devel) - June 19th, 2001 :
+=================================
+ * Added a toolbar (use the option to hide the 'command area'),
+ * Ability to sort (ascending/descending) the list of files (useful
+ when changing file names),
+ * Keep permissions of the file when writing the tag (may change on NFS),
+ * Ability to rename a directory in the browser,
+ * Added 'Escape' event to all small windows to close them,
+ * Dutch translation updated (thanks to Vincent van Adrighem),
+ * Italian translation updated (thanks to Cappelletti Lorenzo).
+
+
+0.14.2 (devel) - May 22th, 2001 :
+=================================
+ * Process fields: manage also non english characters ('à', 'é', ...),
+ * Fixed segfault when refreshing the tree,
+ * A fix for the history list attached to the browser entry,
+ * Fixed renaming file when only case was changed,
+ * Fixed a problem with id3lib that doesn't strip trailing spaces of the
+ id3v1 comment in some cases,
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * Italian translation updated (thanks to Cappelletti Lorenzo).
+
+
+0.14.1 (devel) - May 1st, 2001 :
+================================
+ * Fixed a segfault when using translation table,
+ * Fixed problem with id3lib-3.7.13,
+ * Message boxes when saving files: now "Do the same for the rest" when
+ renaming files and when saving tags are separated,
+ * Fixed positioning of the small window with a stop button,
+ * Added a handle on the right of the browser frame to adjust the size
+ of tag entries,
+ * German translation updated (thanks to Colin Marquardt),
+ * French translation updated,
+ * Russian translation updated (thanks to Serg Zhumatiy).
+
+
+0.14 - April 16th, 2001 :
+=========================
+ * 'Process fields' scanner: ability to select fields to process,
+ * Buttons "Tag all files with ...": added messages when fields are empty,
+ * file 'id3tag.c' was missing in POTFILES (for translation),
+ * Japanese translation updated (thanks to Takeshi Aihana),
+ * Italian translation updated (thanks to Cappelletti Lorenzo),
+ * Dutch translation updated (thanks to Vincent van Adrighem),
+ * German translation updated (thanks to Colin Marquardt).
+
+
+0.13.7 (devel) - April 09th, 2001 :
+===================================
+ * Fixed: now it doesn't ask you for saving even if there is no change to save,
+ * Added a history list to comboboxes,
+ * Fixed saving all files: it didn't save changes in currently displayed file,
+ * Added icons in options window for selecting buttons to display (command bar),
+ * Wording fixes, spelling mistake fixes (thanks to Colin Marquardt),
+ * A new Japanese translation (thanks to Takeshi Aihana),
+ * German translation updated (thanks to Colin Marquardt),
+ * French translation updated,
+ * Some code cleanup.
+
+
+0.13.6 (devel) - March 24th, 2001 :
+===================================
+ * Fixed a typing error which can cause a segfault with the title entry,
+ * Display which version of id3lib is used. And display a warning message for
+ verion 3.7.13,
+ * Some spelling mistakes corrected (thanks to Cappelletti Lorenzo),
+ * Disable the 'file frame' and 'tag frame' when no MP3 have been found,
+ * Fix: after canceling a 'Save All Files' sequence, sensivity of command
+ buttons wasn't updated,
+ * Fix: Go button linked with the spinner button when hiding/showing this one,
+ * Dutch translation updated (thanks to Vincent van Adrighem),
+ * A new Italian translation (thanks to Cappelletti Lorenzo).
+
+
+0.13.5 (devel) - March 18th, 2001 :
+===================================
+ * Added ID3v2 support (need id3lib, see in http://id3lib.sourceforge.net),
+ * Ability to select tags to write (ID3v1.x, or ID3v2, or the both),
+ * A fix for the 'Save All Files' button that save only files placed after
+ the current position,
+ * The old and buggy tag scanner has been removed,
+ * Added an option to load or not the default path on startup,
+ * Renaming file: check if there is already a file with the new name, to
+ avoid loss of data (thanks to Cappelletti Lorenzo for warning me about
+ this bug),
+ * A fix when using the last defined genre,
+ * Track list : load at least 30 numbers,
+ * Sequence Tracks : restart numbering for each directory,
+ * Added thanks into the about window,
+ * New icons for the 'scan file' buttons,
+ * French translation updated,
+ * A new Hungarian translation (thanks to Szel Miklos).
+
+
+0.13 - December 25th, 2000 :
+============================
+ * A new button into the frame "ID3 Tag" to sequence the track numbers
+ (thanks to Charles Kerr for the patch),
+ * New windows for messages (improvements) which give more choices (ability
+ to cancel a file saving loop, ability to do the same action for all other
+ files),
+ * Added an option for the placement of message windows,
+ * Added a Go button next to the spinner button,
+ * French translation updated,
+ * Dutch translation updated (thanks to Vincent van Adrighem),
+ * German translation updated (thanks to Adrian Bunk),
+ * Russian translation updated (thanks to Serg Zhumatiy).
+
+
+0.12 - November 21th, 2000 :
+============================
+ * French translation updated,
+ * German translation updated (thanks to Adrian Bunk),
+ * Added some documentation: a guide for users,
+ * Doesn't block you, if the translation file is invalid and you don't use
+ it,
+ * Fixed problems when compiling with "-pedantic" option (without gettext),
+ * Added file 'mp3types.h' to avoid to including incorrectly 'easytag.h',
+ * Added an option to confirm before renaming file,
+ * Added an option into 'Option Window' to browse subdirectories,
+ * Removed the 'beep' when a file can't be opened.
+
+
+0.11 - October 26th, 2000 :
+===========================
+ * Fixed the loss of focus of an entry when using shortcut keys and reaching
+ an extremity of the list,
+ * French translation updated,
+ * Some code clean up,
+ * Added ability to select directly any MP3 file in the list (via a spinner
+ button).
+
+
+0.10.2 (devel) - October 8th, 2000 :
+====================================
+ * Added Swedish translation (thanks to Patrik Israelsson),
+ * French translation updated,
+ * Corrected some spelling mistakes... oops :),
+ * A fix for message dialogs with running gtk loops,
+ * A fix for a memory leak when reading directories,
+ * New options for 'Process Fields': keep only one space or underscore when
+ they're duplicated (ex: "My_-__string" => "My_-_string").
+
+
+0.10.1 (devel) - October 4th, 2000 :
+====================================
+ * Justify to left the text into file name entry, when text is longer than
+ the entry,
+ * Justify to right the text into path entry (frame browser), when text
+ is longer than the entry,
+ * Scanner options: radio group replaced by check buttons to allow to
+ disable conversion!,
+ * Tree Browser: don't freeze it when reading a directory (doesn't lost
+ focus),
+ * Added Dutch translation (thanks to Vincent van Adrighem),
+ * The path to the current displayed file is shown into the path_entry of
+ browser.
+
+
+0.10 - September 18th, 2000 :
+=============================
+ * French translation updated,
+ * Added a button to stop recursion when browsing directories recursively,
+ * Added recursion for the browser, to get mp3 files into sub-directories,
+ * Added an option to (des)activate recursion, into main menu and browser
+ popup menu.
+
+
+0.9.7 (devel) - September 4th, 2000 :
+=====================================
+ * Added ability to overwrite filled fields into tag when using the scanner,
+ * New options for 'Process Fields': remove and insert spaces,
+ * French translation updated,
+ * "First letter uppercase of each word": doesn't capitalize letter after an
+ apostrophe,
+ * Added an option to set a default comment text while scanning tag,
+ * Scanner for tag rewritten to allow text on the left of the mask,
+ * Functions to check masks fixed,
+ * Mask editor: new button to append defaults masks.
+
+
+0.9.6 (devel) - August 3rd, 2000 :
+===================================
+ * Added new entries into popup menu (over text entries) to 'process' field,
+ * New feature into Scanner window: ability to process fields (file name,
+ artist, title, album, comment).
+ You can convert letters into uppercase/downcase/...
+ * Improvements into masks editor: now you can select severals lines (to
+ duplicate, to move,...),
+ * The popup menu of the file entry is now also attached to other entries
+ (artist, album,...),
+ * Fixed a memory leak into file rename scanner.
+
+
+0.9.5 (devel) - July 27th, 2000 :
+=================================
+ * A fix for a bug into option menu of scanner window when using gettext.
+
+
+0.9.4 (devel) - July 26th, 2000 :
+=================================
+ * Added Russian translation, thanks to Sergey Zhumatiy,
+ * Added ability to rename file from tag using masks (as to scan tag),
+ * File is renamed using two stages to avoid problems if you change only the
+ case,
+ * Now it warns you before to change directory, if some files haven't been
+ saved (but a little bug will appear).
+
+
+0.9.3 (devel) - July 17th, 2000 :
+=================================
+ * French translation updated,
+ * Added buttons into command bar for recursive actions,
+ * Added options to select buttons to display into command bar,
+ * Added functions for charset translation tables (thanks to Sergey Zhumatiy),
+ * A fix for track number: it used 1 byte and was limited to 127 :(,
+ now the limit is 255 (1 byte :),
+ * A fix for the scanner: use the new name of file (if file has been renamed)
+ instead of name of file on hard disk,
+ * Added ability to save only the current tag, save recursively also,
+ * Added recursivity to scan tag in all files and undo,
+ * Refresh Tree: a fix to read again the refreshed directory, and a fix if
+ you doesn't selected a directory before refreshing,
+ * Added new entries in menu "File",
+ * Added recursivity to remove tag in all files.
+
+
+0.9 - July 9th, 2000 :
+======================
+ * French translation updated,
+ * Added new default masks for scanner,
+ * Bugfix while saving files,
+ * Added ability to determine scanner window position with regard to main
+ window,
+ * Names of size variables of main window have been changed to avoid conflict
+ with new variables, so your settings must to be reconfigurated,
+ * Added a popup menu in the entry of the file's name to convert '%20' and
+ '_' into spaces, or convert spaces into '_',
+ * Added ability to rename the mp3 file,
+ * Mask editor: doesn't save duplicate masks. If you save an empty mask list,
+ default masks will be loaded,
+ * A message box appears if you quit the program without to have saved all
+ files,
+ * Mask editor: doesn't save blank masks,
+ * Added a button to apply track to all tag (usually, you use a different
+ track number for each file, but it's usefull for delete this field for all
+ files),
+ * Fixed the list index after saving files,
+ * Added an option to set the scanner window on top (or not),
+ * Improvement of parsing date (for auto-completion) (for instance, if you
+ are in year 1995, and if you type 3 => 1993, if 6 => 1986, if 94 => 1994,
+ if 96 => 1896, and so on),
+ * Added German translation (thanks to Bastian Kleineidam
+ <calvin@users.sourceforge.net>).
+
+
+0.8 - June 22th, 2000 :
+=======================
+ * Implementation of functions for the masks editor,
+ * Location of main config file changed: config file <home>/.easytagrc has
+ moved to the file <home>/.easytag/easytagrc,
+ * French translation updated,
+ * Added a Close button into buttons builder,
+ * Added buttons to scanner window,
+ * Code clean up,
+ * Added new method for scanning tag. Now, you can define your mask or use a
+ predifined mask.
+ Thanks to Patrik <fix@lupus.herjedalen.se> for suggesting me this feature,
+ * Creation of a scan window to select/modifie mask to apply for auto tagging,
+ * rewritten function to find and parse mp3 header (now it shouldn't be
+ mistaken by garbage or corrupted header). Better parsing...
+
+
+0.7 - June 11th, 2000 :
+=======================
+ * Implemented undo feature,
+ * Added an option to (des)activate auto completion of date in tag area,
+ * Added icon in message dialogs,
+ * Fixed displaying of current position and list length while saving tags,
+ * An icon is displayed next filename entry if you haven't write access
+ permission for the file,
+ * Now, easytag logo (in about dialog) isn't include in binary,
+ * Fixed some small memory leak,
+ * Improvenment of mp3 header parsing and fixed a mistake into bitrate
+ calculation,
+ * Added ability to refresh the tree browser,
+ * Change mouse cursor when busy,
+ * Added new icon type in browser for unaccessible directories (no access
+ permissions).
+
+
+0.6 - June 4th, 2000 :
+======================
+ * an option to confirm write of tags,
+ * at start, the default directory is loaded when UI is entirely displayed,
+ * fixed a memory leak,
+ * layout of command buttons changed (nicer!),
+ * scan: an option to put text between parentheses to comment field,
+ * menu entry to run xmms,
+ * added a popup menu in browser area,
+ * display in the header the total size and total duration of mp3 in
+ directory,
+ * suppressed parameter for auto-shrinking main window,
+ * An option to adjust the main window default size,
+ * Ability to replace underscore character and %20 string by a space
+ character, in scan feature,
+ * New menu entries (can reload default directory),
+ * New option to show/hide command buttons.
+
+
+0.5 - May 21th, 2000 :
+======================
+ * release of EasyTAG-0.5,
+ * new menu entries (set current path, save config),
+ * status bar is now working...
+ * new option to show/hide header infos,
+ * can select directly first/last mp3 file (usefull when numerous),
+ * menu entry to load home dir and collapse(clean) whole tree,
+ * read informations of mp3 header (support of MPEG 1, 2, 2.5),
+ * display theses informations (version, layer, bitrate,...),
+ * code cleanup,
+ * bug fix,
+ * fix a bug that doesn't save track number in some case ?&#@!%$!@,
+ * patch 0.4a to correct this bug.
+
+
+0.4 - May 11th, 2000 :
+======================
+ * ability to choose genre type by typing the first character,
+ * added progress bar for displaying reading/saving activity,
+ * fix saving bug (it doesn't save all modified tags),
+ * you can type a path into the entry above the tree browser,
+ * check if the entered config is good,
+ * now, read only one time the default dir at start,
+ * Makefile and .spec files corrected,
+ * code cleanup,
+ * ask priority (tag id3 v1 or id3v1.1),
+ * new options.
+
+
+0.3 - May 7th, 2000 :
+=====================
+ * rewrite tag only if it was modified,
+ * toggle sensivity of menu items (as command buttons),
+ * mini icon modified,
+ * fix stupid bug that imposed current year on the entry when this
+ one was empty and lost focus :(,
+ * added a config file (to save default path to mp3,...),
+ * added an options window,
+ * added logo to about window.
+
+
+0.2 - May 5th, 2000 :
+=====================
+ * added menu bar,
+ * support of ID3v1.1 implemented,
+ * created easytag.specs file,
+ * created easytag.desktop file,
+ * improved makefile,
+ * added pre-version of scanning (auto completion of fields),
+ * added indicator of position in list of scanned files.
+
+
+0.1 - May 3rd, 2000 :
+=====================
+ * Added icon for the window when minimized,
+ * Added auto completion of date if a partial is entered,
+ * Added a directory selector (tree),
+ * Interface created.
diff --git a/INSTALL b/INSTALL
new file mode 100755
index 0000000..5e7ae07
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,163 @@
+################################
+# #
+# INSTALL file for EasyTAG 2.1 #
+# #
+################################
+Last update: 2007/05/07
+
+
+1. Requirements :
+=================
+
+ - glib version highter than 2.8.0 (http://www.gtk.org) (Recommended: gtk+-2.8.4)
+ - GTK version highter than 2.4.1 (http://www.gtk.org) (Recommended: gtk+-2.4.14)
+ - id3lib version highter than 3.7.12 (http://id3lib.sourceforge.net) (Recommended: id3lib-3.8.3)
+ - libogg and libvorbis (http://www.vorbis.com) (if not desactivated by './configure --disable-ogg')
+ - flac (http://flac.sourceforge.net) (if not desactivated by './configure --disable-flac')
+ - libmp4v2 (http://resare.com/libmp4v2/) (if not desactivated by './configure --disable-mp4') (Recommended: libmp4v2-1.5.0.1)
+ - wavpack (http://www.wavpack.com/) (if not desactivated by './configure --disable-wavpack')
+ - libc 6 (glibc 2.1) or better
+ - gettext (if not desactivated by './configure --disable-nls')
+
+
+2. Compilation Instructions :
+=============================
+
+ 2.1. Before to compile EasyTAG you need to install some librairies.
+
+ 2.1.1. To install id3lib :
+ - recompile sources of id3lib (id3lib-3.x.x.tar.gz) (Recommended),
+ - or install id3lib-3.x.x.i386.rpm and id3lib-devel-3.x.x.i386.rpm
+ then run the command 'ldconfig' to update shared library symlinks.
+
+ (Nota: to see if links have been updated, run the command 'ldconfig -p|grep libid3'
+ if all is ok, it'll return lines like this :
+ libid3.so (libc6) => /usr/lib/libid3.so
+ libid3-3.8.so.2 (libc6) => /usr/lib/libid3-3.8.so.2 )
+
+ 2.1.2. To install libogg and libvorbis (http://www.vorbis.com) :
+
+ Follow the same procedure as id3lib with the following packages :
+ - http://fatpipe.vorbis.com/files/1.0/unix/libogg-1.0.tar.gz
+ - http://fatpipe.vorbis.com/files/1.0/unix/libogg-1.0-1.i386.rpm
+ - http://fatpipe.vorbis.com/files/1.0/unix/libogg-devel-1.0-1.i386.rpm
+
+ - http://fatpipe.vorbis.com/files/1.0/unix/libvorbis-1.0.tar.gz
+ - http://fatpipe.vorbis.com/files/1.0/unix/libvorbis-1.0-1.i386.rpm
+ - http://fatpipe.vorbis.com/files/1.0/unix/libvorbis-devel-1.0-1.i386.rpm
+
+ 2.1.3. To install flac (http://flac.sourceforge.net) :
+
+ 2.1.4. To install faad2 (http://www.audiocoding.com/) :
+ Else, you can install MPEG4IP (http://mpeg4ip.net/)
+
+ 2.2. Unpack the sources of EasyTAG with
+
+ > tar xfvz easytag-x.y.z.tar.gz
+(x.y.z represents the version of package, for example : 0.27.1)
+
+ 2.3. Change into the new directory
+
+ > cd easytag-x.y.z/
+
+ 2.4. Compile and install the program
+
+ > ./configure
+ > make
+ # make install (You need root privileges)
+
+Notes :
+ - If you want to compile EasyTAG with gcc3.x, you MUST install a version of id3lib compiled
+with the same version of the compiler.
+ - If you have the both versions of gcc installed (2.9x and 3.x), use the command './configure CC=gcc3'
+for compiling with gcc3.
+
+You may now run the program by simply typing "easytag".
+(Of course the directory in which you installed it (usually /usr/local/bin) has to
+be in your PATH)
+
+
+
+3. RPM Building Instructions (RedHat 6.x 7.x) :
+===============================================
+
+If you prefer manipulate a RPM, you can build it with the following commands:
+
+ 3.1. Build the RPM
+
+ # rpm -tb easytag-x.y.z.tar.gz
+ or
+ # rpm --rebuild easytag-x.y.z.src.rpm
+ or
+ copy easytag-x.y.z.tar.gz into directory /usr/src/redhat/SOURCES, get easytag.spec
+ into tarball, and run :
+ # rpm -bb easytag.spec
+
+ 3.2. If succeed, you will found the rpm in /usr/src/redhat/RPM/i386/
+
+
+
+4. RPM Building Instructions (RedHat 8.x 9) :
+=============================================
+
+If you prefer manipulate a RPM, you can build it with the following commands:
+
+ 4.1. Build the RPM
+
+ # rpmbuild -tb easytag-x.y.z.tar.gz
+ or
+ # rpmbuild --rebuild easytag-x.y.z.src.rpm
+ or
+ copy easytag-x.y.z.tar.gz into directory /usr/src/redhat/SOURCES, get easytag.spec
+ into tarball, and run:
+ # rpmbuild -bb easytag.spec
+
+ 4.2. If succeed, you will found the rpm in /usr/src/redhat/RPM/i386/
+
+
+
+5. Addind a new translation file to EasyTAG :
+=============================================
+All catalogs are placed into po/ directory and are named as the following: fr.po for
+France, de.po for Germany, and so on.
+
+The catalogs which will be compiled with EasyTAG are set into configure.in file, into
+field ALL_LINGUAS. If you have created a new translation file for your location, and
+want to test it, add the corresponding code (xx for file xx.po) to this field.
+
+Then run the script: ./autogen.sh before to recompile program (see instructions of
+paragraph 2).
+
+
+6. Applying a patch :
+=====================
+
+ 6.1. Unpack the sources (see 2.2),
+ 6.2. Go into the directory where you unpack sources (the parent directory of easytag-x.y.z directory)
+ 6.3. Put the patch file in this directory
+ 6.4. Apply the patch:
+ for example:
+
+ > cat patch_easytag_027_027a.diff | patch -p0 (if patch file was named : patch_easytag_027_027a.diff)
+
+(Note: the pacth file (of above example) is a diff file made with command:
+ diff -ruN easytag-0.27/ easytag-0.27a/ > patch_easytag_027_027a.diff
+ in the directory where are locate easytag-0.4 and easytag-0.4a directories)
+ 6.5. Recompile program (see 2.3 + 2.4).
+
+
+7. Segfault occurs when running EasyTAG? :
+==========================================
+ The best way to allow us to fix the problem, is to send back a backtrace :
+
+ 7.1. Be sure that core files are availables
+ If 'ulimit -c' returns 0, then run the command 'ulimit -c unlimited'
+ 7.2. Get the backtrace with 'gdb easytag core' (note that on some systems, the
+ core file is suffixed by the pid. So use 'core._pid_number_' instead of only
+ 'core').
+
+ > gdb easytag core._pid_number_
+ gdb> bt
+ gdb> ...
+ gdb> l
+ gdb> ...
diff --git a/Makefile.am b/Makefile.am
new file mode 100755
index 0000000..8bf598d
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,158 @@
+AUTOMAKE_OPTIONS=dist-bzip2
+
+SUBDIRS=src po
+
+gnome_menudir=$(datadir)/applications
+gnome_menu_DATA=easytag.desktop
+
+textdir = $(datadir)/$(PACKAGE)
+text_DATA = ChangeLog
+
+man_MANS = doc/easytag.1
+
+BITMAPS = \
+ pixmaps/add.xpm \
+ pixmaps/add_folder.xpm \
+ pixmaps/all_downcase.xpm \
+ pixmaps/all_uppercase.xpm \
+ pixmaps/artist_album.xpm \
+ pixmaps/black.xpm \
+ pixmaps/blackwhite.xpm \
+ pixmaps/closed_folder_locked.xpm \
+ pixmaps/closed_folder.xpm \
+ pixmaps/EasyTAG.ico \
+ pixmaps/EasyTAG2.ico \
+ pixmaps/EasyTAG.xpm \
+ pixmaps/EasyTAG2.xpm \
+ pixmaps/first_letter_uppercase.xpm \
+ pixmaps/first_letter_uppercase_word.xpm \
+ pixmaps/forbidden.xpm \
+ pixmaps/freedb.xpm \
+ pixmaps/gnudb.xpm \
+ pixmaps/grab.xpm \
+ pixmaps/invert_selection.xpm \
+ pixmaps/mask.xpm \
+ pixmaps/musicbrainz.xpm \
+ pixmaps/opened_folder.xpm \
+ pixmaps/parent_folder.xpm \
+ pixmaps/ram_disk.xpm \
+ pixmaps/read_only.xpm \
+ pixmaps/red_lines.xpm \
+ pixmaps/scan.xpm \
+ pixmaps/select_all.xpm \
+ pixmaps/sequence_track.xpm \
+ pixmaps/sound.xpm \
+ pixmaps/unselect_all.xpm
+
+pixmapdir = $(datadir)/$(PACKAGE)
+pixmap_DATA = pixmaps/EasyTAG_logo.xpm
+
+icondir = $(datadir)/pixmaps
+icon_DATA = pixmaps/EasyTAG.xpm
+
+
+EXTRA_DIST= \
+ $(gnome_menu_DATA) \
+ $(text_DATA) \
+ $(BITMAPS) \
+ $(pixmap_DATA) \
+ $(icon_DATA) \
+ \
+ autogen.sh \
+ easytag.spec \
+ easytag.win32.setup.iss \
+ COPYING \
+ INSTALL \
+ README \
+ THANKS \
+ TODO \
+ USERS-GUIDE \
+ \
+ debian/changelog \
+ debian/compat \
+ debian/control \
+ debian/copyright \
+ debian/dirs \
+ debian/docs \
+ debian/easytag.1 \
+ debian/easytag.xpm \
+ debian/menu \
+ debian/rules \
+ \
+ config.h.mingw \
+ Makefile.mingw \
+ README_win32.txt \
+ po/Makefile.mingw \
+ \
+ doc/easytag.1.in \
+ doc/EasyTAG_Documentation.html \
+ doc/EasyTAG_Documentation_fr.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr1.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr2.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr3.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr4.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr5.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr6.html \
+ doc/users_guide_french/USERS-GUIDE.css \
+ doc/users_guide_french/images/bouton_arbo.png \
+ doc/users_guide_french/images/bouton_img1.png \
+ doc/users_guide_french/images/bouton_img2.png \
+ doc/users_guide_french/images/bouton_img3.png \
+ doc/users_guide_french/images/bouton_scan1.png \
+ doc/users_guide_french/images/bouton_scan2.png \
+ doc/users_guide_french/images/bouton_scan3.png \
+ doc/users_guide_french/images/bouton_scan4.png \
+ doc/users_guide_french/images/bouton_scan5.png \
+ doc/users_guide_french/images/bouton_scan6.png \
+ doc/users_guide_french/images/bouton_scan7.png \
+ doc/users_guide_french/images/fen_boutons.png \
+ doc/users_guide_french/images/fen_cddb1.png \
+ doc/users_guide_french/images/fen_cddb2.png \
+ doc/users_guide_french/images/fen_fic_txt.png \
+ doc/users_guide_french/images/fen_fich.png \
+ doc/users_guide_french/images/fen_lect1.png \
+ doc/users_guide_french/images/fen_lect2.png \
+ doc/users_guide_french/images/fen_playlist.png \
+ doc/users_guide_french/images/fen_rech1.png \
+ doc/users_guide_french/images/fen_scan1.png \
+ doc/users_guide_french/images/fen_scan2.png \
+ doc/users_guide_french/images/fen_scan3.png \
+ doc/users_guide_french/images/fen_scan4.png \
+ doc/users_guide_french/images/fen_sel1.png \
+ doc/users_guide_french/images/fen_sel2.png \
+ doc/users_guide_french/images/fen_sel3.png \
+ doc/users_guide_french/images/fen_tag_bout1.png \
+ doc/users_guide_french/images/fen_tag_bout2.png \
+ doc/users_guide_french/images/fen_tag_gen.png \
+ doc/users_guide_french/images/fen_tag_img.png \
+ doc/users_guide_french/images/interface.png \
+ doc/users_guide_french/images/menu_context1.png \
+ doc/users_guide_french/images/menu_context2.png \
+ doc/users_guide_french/images/menu_context3.png \
+ doc/users_guide_french/images/menu_div.png \
+ doc/users_guide_french/images/menu_fic.png \
+ doc/users_guide_french/images/menu_pref.png \
+ doc/users_guide_french/images/menu_recherche1.png \
+ doc/users_guide_french/images/menu_recherche2.png \
+ doc/users_guide_french/images/menu_recherche.png \
+ doc/users_guide_french/images/menu_scan.png \
+ doc/users_guide_french/images/menu_sel.png \
+ doc/users_guide_french/images/sousmenu_fic1.png \
+ doc/users_guide_french/images/sousmenu_fic2.png \
+ doc/users_guide_german/bedienung1.htm \
+ doc/users_guide_german/bedienung2.htm \
+ doc/users_guide_german/easy.css \
+ doc/users_guide_german/einleitung.htm\
+ doc/users_guide_german/images/EasyTAG.png \
+ doc/users_guide_german/images/filelist.png \
+ doc/users_guide_german/images/playlist.png \
+ doc/users_guide_german/images/t_easytag.jpg \
+ doc/users_guide_german/images/eigensch.png \
+ doc/users_guide_german/images/search.png \
+ doc/users_guide_german/images/treeview.png \
+ doc/id3/easy.html \
+ doc/id3/id3v2.3.0.html \
+ doc/id3/id3v2_blocks.gif \
+ doc/id3/mpeghdr-19991222.htm \
+ doc/vorbis/v-comment.html \
+ doc/vorbis/white-ogg.png
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..3bf4312
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,942 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(srcdir)/easytag.spec.in $(top_srcdir)/configure \
+ $(top_srcdir)/doc/easytag.1.in ABOUT-NLS COPYING ChangeLog \
+ INSTALL THANKS TODO acconfig.h config.guess config.sub depcomp \
+ install-sh ltmain.sh missing mkinstalldirs
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = easytag.spec doc/easytag.1
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(gnome_menudir)" \
+ "$(DESTDIR)$(icondir)" "$(DESTDIR)$(pixmapdir)" \
+ "$(DESTDIR)$(textdir)"
+NROFF = nroff
+MANS = $(man_MANS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+gnome_menuDATA_INSTALL = $(INSTALL_DATA)
+iconDATA_INSTALL = $(INSTALL_DATA)
+pixmapDATA_INSTALL = $(INSTALL_DATA)
+textDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(gnome_menu_DATA) $(icon_DATA) $(pixmap_DATA) $(text_DATA)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
+WAVPACK_LIBS = @WAVPACK_LIBS@
+XGETTEXT = @XGETTEXT@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AUTOMAKE_OPTIONS = dist-bzip2
+SUBDIRS = src po
+gnome_menudir = $(datadir)/applications
+gnome_menu_DATA = easytag.desktop
+textdir = $(datadir)/$(PACKAGE)
+text_DATA = ChangeLog
+man_MANS = doc/easytag.1
+BITMAPS = \
+ pixmaps/add.xpm \
+ pixmaps/add_folder.xpm \
+ pixmaps/all_downcase.xpm \
+ pixmaps/all_uppercase.xpm \
+ pixmaps/artist_album.xpm \
+ pixmaps/black.xpm \
+ pixmaps/blackwhite.xpm \
+ pixmaps/closed_folder_locked.xpm \
+ pixmaps/closed_folder.xpm \
+ pixmaps/EasyTAG.ico \
+ pixmaps/EasyTAG2.ico \
+ pixmaps/EasyTAG.xpm \
+ pixmaps/EasyTAG2.xpm \
+ pixmaps/first_letter_uppercase.xpm \
+ pixmaps/first_letter_uppercase_word.xpm \
+ pixmaps/forbidden.xpm \
+ pixmaps/freedb.xpm \
+ pixmaps/gnudb.xpm \
+ pixmaps/grab.xpm \
+ pixmaps/invert_selection.xpm \
+ pixmaps/mask.xpm \
+ pixmaps/musicbrainz.xpm \
+ pixmaps/opened_folder.xpm \
+ pixmaps/parent_folder.xpm \
+ pixmaps/ram_disk.xpm \
+ pixmaps/read_only.xpm \
+ pixmaps/red_lines.xpm \
+ pixmaps/scan.xpm \
+ pixmaps/select_all.xpm \
+ pixmaps/sequence_track.xpm \
+ pixmaps/sound.xpm \
+ pixmaps/unselect_all.xpm
+
+pixmapdir = $(datadir)/$(PACKAGE)
+pixmap_DATA = pixmaps/EasyTAG_logo.xpm
+icondir = $(datadir)/pixmaps
+icon_DATA = pixmaps/EasyTAG.xpm
+EXTRA_DIST = \
+ $(gnome_menu_DATA) \
+ $(text_DATA) \
+ $(BITMAPS) \
+ $(pixmap_DATA) \
+ $(icon_DATA) \
+ \
+ autogen.sh \
+ easytag.spec \
+ easytag.win32.setup.iss \
+ COPYING \
+ INSTALL \
+ README \
+ THANKS \
+ TODO \
+ USERS-GUIDE \
+ \
+ debian/changelog \
+ debian/compat \
+ debian/control \
+ debian/copyright \
+ debian/dirs \
+ debian/docs \
+ debian/easytag.1 \
+ debian/easytag.xpm \
+ debian/menu \
+ debian/rules \
+ \
+ config.h.mingw \
+ Makefile.mingw \
+ README_win32.txt \
+ po/Makefile.mingw \
+ \
+ doc/easytag.1.in \
+ doc/EasyTAG_Documentation.html \
+ doc/EasyTAG_Documentation_fr.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr1.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr2.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr3.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr4.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr5.html \
+ doc/users_guide_french/USERS-GUIDE-11_fr6.html \
+ doc/users_guide_french/USERS-GUIDE.css \
+ doc/users_guide_french/images/bouton_arbo.png \
+ doc/users_guide_french/images/bouton_img1.png \
+ doc/users_guide_french/images/bouton_img2.png \
+ doc/users_guide_french/images/bouton_img3.png \
+ doc/users_guide_french/images/bouton_scan1.png \
+ doc/users_guide_french/images/bouton_scan2.png \
+ doc/users_guide_french/images/bouton_scan3.png \
+ doc/users_guide_french/images/bouton_scan4.png \
+ doc/users_guide_french/images/bouton_scan5.png \
+ doc/users_guide_french/images/bouton_scan6.png \
+ doc/users_guide_french/images/bouton_scan7.png \
+ doc/users_guide_french/images/fen_boutons.png \
+ doc/users_guide_french/images/fen_cddb1.png \
+ doc/users_guide_french/images/fen_cddb2.png \
+ doc/users_guide_french/images/fen_fic_txt.png \
+ doc/users_guide_french/images/fen_fich.png \
+ doc/users_guide_french/images/fen_lect1.png \
+ doc/users_guide_french/images/fen_lect2.png \
+ doc/users_guide_french/images/fen_playlist.png \
+ doc/users_guide_french/images/fen_rech1.png \
+ doc/users_guide_french/images/fen_scan1.png \
+ doc/users_guide_french/images/fen_scan2.png \
+ doc/users_guide_french/images/fen_scan3.png \
+ doc/users_guide_french/images/fen_scan4.png \
+ doc/users_guide_french/images/fen_sel1.png \
+ doc/users_guide_french/images/fen_sel2.png \
+ doc/users_guide_french/images/fen_sel3.png \
+ doc/users_guide_french/images/fen_tag_bout1.png \
+ doc/users_guide_french/images/fen_tag_bout2.png \
+ doc/users_guide_french/images/fen_tag_gen.png \
+ doc/users_guide_french/images/fen_tag_img.png \
+ doc/users_guide_french/images/interface.png \
+ doc/users_guide_french/images/menu_context1.png \
+ doc/users_guide_french/images/menu_context2.png \
+ doc/users_guide_french/images/menu_context3.png \
+ doc/users_guide_french/images/menu_div.png \
+ doc/users_guide_french/images/menu_fic.png \
+ doc/users_guide_french/images/menu_pref.png \
+ doc/users_guide_french/images/menu_recherche1.png \
+ doc/users_guide_french/images/menu_recherche2.png \
+ doc/users_guide_french/images/menu_recherche.png \
+ doc/users_guide_french/images/menu_scan.png \
+ doc/users_guide_french/images/menu_sel.png \
+ doc/users_guide_french/images/sousmenu_fic1.png \
+ doc/users_guide_french/images/sousmenu_fic2.png \
+ doc/users_guide_german/bedienung1.htm \
+ doc/users_guide_german/bedienung2.htm \
+ doc/users_guide_german/easy.css \
+ doc/users_guide_german/einleitung.htm\
+ doc/users_guide_german/images/EasyTAG.png \
+ doc/users_guide_german/images/filelist.png \
+ doc/users_guide_german/images/playlist.png \
+ doc/users_guide_german/images/t_easytag.jpg \
+ doc/users_guide_german/images/eigensch.png \
+ doc/users_guide_german/images/search.png \
+ doc/users_guide_german/images/treeview.png \
+ doc/id3/easy.html \
+ doc/id3/id3v2.3.0.html \
+ doc/id3/id3v2_blocks.gif \
+ doc/id3/mpeghdr-19991222.htm \
+ doc/vorbis/v-comment.html \
+ doc/vorbis/white-ogg.png
+
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
+ cd $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(top_srcdir)/acconfig.h
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+easytag.spec: $(top_builddir)/config.status $(srcdir)/easytag.spec.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+doc/easytag.1: $(top_builddir)/config.status $(top_srcdir)/doc/easytag.1.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+install-gnome_menuDATA: $(gnome_menu_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(gnome_menudir)" || $(mkdir_p) "$(DESTDIR)$(gnome_menudir)"
+ @list='$(gnome_menu_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(gnome_menuDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gnome_menudir)/$$f'"; \
+ $(gnome_menuDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gnome_menudir)/$$f"; \
+ done
+
+uninstall-gnome_menuDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(gnome_menu_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(gnome_menudir)/$$f'"; \
+ rm -f "$(DESTDIR)$(gnome_menudir)/$$f"; \
+ done
+install-iconDATA: $(icon_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(icondir)" || $(mkdir_p) "$(DESTDIR)$(icondir)"
+ @list='$(icon_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(iconDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(icondir)/$$f'"; \
+ $(iconDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(icondir)/$$f"; \
+ done
+
+uninstall-iconDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(icon_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(icondir)/$$f'"; \
+ rm -f "$(DESTDIR)$(icondir)/$$f"; \
+ done
+install-pixmapDATA: $(pixmap_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pixmapdir)" || $(mkdir_p) "$(DESTDIR)$(pixmapdir)"
+ @list='$(pixmap_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pixmapDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapdir)/$$f'"; \
+ $(pixmapDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapdir)/$$f"; \
+ done
+
+uninstall-pixmapDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pixmap_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pixmapdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pixmapdir)/$$f"; \
+ done
+install-textDATA: $(text_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(textdir)" || $(mkdir_p) "$(DESTDIR)$(textdir)"
+ @list='$(text_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(textDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(textdir)/$$f'"; \
+ $(textDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(textdir)/$$f"; \
+ done
+
+uninstall-textDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(text_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(textdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(textdir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ mkdir $(distdir)
+ $(mkdir_p) $(distdir)/. $(distdir)/debian $(distdir)/doc $(distdir)/doc/id3 $(distdir)/doc/users_guide_french $(distdir)/doc/users_guide_french/images $(distdir)/doc/users_guide_german $(distdir)/doc/users_guide_german/images $(distdir)/doc/vorbis $(distdir)/pixmaps $(distdir)/po
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(MANS) $(DATA) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(gnome_menudir)" "$(DESTDIR)$(icondir)" "$(DESTDIR)$(pixmapdir)" "$(DESTDIR)$(textdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-gnome_menuDATA install-iconDATA install-man \
+ install-pixmapDATA install-textDATA
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man: install-man1
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-gnome_menuDATA uninstall-iconDATA \
+ uninstall-info-am uninstall-man uninstall-pixmapDATA \
+ uninstall-textDATA
+
+uninstall-info: uninstall-info-recursive
+
+uninstall-man: uninstall-man1
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+ check-am clean clean-generic clean-libtool clean-recursive \
+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+ dist-shar dist-tarZ dist-zip distcheck distclean \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-recursive distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-gnome_menuDATA install-iconDATA \
+ install-info install-info-am install-man install-man1 \
+ install-pixmapDATA install-strip install-textDATA installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-gnome_menuDATA \
+ uninstall-iconDATA uninstall-info-am uninstall-man \
+ uninstall-man1 uninstall-pixmapDATA uninstall-textDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Makefile.mingw b/Makefile.mingw
new file mode 100644
index 0000000..94a2097
--- /dev/null
+++ b/Makefile.mingw
@@ -0,0 +1,42 @@
+# Makefile.mingw
+#
+# Author: hermanator12002@yahoo.com
+# Date 9/11/02
+# Description: Top Makefile for win32 (mingw) port of Gaim
+#
+
+EASYTAG_SRC = ./src
+EASYTAG_INSTALL_DIR = ./win32-install-dir
+PO = ./po
+
+##
+## Don't forget to change STATIC_PROTO_INIT, in config.h.mingw if you
+## change the status of a protocol (static/plugin)
+##
+
+all:
+ cp config.h.mingw config.h
+ $(MAKE) -C $(EASYTAG_SRC) -f Makefile.mingw
+
+install: all
+ $(MAKE) -C $(PO) -f Makefile.mingw install
+ $(MAKE) -C $(EASYTAG_SRC) -f Makefile.mingw install
+
+
+installer:
+ $(MAKENSIS) /DGAIM_VERSION="$(VERSION)" /DWITH_GTK gaim-installer.nsi
+
+installer_nogtk:
+ $(MAKENSIS) /DGAIM_VERSION="$(VERSION)" gaim-installer.nsi
+
+installer_debug:
+ $(MAKENSIS) /DGAIM_VERSION="$(VERSION)" /DDEBUG gaim-installer.nsi
+
+installers: installer installer_nogtk
+
+
+clean:
+ $(MAKE) -C $(PO) -f Makefile.mingw clean
+ $(MAKE) -C $(EASYTAG_SRC) -f Makefile.mingw clean
+ rm -rf config.h $(EASYTAG_INSTALL_DIR)
+ rm -rf easytag.exe
diff --git a/README b/README
new file mode 100755
index 0000000..245b5fb
--- /dev/null
+++ b/README
@@ -0,0 +1,88 @@
+##########################
+# #
+# README for EasyTAG 2.1 #
+# #
+##########################
+Last update: 2007/05/07
+
+
+AUTHOR:
+=======
+ Jérôme Couderc
+ E-mail: easytag@gmail.com
+ Home Page: http://easytag.sourceforge.net
+ http://sourceforge.net/project/?group_id=5216
+
+
+DESCRIPTION:
+============
+EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, Ogg
+Vorbis, MP4/AAC, MusePack, Monkey's Audio and WavPack files. Its simple and nice
+GTK2 interface makes tagging easier under GNU/Linux or Windows.
+
+
+FEATURES:
+=========
+Currently EasyTAG supports the following:
+
+
+ o View, edit, write tags of MP3, MP2 files (ID3 tag with pictures), FLAC files
+ (FLAC Vorbis tag), Ogg Vorbis files (Ogg Vorbis tag), MP4/AAC (MP4/AAC tag),
+ MusePack, Monkey's Audio and WavPack files (APE tag),
+ o Can edit more tag fields : Title, Artist, Album, Disc Album, Year, Track
+ Number, Genre, Comment, Composer, Original Artist/Performer, Copyright, URL
+ and Encoder name,
+ o Auto tagging: parse filename and directory to complete automatically the
+ fields (using masks),
+ o Ability to rename files and directories from the tag (using masks) or by
+ loading a text file,
+ o Process selected files of the selected directory,
+ o Ability to browse subdirectories,
+ o Recursion for tagging, removing, renaming, saving...,
+ o Can set a field (artist, title,...) to all other selected files,
+ o Read file header informations (bitrate, time, ...) and display them,
+ o Auto completion of the date if a partial is entered,
+ o Undo and redo last changes,
+ o Ability to process fields of tag and file name (convert letters into
+ uppercase, downcase, ...),
+ o Ability to open a directory or a file with an external program,
+ o Remote and local CDDB support for manual or automatic search,
+ o A tree based browser or a view by Artist & Album,
+ o A list to select files,
+ o A playlist generator window,
+ o A file searching window,
+ o Simple and explicit interface!,
+ o Brazilian Portuguese, Bulgarian, Chinese, Czech, Danish, Dutch, French,
+ German, Greek, Hungarian, Italian, Japanese, Polish, Romanian, Russian,
+ Spanish, Swedish and Ukrainian translation languages,
+ o Written in C and uses GTK+ 2 for the GUI.
+
+
+INSTALLATION:
+=============
+Please see the file INSTALL.
+
+
+LICENSE:
+========
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+(It sould be included in this package in the file COPYING )
+
+
+CONTACTS:
+=========
+Visit the homepage at: http://easytag.sourceforge.net
+ or: http://sourceforge.net/project/?group_id=5216
+for more informations and new releases.
+
+Please mail any bug reports, complaints, suggestions and comments to the
+main author Jerome Couderc <easytag@gmail.com>.
diff --git a/README_win32.txt b/README_win32.txt
new file mode 100755
index 0000000..21a94cf
--- /dev/null
+++ b/README_win32.txt
@@ -0,0 +1,131 @@
+This is a test version of the win32 port of EasyTAG 1.99.9 (http://easytag.sourceforge.net/)
+
+
+I. BINARIES INSTALL
+===================
+
+You'll need to install GTK+ runtime to run EasyTAG.
+Get it at http://sourceforge.net/project/showfiles.php?group_id=121075&package_id=132255
+
+You can run from any directory. It should autodetect GTK libs location and store preferences in the localized version of
+the "C:\Documents and Settings\<user>\Application Data\.easytag" folder
+
+It should autodetect your audio player. foobar2k and winamp in order, if you have them installed. If not you can set your audio player in the settings dialog
+
+It should use the langage of your Windows installation. It can be overriden by setting the EASYTAGLANG environment variable
+to the two letter country code found in the "locale" subdirectory. Example for french:
+
+set EASYTAGLANG=fr
+
+
+II. DIFFERENCE WITH UNIX VERSION
+================================
+
+- do not scan default directory at startup (less confusing on first launch)
+- "Show hidden directory..." and corresponding setting check box removed (makes no sense on win32)
+- don't check if audio executable exist because it can contains spaces and the current algorithm do not work in that case
+
+
+III. ISSUES
+===========
+
+- info displayed for ape files is wrong
+
+
+IV. TODO
+========
+
+- crash handler using unix signals to replace with something else
+- minimize main window should also close/minimize the scanner window.
+- add detection of windows media player location if can't find other players
+- go to home directory should go to c:\documents and settings\users\my documents\my music (detect the localized directory)
+
+
+V. TO COMPILE
+=============
+
+- install MinGW with gcc 3.4.4 and g++ (important as gcc 3.4.2 in current has a serious bug with paths)
+- install MSYS
+- install gtk+ development and runtime package and their dependancies in the MinGW directory (see http://www.gimp.org/~tml/gimp/win32/downloads.html)
+ * libiconv-1.9.1.bin.woe32.zip
+ * gettext-0.14.5.zip
+ * gettext-dev-0.14.5.zip
+ * libtool-1.5.8-bin.zip
+ * libtool-1.5.8-lib.zip
+- install pkg-config (see http://www.gimp.org/~tml/gimp/win32/downloads.html)
+
+- add in /etc/profile:
+export PKG_CONFIG_PATH=/mingw/lib/pkgconfig:/usr/local/lib/pkgconfig
+
+- relaunch MSYS and check that pkg-config works:
+pkg-config --list-all
+
+
+should list gtk and its dependencies
+
+
+1) id3lib :
+-----------
+
+- edit configure.in : comment check for truncate() (line 252 to 255)
+- aclocal && automake && autoconf
+- CXXFLAGS="-DID3LIB_LINKOPTION=1" ./configure && make install
+
+
+2) libmp4v2 :
+-------------
+
+- compile and install SDL (SDL-1.2.9.tar.gz : ./configure && make install)
+- ./bootstrap && ./configure
+- go to ./lib/mp4v2
+- make install
+- go to ./include
+- cp *.h /usr/local
+
+
+3) libogg :
+-----------
+
+- ./configure && make install
+
+
+4) libvorbis :
+--------------
+
+- ./configure
+
+- compile will fail when linking libvorbisfile with a libogg missing dependency (libtool bug)
+to fix the problem :
+
+in file "lib/Makefile" line 252, replace:
+ libvorbisfile_la_LIBADD = libvorbis.la
+by
+ libvorbisfile_la_LIBADD = libvorbis.la -L/local/lib -logg
+
+- make install
+
+
+5) flac :
+---------
+
+./configure && make install
+
+
+6) wavpack :
+------------
+
+- if compile fails, replace in the file 'cli\utils.c', line 304 :
+ return (int)(pos - cp) & 1;
+ by :
+ return (int)((int)pos - (int)cp) & 1;
+
+./configure && make install
+
+
+7) easytag :
+------------
+
+make -f Makefile.mingw install
+
+
+all files are in win32-install-dir
diff --git a/THANKS b/THANKS
new file mode 100755
index 0000000..5731f31
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,217 @@
+Bastian Kleineidam <calvin@cs.uni-sb.de>:
+ - German translation
+
+Andrew Shuvalov <andrew@metaphoria.net>:
+ - suggestions
+
+Sergey Zhumatiy <serg@parallel.ru>:
+ - suggestion (support of character translation)
+ - Russian translation
+
+Kevin Venkiteswaran <kevin.v@Binary-Design.com>:
+ - bug reports
+
+Sheikholeslami Navid <shnavid@cyberbeat.it>:
+ - bug reports
+
+Marcus Tegel <tegel@mpg3.de>:
+ - suggestions
+ - bug reports
+
+Robert <info@aim.nf.ca>:
+ - suggestions
+
+Lars Bohn <lars.bohn@web.de>:
+ - suggestions
+ - bug reports
+
+Vincent van Adrighem <V.vanAdrighem@ITS.TUDelft.nl>:
+ - Dutch translation
+
+Patrik Israelsson <fix@linux.nu>:
+ - suggestions
+ - Swedish translation
+
+Adrian Bunk <bunk@fs.tum.de>:
+ - Debian packager
+ - German translation
+
+Alexander D Harkness <alexander@harkness.co.uk>
+ - suggestion (support of Ogg Vorvis files)
+
+Vaclav Slavik <v.slavik@volny.cz>:
+ - bug reports
+
+Charles Kerr <charles@superimp.org>:
+ - patch to add a new button to sequence the track numbers
+
+Gian <giiiii@libero.it>
+ - suggestions
+
+Thomas Zajic <zlatko@gmx.at>
+ - suggestions
+
+Szel Miklos <mukka@freemail.hu>
+ - Hungarian translation
+ - suggestions
+
+Tore Aursand <tore@extend.no>
+ - suggestions
+
+Cappelletti Lorenzo <l.cappelletti@mail.com>
+ - bug reports
+ - suggestions
+ - Italian translation
+
+Colin Marquardt <colin@marquardt-home.de>
+ - a lot of wordind fixes, spelling mistakes fixes
+ - German translation
+
+Takeshi Aihana <aihana@gnome.gr.jp>
+ - Japanese translation
+
+Andrey Astafiev <andrei@tvcell.ru>
+ - Russian translation
+
+Goetz Waschk <waschk@informatik.uni-rostock.de>
+ - autoconf/automake
+ - a lot of patches
+ - German translation
+
+Olexander Kunytsa <kunia@istc.kiev.ua>
+ - Ukrainian translation
+
+Cawko Xakep <xakep@snark.ukma.kiev.ua>
+ - Ukrainian translation
+
+Philipp Thomas <pthomas@suse.de>
+ - German translation
+
+Holger Schemel <aeglos@valinor.owl.de>
+ - patch to fix tag priority problem with id3lib
+
+Björn Olievier <bjorn.olievier@advalvas.be>:
+ - Dutch translation
+ - bug reports
+
+Milan Siebenburger <milan.siebenburger@ais.cz>:
+ - Czech translation
+
+Jaime Serrano Cartagena <jaiserca@inf.upv.es>:
+ - Spanish translation
+
+Colin Macdonald <cbm@cs.sfu.ca>
+ - spelling mistakes fixes
+
+Maciej Kasprzyk <kasprzol@go2.pl>
+ - Polish translation
+ - bug reports + patches
+
+Artur Polaczynski <artii@o2.pl>
+ - patch and text corrections
+
+Nagy Boldizsar <boldi01@freemail.hu>
+ - Hungarian translation
+
+Pauliuc George <pauliuc@gmx.net>
+ - Romanian translation
+
+Daniel Pichler <dpichler@dnet.it>
+ - German help documentation
+
+Philipp Thomas <pthomas@suse.de>
+ - patches and cleaning for 64bit platform
+
+Oliver <oliver@are-b.org>
+ - some new feature (in playlist, CRC32)
+
+Tony Mancill <tony@mancill.com>:
+ - Debian packager
+ - patches
+
+Costantino Ceoldo
+ - Italian translation <ciclope10ATalice.it>
+
+Pavel Minayev <thalion@front.ru>
+ - FLAC vorbis tag support
+
+Mihael Vrbanec <miqster@gmx.net>
+ - Initial GTK2 porting work (for EasyTAG 0.28.1)
+
+Daniel Drake <dsd@gentoo.org>
+ - Full GTK 2.4 port!
+
+Morten Brix Pedersen <morten@wtf.dk>
+ - Danish translation
+
+Santtu Lakkala <inzane@ircing.org>
+ - patches / DLM support
+
+Justus Schwartz <justus@gmx.li>
+ - Cddb request from selected files
+
+Fredrik Noring <noring@nocrew.org>
+ - pictures for ID3v2 tags
+
+Fernando M. Bueno Moreno <fernantre@yahoo.es>
+ - Spanish translation
+
+Guilherme Destefani <gd@helixbrasil.com.br>
+ - Rename directories with scanner
+
+Zbynek Mrkvicka <zbynek@oachot.cz>
+ - Czech translation
+
+Apollon Oikonomopoulos <apoikos@mail.ntua.gr>
+ - Greek translation
+
+Francisco Javier F. Serrador <serrador@cvs.gnome.org>
+ - Spanish translation
+
+doutor.zero <doutor.zero@gmail.com>
+ - Brazilian Portuguese translation
+
+Paul Giordano <giordano@covad.net>
+ - patch to fix hangs on cddb lookups
+
+Michael Ihde <mike.ihde@randomwalking.com>
+ - MP4/AAC support
+
+Stewart Whitman <swhitman@cox.net>
+ - MP4/AAC support
+
+Luchezar P. Petkov <luchezar.petkov@gmail.com>
+ - Bulgarian translation
+
+Javier Kohen <jkohen@users.sourceforge.net>
+ - Support of Unicode in MP3 tag with id3lib
+
+Alexey Illarionov <littlesavage@rambler.ru>
+ - Support of Unicode in MP3 tag with id3lib
+ - Support of ID3v2.4 tags with libid3tag
+
+Michael Pujos <pujos.michael@laposte.net>
+ - Port of EasyTAG 1.99.9 to Win32
+
+Der Humph <humph@gmx.de>
+ - New icon
+
+Emmanuel Brun <brunema@wanadoo.fr>
+ - French USERS GUIDE
+
+FutureFog <futurefog@katamail.com>
+ - Wrote EasyTAG.Win32.Setup.iss script
+
+Maarten Maathuis <madman2003@gmail.com>
+ - Support of WavPack files
+
+Pierre Dumuid <pierre.dumuid@adelaide.edu.au>
+ - Support of Speex files
+
+Yuval Hager <yuval@avramzon.net>
+ - Hebrew translation
+
+
+
+My thanks to all :)
+ Jerome
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..f2a4b7f
--- /dev/null
+++ b/TODO
@@ -0,0 +1,7 @@
+###############
+# #
+# TODO List #
+# #
+###############
+
+...not up to date...
diff --git a/USERS-GUIDE b/USERS-GUIDE
new file mode 100755
index 0000000..354f662
--- /dev/null
+++ b/USERS-GUIDE
@@ -0,0 +1,6 @@
+
+ ****************************
+ * Users Guide for EasyTAG *
+ ****************************
+
+See the USERS GUIDE available in the doc/ directory.
diff --git a/acconfig.h b/acconfig.h
new file mode 100644
index 0000000..7847613
--- /dev/null
+++ b/acconfig.h
@@ -0,0 +1,18 @@
+#define ID3LIB_MAJOR 0
+#define ID3LIB_MINOR 0
+#define ID3LIB_PATCH 0
+
+#define LIBFLAC_MAJOR 0
+#define LIBFLAC_MINOR 0
+#define LIBFLAC_PATCH 0
+
+#undef PACKAGE
+#undef VERSION
+#undef HAVE_LIBSM
+#undef HAVE_CATGETS
+#undef HAVE_GETTEXT
+#undef HAVE_LC_MESSAGES
+#undef HAVE_STPCPY
+#undef ENABLE_NLS
+#undef HAVE_ICONV_OPEN
+#undef HAVE_LANGINFO_CODESET
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..2a1fcdb
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,8257 @@
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# Configure paths for GLIB
+# Owen Taylor 1997-2001
+
+dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject or
+dnl gthread is specified in MODULES, pass to pkg-config
+dnl
+AC_DEFUN([AM_PATH_GLIB_2_0],
+[dnl
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program],
+ , enable_glibtest=yes)
+
+ pkg_config_args=glib-2.0
+ for module in . $4
+ do
+ case "$module" in
+ gmodule)
+ pkg_config_args="$pkg_config_args gmodule-2.0"
+ ;;
+ gmodule-no-export)
+ pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
+ ;;
+ gobject)
+ pkg_config_args="$pkg_config_args gobject-2.0"
+ ;;
+ gthread)
+ pkg_config_args="$pkg_config_args gthread-2.0"
+ ;;
+ esac
+ done
+
+ PKG_PROG_PKG_CONFIG([0.7])
+
+ no_glib=""
+
+ if test "x$PKG_CONFIG" = x ; then
+ no_glib=yes
+ PKG_CONFIG=no
+ fi
+
+ min_glib_version=ifelse([$1], ,2.0.0,$1)
+ AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+
+ if test x$PKG_CONFIG != xno ; then
+ ## don't try to run the test against uninstalled libtool libs
+ if $PKG_CONFIG --uninstalled $pkg_config_args; then
+ echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+ enable_glibtest=no
+ fi
+
+ if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+ :
+ else
+ no_glib=yes
+ fi
+ fi
+
+ if test x"$no_glib" = x ; then
+ GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+ GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+ GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+
+ GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+ GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+ glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_glibtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$GLIB_LIBS $LIBS"
+dnl
+dnl Now check if the installed GLIB is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+ rm -f conf.glibtest
+ AC_TRY_RUN([
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.glibtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = g_strdup("$min_glib_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_glib_version");
+ exit(1);
+ }
+
+ if ((glib_major_version != $glib_config_major_version) ||
+ (glib_minor_version != $glib_config_minor_version) ||
+ (glib_micro_version != $glib_config_micro_version))
+ {
+ printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
+ $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf ("*** was found! If pkg-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+ printf("*** to point to the correct configuration files\n");
+ }
+ else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+ (glib_minor_version != GLIB_MINOR_VERSION) ||
+ (glib_micro_version != GLIB_MICRO_VERSION))
+ {
+ printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+ GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ }
+ else
+ {
+ if ((glib_major_version > major) ||
+ ((glib_major_version == major) && (glib_minor_version > minor)) ||
+ ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+ printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_glib" = x ; then
+ AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** A new enough version of pkg-config was not found."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+ else
+ if test -f conf.glibtest ; then
+ :
+ else
+ echo "*** Could not run GLIB test program, checking why..."
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$LIBS $GLIB_LIBS"
+ AC_TRY_LINK([
+#include <glib.h>
+#include <stdio.h>
+], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+ echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GLIB_CFLAGS=""
+ GLIB_LIBS=""
+ GLIB_GENMARSHAL=""
+ GOBJECT_QUERY=""
+ GLIB_MKENUMS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+ AC_SUBST(GLIB_GENMARSHAL)
+ AC_SUBST(GOBJECT_QUERY)
+ AC_SUBST(GLIB_MKENUMS)
+ rm -f conf.glibtest
+])
+
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl.
+# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor@redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+#
+# Modified to require ngettext
+# Matthias Clasen <mclasen@redhat.com> 08/06/2004
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+ [AC_CHECK_HEADERS([locale.h])
+ if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+ fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ /*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+ dnl NLS is obligatory
+ [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+ USE_NLS=yes
+ AC_SUBST(USE_NLS)
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ AC_CHECK_HEADER(libintl.h,
+ [gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+ [AC_TRY_LINK([
+#include <libintl.h>
+],
+ [return !ngettext ("","", 1)],
+ gt_cv_func_ngettext_libc=yes,
+ gt_cv_func_ngettext_libc=no)
+ ])
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+ [AC_TRY_LINK([
+#include <libintl.h>
+],
+ [return !dgettext ("","")],
+ gt_cv_func_dgettext_libc=yes,
+ gt_cv_func_dgettext_libc=no)
+ ])
+ fi
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ fi
+
+ #
+ # If we don't have everything we want, check in libintl
+ #
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ || test "$gt_cv_func_ngettext_libc" != "yes" \
+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ AC_CHECK_LIB(intl, bindtextdomain,
+ [AC_CHECK_LIB(intl, ngettext,
+ [AC_CHECK_LIB(intl, dgettext,
+ gt_cv_func_dgettext_libintl=yes)])])
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ AC_MSG_CHECKING([if -liconv is needed to use gettext])
+ AC_MSG_RESULT([])
+ AC_CHECK_LIB(intl, ngettext,
+ [AC_CHECK_LIB(intl, dcgettext,
+ [gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv],
+ :,-liconv)],
+ :,-liconv)
+ fi
+
+ #
+ # If we found libintl, then check in it for bind_textdomain_codeset();
+ # we'll prefer libc if neither have bind_textdomain_codeset(),
+ # and both have dgettext and ngettext
+ #
+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS -lintl $libintl_extra_libs"
+ unset ac_cv_func_bind_textdomain_codeset
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ LIBS="$glib_save_LIBS"
+
+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+ gt_cv_func_dgettext_libc=no
+ else
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ && test "$gt_cv_func_ngettext_libc" = "yes"; then
+ gt_cv_func_dgettext_libintl=no
+ fi
+ fi
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ gt_cv_have_gettext=yes
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ fi
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ AC_DEFINE(HAVE_GETTEXT,1,
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+ AC_CHECK_FUNCS(dcgettext)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr],
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [case $host in
+ *-*-solaris*)
+ dnl On Solaris, if bind_textdomain_codeset is in libc,
+ dnl GNU format message catalog is always supported,
+ dnl since both are added to the libc all together.
+ dnl Hence, we'd like to go with DATADIRNAME=share and
+ dnl and CATOBJEXT=.gmo in this case.
+ AC_CHECK_FUNC(bind_textdomain_codeset,
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [CATOBJEXT=.mo
+ DATADIRNAME=lib])
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac])
+ LIBS="$glib_save_LIBS"
+ INSTOBJEXT=.mo
+ else
+ gt_cv_have_gettext=no
+ fi
+ fi
+ ])
+
+ if test "$gt_cv_have_gettext" = "yes" ; then
+ AC_DEFINE(ENABLE_NLS, 1,
+ [always defined to indicate that i18n is enabled])
+ fi
+
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is not GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ AC_MSG_RESULT(
+ [found xgettext program is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+
+ AC_OUTPUT_COMMANDS(
+ [case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac])
+
+ dnl These rules are solely for the distribution goal. While doing this
+ dnl we only have to keep exactly one list of the available catalogs
+ dnl in configure.in.
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(CATALOGS)
+ AC_SUBST(CATOBJEXT)
+ AC_SUBST(DATADIRNAME)
+ AC_SUBST(GMOFILES)
+ AC_SUBST(INSTOBJEXT)
+ AC_SUBST(INTLLIBS)
+ AC_SUBST(PO_IN_DATADIR_TRUE)
+ AC_SUBST(PO_IN_DATADIR_FALSE)
+ AC_SUBST(POFILES)
+ AC_SUBST(POSUB)
+ ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+ [AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+
+ GLIB_LC_MESSAGES
+ GLIB_WITH_NLS
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+ fi
+ done
+ LINGUAS=$NEW_LINGUAS
+ AC_MSG_RESULT($LINGUAS)
+ fi
+
+ dnl Construct list of names of catalog files to be constructed.
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+ dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+ dnl Try to locate is.
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+ AC_SUBST(MKINSTALLDIRS)
+
+ dnl Generate list of files to be processed by xgettext which will
+ dnl be included in po/Makefile.
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+ ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+glib_save_datarootdir="$datarootdir"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+datarootdir=`eval echo "${datarootdir}"`
+if test "x$CATOBJEXT" = "x.mo" ; then
+ localedir=`eval echo "${libdir}/locale"`
+else
+ localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+datarootdir="$glib_save_datarootdir"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+ [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_in,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
+
+# Configure paths for GTK+
+# Owen Taylor 1997-2001
+
+dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
+dnl pass to pkg-config
+dnl
+AC_DEFUN([AM_PATH_GTK_2_0],
+[dnl
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
+ , enable_gtktest=yes)
+
+ pkg_config_args=gtk+-2.0
+ for module in . $4
+ do
+ case "$module" in
+ gthread)
+ pkg_config_args="$pkg_config_args gthread-2.0"
+ ;;
+ esac
+ done
+
+ no_gtk=""
+
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+ if test x$PKG_CONFIG != xno ; then
+ if pkg-config --atleast-pkgconfig-version 0.7 ; then
+ :
+ else
+ echo "*** pkg-config too old; version 0.7 or better required."
+ no_gtk=yes
+ PKG_CONFIG=no
+ fi
+ else
+ no_gtk=yes
+ fi
+
+ min_gtk_version=ifelse([$1], ,2.0.0,$1)
+ AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
+
+ if test x$PKG_CONFIG != xno ; then
+ ## don't try to run the test against uninstalled libtool libs
+ if $PKG_CONFIG --uninstalled $pkg_config_args; then
+ echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
+ enable_gtktest=no
+ fi
+
+ if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
+ :
+ else
+ no_gtk=yes
+ fi
+ fi
+
+ if test x"$no_gtk" = x ; then
+ GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
+ GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
+ gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_gtktest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ LIBS="$GTK_LIBS $LIBS"
+dnl
+dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+ rm -f conf.gtktest
+ AC_TRY_RUN([
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.gtktest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = g_strdup("$min_gtk_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_gtk_version");
+ exit(1);
+ }
+
+ if ((gtk_major_version != $gtk_config_major_version) ||
+ (gtk_minor_version != $gtk_config_minor_version) ||
+ (gtk_micro_version != $gtk_config_micro_version))
+ {
+ printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
+ $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ printf ("*** was found! If pkg-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+ printf("*** to point to the correct configuration files\n");
+ }
+ else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+ (gtk_minor_version != GTK_MINOR_VERSION) ||
+ (gtk_micro_version != GTK_MICRO_VERSION))
+ {
+ printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+ GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ }
+ else
+ {
+ if ((gtk_major_version > major) ||
+ ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+ ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
+ printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_gtk" = x ; then
+ AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** A new enough version of pkg-config was not found."
+ echo "*** See http://pkgconfig.sourceforge.net"
+ else
+ if test -f conf.gtktest ; then
+ :
+ else
+ echo "*** Could not run GTK+ test program, checking why..."
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ LIBS="$LIBS $GTK_LIBS"
+ AC_TRY_LINK([
+#include <gtk/gtk.h>
+#include <stdio.h>
+], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
+ echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GTK_CFLAGS=""
+ GTK_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
+ rm -f conf.gtktest
+])
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 48 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
+ fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+AC_DEFUN([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# ------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ---------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}]
+EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# ----------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+# set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="ifelse([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix3*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!). If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ------------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# -------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF
+
+# Report which library types will actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ AC_PROG_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_AC_TAGVAR(predep_objects,$1)=
+ _LT_AC_TAGVAR(postdep_objects,$1)=
+ _LT_AC_TAGVAR(postdeps,$1)=
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_[]_LT_AC_TAGVAR(predep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_[]_LT_AC_TAGVAR(postdep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+])
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDGIRSTW]]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ _LT_CC_BASENAME([$compiler])
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi[[45]]*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ *)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+ if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ else
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ fi
+else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.9.6])])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 7
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..8ee3e5c
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# New version from 18/08/2005
+libtoolize --force --copy
+aclocal
+autoheader
+automake --add-missing -a --foreign
+autoconf
+
+
+# Old version
+#gettextize -c
+#libtoolize -c
+#aclocal
+#autoconf
+#autoheader
+#automake -c -a --foreign
diff --git a/config.guess b/config.guess
new file mode 100755
index 0000000..2fc3acc
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1411 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-06-17'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+## for Red Hat Linux
+if test -f /etc/redhat-release ; then
+ VENDOR=redhat ;
+else
+ VENDOR= ;
+fi
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit 0 ;;
+ amiga:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ arc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ hp300:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mac68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme88k:OpenBSD:*:*)
+ echo m88k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvmeppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ pmax:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sgi:OpenBSD:*:*)
+ echo mipseb-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sun3:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ wgrisc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ alpha:OSF1:*:*)
+ if test $UNAME_RELEASE = "V4.0"; then
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ fi
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit 0 ;;
+ Alpha*:OpenVMS:*:*)
+ echo alpha-hp-vms
+ exit 0 ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit 0;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit 0 ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit 0;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit 0;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit 0 ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit 0 ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit 0 ;;
+ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit 0 ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit 0 ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c \
+ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && exit 0
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit 0 ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit 0 ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit 0 ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit 0 ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit 0 ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit 0 ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit 0 ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit 0 ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit 0 ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit 0 ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo rs6000-ibm-aix3.2.5
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit 0 ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit 0 ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit 0 ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit 0 ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit 0 ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit 0 ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit 0 ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit 0 ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ # avoid double evaluation of $set_cc_for_build
+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo unknown-hitachi-hiuxwe2
+ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit 0 ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit 0 ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit 0 ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit 0 ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ *:UNICOS/mp:*:*)
+ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit 0 ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
+ # Determine whether the default compiler uses glibc.
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #if __GLIBC__ >= 2
+ LIBC=gnu
+ #else
+ LIBC=
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit 0 ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit 0 ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit 0 ;;
+ x86:Interix*:[34]*)
+ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+ exit 0 ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit 0 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ *:GNU:*:*)
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu
+ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ ppc:Linux:*:*)
+ echo powerpc-${VENDOR:-unknown}-linux-gnu
+ exit 0 ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-${VENDOR:-unknown}-linux-gnu
+ exit 0 ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu
+ exit 0 ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-${VENDOR:-unknown}-linux-gnu
+ exit 0 ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit 0 ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit 0 ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #ifdef __INTEL_COMPILER
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0
+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit 0 ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit 0 ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit 0 ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit 0 ;;
+ i*86:*:5:[78]*)
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit 0 ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit 0 ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit 0 ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit 0 ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit 0 ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit 0 ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit 0 ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit 0 ;;
+ M68*:*:R3V[567]*:*)
+ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4 && exit 0 ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit 0 ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit 0 ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit 0 ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit 0 ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit 0 ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit 0 ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit 0 ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit 0 ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+ case `uname -p` in
+ *86) UNAME_PROCESSOR=i686 ;;
+ powerpc) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+ NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit 0 ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit 0 ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ c34*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ c38*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ c4*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.h.in b/config.h.in
new file mode 100755
index 0000000..71af7a1
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,237 @@
+/* config.h.in. Generated from configure.in by autoheader. */
+#define ID3LIB_MAJOR 0
+#define ID3LIB_MINOR 0
+#define ID3LIB_PATCH 0
+
+#define LIBFLAC_MAJOR 0
+#define LIBFLAC_MINOR 0
+#define LIBFLAC_PATCH 0
+
+#undef PACKAGE
+#undef VERSION
+#undef HAVE_LIBSM
+#undef HAVE_CATGETS
+#undef HAVE_GETTEXT
+#undef HAVE_LC_MESSAGES
+#undef HAVE_STPCPY
+#undef ENABLE_NLS
+#undef HAVE_ICONV_OPEN
+#undef HAVE_LANGINFO_CODESET
+
+/* Define for FLAC support */
+#undef ENABLE_FLAC
+
+/* Define for id3v23 support */
+#undef ENABLE_ID3LIB
+
+/* Define for MP3 support */
+#undef ENABLE_MP3
+
+/* Define for MP4 support */
+#undef ENABLE_MP4
+
+/* always defined to indicate that i18n is enabled */
+#undef ENABLE_NLS
+
+/* Define for Ogg Vorbis support */
+#undef ENABLE_OGG
+
+/* Define for Speex support */
+#undef ENABLE_SPEEX
+
+/* Define for Wavpack support */
+#undef ENABLE_WAVPACK
+
+/* Package name for gettext */
+#undef GETTEXT_PACKAGE
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#undef HAVE_BIND_TEXTDOMAIN_CODESET
+
+/* Define to 1 if you have the `dcgettext' function. */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the `FLAC' library (-lFLAC). */
+#undef HAVE_LIBFLAC
+
+/* Define to 1 if you have the `id3tag' library (-lid3tag). */
+#undef HAVE_LIBID3TAG
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the `mp4v2' library (-lmp4v2). */
+#undef HAVE_LIBMP4V2
+
+/* Define to 1 if you have the `ogg' library (-logg). */
+#undef HAVE_LIBOGG
+
+/* Define to 1 if you have the `socket' library (-lsocket). */
+#undef HAVE_LIBSOCKET
+
+/* Define to 1 if you have the `speex' library (-lspeex). */
+#undef HAVE_LIBSPEEX
+
+/* Define to 1 if you have the `vorbis' library (-lvorbis). */
+#undef HAVE_LIBVORBIS
+
+/* Define to 1 if you have the `vorbisfile' library (-lvorbisfile). */
+#undef HAVE_LIBVORBISFILE
+
+/* Define to 1 if you have the `wavpack' library (-lwavpack). */
+#undef HAVE_LIBWAVPACK
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkdir' function. */
+#undef HAVE_MKDIR
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if `stat' has the bug that it succeeds when given the
+ zero-length file name argument. */
+#undef HAVE_STAT_EMPTY_STRING_BUG
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strstr' function. */
+#undef HAVE_STRSTR
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* id3lib major version */
+#undef ID3LIB_MAJOR
+
+/* id3lib minor version */
+#undef ID3LIB_MINOR
+
+/* id3lib patch level */
+#undef ID3LIB_PATCH
+
+/* libflac major version */
+#undef LIBFLAC_MAJOR
+
+/* libflac minor version */
+#undef LIBFLAC_MINOR
+
+/* libflac patch version */
+#undef LIBFLAC_PATCH
+
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+ slash. */
+#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef mode_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
diff --git a/config.h.mingw b/config.h.mingw
new file mode 100755
index 0000000..409b1ec
--- /dev/null
+++ b/config.h.mingw
@@ -0,0 +1,428 @@
+/* config.h. Generated automatically by configure. */
+/* config.h.in. Generated automatically from configure.in by autoheader. */
+
+/* Define if using alloca.c. */
+/* #undef C_ALLOCA */
+
+/* Define to empty if the keyword does not work. */
+/* #undef const */
+
+/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
+ This function is required for alloca.c support on those systems. */
+/* #undef CRAY_STACKSEG_END */
+
+/* Define if you have alloca, as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
+/* #undef HAVE_ALLOCA_H */
+
+/* Define if you have a working `mmap' system call. */
+/* #undef HAVE_MMAP */
+
+/* Define if you have the strftime function. */
+#define HAVE_STRFTIME 1
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
+/* #undef HAVE_SYS_WAIT_H */
+
+/* Define if your struct tm has tm_zone. */
+/* #undef HAVE_TM_ZONE */
+
+/* Define if you don't have tm_zone but do have the external array
+ tzname. */
+/* #undef HAVE_TZNAME */
+
+/* Define as __inline if that's what the C compiler calls it. */
+/* #undef inline */
+
+/* Define to `long' if <sys/types.h> doesn't define. */
+/* #undef off_t */
+
+/* Define as the return type of signal handlers (int or void). */
+#define RETSIGTYPE void
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+/* #undef size_t */
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown
+ */
+/* #undef STACK_DIRECTION */
+
+/* Define if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if your <sys/time.h> declares struct tm. */
+/* #undef TM_IN_SYS_TIME */
+
+/* Define if your processor stores words with the most significant
+ byte first (like Motorola and SPARC, unlike Intel and VAX). */
+/* #undef WORDS_BIGENDIAN */
+
+#define ENABLE_NLS 1
+/* #undef HAVE_CATGETS */
+/* #undef HAVE_GETTEXT */
+/* #undef HAVE_LC_MESSAGES */
+/* #undef HAVE_STPCPY */
+/* #undef HAVE_LIBSM */
+/* #undef USE_APPLET */
+/* #undef USE_GNOME */
+/* #undef USE_PIXBUF */
+#define USE_SCREENSAVER 1
+/* #define DEBUG 1 */
+/* #undef NAS_SOUND */
+/* #undef ESD_SOUND */
+/* #undef ARTSC_SOUND */
+/* #undef _REENTRANT */
+/* #undef NEED_GNOMESUPPORT_H */
+#define ZEPHYR_INT32 long
+/* #undef ZEPHYR_USES_KERBEROS */
+#ifndef STATIC_PROTO_INIT
+#define STATIC_PROTO_INIT void static_proto_init() { }
+#endif
+#define socklen_t int
+/* #undef HAVE_TM_GMTOFF */
+
+/* Define if you have the Perl_eval_pv function. */
+/* #undef HAVE_PERL_EVAL_PV */
+
+/* Define if you have the __argz_count function. */
+/* #undef HAVE___ARGZ_COUNT */
+
+/* Define if you have the __argz_next function. */
+/* #undef HAVE___ARGZ_NEXT */
+
+/* Define if you have the __argz_stringify function. */
+/* #undef HAVE___ARGZ_STRINGIFY */
+
+/* Define if you have the atexit function. */
+#define HAVE_ATEXIT 1
+
+/* Define if you have the bswap_16 function. */
+/* #undef HAVE_BSWAP_16 */
+
+/* Define if you have the bswap_32 function. */
+/* #undef HAVE_BSWAP_32 */
+
+/* Define if you have the connect function. */
+/* #undef HAVE_CONNECT */
+
+/* Define if you have the dcgettext function. */
+/* #undef HAVE_DCGETTEXT */
+
+/* Define if you have the feof_unlocked function. */
+/* #undef HAVE_FEOF_UNLOCKED */
+
+/* Define if you have the fgets_unlocked function. */
+/* #undef HAVE_FGETS_UNLOCKED */
+
+/* Define if you have the getaddrinfo function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define if you have the getcwd function. */
+#define HAVE_GETCWD 1
+
+/* Define if you have the getegid function. */
+/* #undef HAVE_GETEGID */
+
+/* Define if you have the geteuid function. */
+/* #undef HAVE_GETEUID */
+
+/* Define if you have the getgid function. */
+/* #undef HAVE_GETGID */
+
+/* Define if you have the gethostid function. */
+/* #undef HAVE_GETHOSTID */
+
+/* Define if you have the getopt_long function. */
+/* #undef HAVE_GETOPT_LONG */
+
+/* Define if you have the getpagesize function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define if you have the getuid function. */
+/* #undef HAVE_GETUID */
+
+/* Define if you have the krb_get_err_text function. */
+/* #undef HAVE_KRB_GET_ERR_TEXT */
+
+/* Define if you have the krb_get_lrealm function. */
+/* #undef HAVE_KRB_GET_LREALM */
+
+/* Define if you have the krb_log function. */
+/* #undef HAVE_KRB_LOG */
+
+/* Define if you have the krb_rd_req function. */
+/* #undef HAVE_KRB_RD_REQ */
+
+/* Define if you have the krb_set_key function. */
+/* #undef HAVE_KRB_SET_KEY */
+
+/* Define if you have the lrand48 function. */
+/* #undef HAVE_LRAND48 */
+
+/* Define if you have the memcpy function. */
+#define HAVE_MEMCPY 1
+
+/* Define if you have the memmove function. */
+#define HAVE_MEMMOVE 1
+
+/* Define if you have the mempcpy function. */
+/* #undef HAVE_MEMPCPY */
+
+/* Define if you have the munmap function. */
+/* #undef HAVE_MUNMAP */
+
+/* Define if you have the putenv function. */
+#define HAVE_PUTENV 1
+
+/* Define if you have the random function. */
+/* #undef HAVE_RANDOM */
+
+/* Define if you have the setenv function. */
+/* #undef HAVE_SETENV */
+
+/* Define if you have the setlocale function. */
+#define HAVE_SETLOCALE 1
+
+/* Define if you have the snprintf function. */
+#define HAVE_SNPRINTF 1
+
+/* Define if you have the socket function. */
+/* #undef HAVE_SOCKET */
+
+/* Define if you have the stpcpy function. */
+/* #undef HAVE_STPCPY */
+
+/* Define if you have the strcasecmp function. */
+#define HAVE_STRCASECMP 1
+
+/* Define if you have the strchr function. */
+#define HAVE_STRCHR 1
+
+/* Define if you have the strdup function. */
+#define HAVE_STRDUP 1
+
+/* Define if you have the strerror function. */
+#define HAVE_STRERROR 1
+
+/* Define if you have the strstr function. */
+#define HAVE_STRSTR 1
+
+/* Define if you have the strtoul function. */
+#define HAVE_STRTOUL 1
+
+/* Define if you have the tsearch function. */
+/* #undef HAVE_TSEARCH */
+
+/* Define if you have the vprintf function. */
+#define HAVE_VPRINTF 1
+
+/* Define if you have the <X11/SM/SMlib.h> header file. */
+/* #undef HAVE_X11_SM_SMLIB_H */
+
+/* Define if you have the <argz.h> header file. */
+/* #undef HAVE_ARGZ_H */
+
+/* Define if you have the <arpa/nameser_compat.h> header file. */
+/* #undef HAVE_ARPA_NAMESER_COMPAT_H */
+
+/* Define if you have the <asm/byteorder.h> header file. */
+/* #undef HAVE_ASM_BYTEORDER_H */
+
+/* Define if you have the <byteswap.h> header file. */
+/* #undef HAVE_BYTESWAP_H */
+
+/* Define if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define if you have the <endian.h> header file. */
+/* #undef HAVE_ENDIAN_H */
+
+/* Define if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define if you have the <machine/endian.h> header file. */
+/* #undef HAVE_MACHINE_ENDIAN_H */
+
+/* Define if you have the <malloc.h> header file. */
+#define HAVE_MALLOC_H 1
+
+/* Define if you have the <nl_types.h> header file. */
+/* #undef HAVE_NL_TYPES_H */
+
+/* Define if you have the <paths.h> header file. */
+/* #undef HAVE_PATHS_H */
+
+/* Define if you have the <sgtty.h> header file. */
+/* #undef HAVE_SGTTY_H */
+
+/* Define if you have the <signal.h> header file. */
+/*#define HAVE_SIGNAL_H 1*/
+
+/* Define if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define if you have the <stddef.h> header file. */
+#define HAVE_STDDEF_H 1
+
+/* Define if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define if you have the <sys/cdefs.h> header file. */
+/* #undef HAVE_SYS_CDEFS_H */
+
+/* Define if you have the <sys/file.h> header file. */
+#define HAVE_SYS_FILE_H 1
+
+/* Define if you have the <sys/filio.h> header file. */
+/* #undef HAVE_SYS_FILIO_H */
+
+/* Define if you have the <sys/ioctl.h> header file. */
+/* #undef HAVE_SYS_IOCTL_H */
+
+/* Define if you have the <sys/msgbuf.h> header file. */
+/* #undef HAVE_SYS_MSGBUF_H */
+
+/* Define if you have the <sys/param.h> header file. */
+/* #undef HAVE_SYS_PARAM_H */
+
+/* Define if you have the <sys/select.h> header file. */
+/* #undef HAVE_SYS_SELECT_H */
+
+/* Define if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define if you have the <sys/uio.h> header file. */
+/* #undef HAVE_SYS_UIO_H */
+
+/* Define if you have the <sys/utsname.h> header file. */
+/* #undef HAVE_SYS_UTSNAME_H */
+
+/* Define if you have the <sys/wait.h> header file. */
+/* #undef HAVE_SYS_WAIT_H */
+
+/* Define if you have the <termios.h> header file. */
+/* #undef HAVE_TERMIOS_H */
+
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define if you have the nsl library (-lnsl). */
+/* #undef HAVE_LIBNSL */
+
+/* Define if you have the resolv library (-lresolv). */
+/* #undef HAVE_LIBRESOLV */
+
+/* Name of package */
+#define PACKAGE "easytag"
+
+/* Version number of package */
+#define VERSION "2.1.1"
+
+/* Define if you have the iconv() function. */
+/* #undef HAVE_ICONV */
+
+/* Define as const if the declaration of iconv() needs const. */
+/* #undef ICONV_CONST */
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+/* #undef HAVE_LANGINFO_CODESET */
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+/* #undef HAVE_LC_MESSAGES */
+
+/* Define to 1 if translation of program messages to the user's native language
+ is requested. */
+/* #define ENABLE_NLS 1 */
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+/* #undef HAVE_GETTEXT */
+
+/* Define if you have the external 'timezone' variable. */
+#define HAVE_TIMEZONE 1
+
+/* Define if you have the external 'altzone' variable. */
+/* #undef HAVE_ALTZONE */
+
+/* Define if you have the external 'daylight' variable. */
+#define HAVE_DAYLIGHT 1
+
+#define HAVE_SSL 1
+#define HAVE_NSS 1
+/*#define HAVE_GNUTLS 1*/
+
+/*
+ * Following are added for Win32 version of Gaim
+ */
+
+#define HAVE_VSNPRINTF
+
+#define ENABLE_ID3LIB 1
+
+#define ID3LIB_MAJOR 3
+#define ID3LIB_MINOR 8
+#define ID3LIB_PATCH 3
+
+#define LIBFLAC_MAJOR 1
+#define LIBFLAC_MINOR 1
+#define LIBFLAC_PATCH 2
+
+/* Package name for gettext */
+#define GETTEXT_PACKAGE "easytag"
+
+#define ID3LIB_LINKOPTION LINKOPTION_STATIC
+
+/* Define for MP3 support */
+#define ENABLE_MP3 1
+
+/* Define to 1 if you have the `ogg' library (-logg). */
+#define HAVE_LIBOGG 1
+
+/* Define to 1 if you have the `vorbis' library (-lvorbis). */
+#define HAVE_LIBVORBIS 1
+
+/* Define to 1 if you have the `vorbisfile' library (-lvorbisfile). */
+#define HAVE_LIBVORBISFILE 1
+
+#define ENABLE_OGG 1
+
+/* Define for FLAC support */
+#define ENABLE_FLAC 1
+
+/* Define to 1 if you have the `FLAC' library (-lFLAC). */
+#define HAVE_LIBFLAC 1
+
+/* Define for MP4 support */
+#define ENABLE_MP4 1
+
+/* Define for MP4 support */
+#define ENABLE_WAVPACK 1
+
+/* Define to 1 if you have the `mp4v2' library (-lmp4v2). */
+#define HAVE_LIBMP4V2 1
+
+#define HAVE_GLIB_H 1
diff --git a/config.sub b/config.sub
new file mode 100755
index 0000000..6b2ff9f
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1500 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-06-18'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit 0;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k \
+ | m32r | m68000 | m68k | m88k | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | msp430 \
+ | ns16k | ns32k \
+ | openrisc | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | s390 | s390x \
+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
+ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* \
+ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* \
+ | m32r-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | msp430-* \
+ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | s390-* | s390x-* \
+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ mmix*)
+ basic_machine=mmix-knuth
+ os=-mmixware
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nv1)
+ basic_machine=nv1-cray
+ os=-unicosmp
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ or32 | or32-*)
+ basic_machine=or32-unknown
+ os=-coff
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..f4977dd
--- /dev/null
+++ b/configure
@@ -0,0 +1,26877 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59 for easytag 2.1.1.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME='easytag'
+PACKAGE_TARNAME='easytag'
+PACKAGE_VERSION='2.1.1'
+PACKAGE_STRING='easytag 2.1.1'
+PACKAGE_BUGREPORT=''
+
+ac_unique_file="src/easytag.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar GETTEXT_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP build build_cpu build_vendor build_os host host_cpu host_vendor host_os SED EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP F77 FFLAGS ac_ct_F77 LIBTOOL MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT PKG_CONFIG ac_pt_PKG_CONFIG GLIB_CFLAGS GLIB_LIBS GLIB_GENMARSHAL GOBJECT_QUERY GLIB_MKENUMS GTK_CFLAGS GTK_LIBS OGG_CFLAGS OGG_LIBS VORBIS_CFLAGS VORBIS_LIBS WAVPACK_CFLAGS WAVPACK_LIBS LIBOBJS USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
+ else
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+ fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+ { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+ac_env_PKG_CONFIG_set=${PKG_CONFIG+set}
+ac_env_PKG_CONFIG_value=$PKG_CONFIG
+ac_cv_env_PKG_CONFIG_set=${PKG_CONFIG+set}
+ac_cv_env_PKG_CONFIG_value=$PKG_CONFIG
+ac_env_GTK_CFLAGS_set=${GTK_CFLAGS+set}
+ac_env_GTK_CFLAGS_value=$GTK_CFLAGS
+ac_cv_env_GTK_CFLAGS_set=${GTK_CFLAGS+set}
+ac_cv_env_GTK_CFLAGS_value=$GTK_CFLAGS
+ac_env_GTK_LIBS_set=${GTK_LIBS+set}
+ac_env_GTK_LIBS_value=$GTK_LIBS
+ac_cv_env_GTK_LIBS_set=${GTK_LIBS+set}
+ac_cv_env_GTK_LIBS_value=$GTK_LIBS
+ac_env_OGG_CFLAGS_set=${OGG_CFLAGS+set}
+ac_env_OGG_CFLAGS_value=$OGG_CFLAGS
+ac_cv_env_OGG_CFLAGS_set=${OGG_CFLAGS+set}
+ac_cv_env_OGG_CFLAGS_value=$OGG_CFLAGS
+ac_env_OGG_LIBS_set=${OGG_LIBS+set}
+ac_env_OGG_LIBS_value=$OGG_LIBS
+ac_cv_env_OGG_LIBS_set=${OGG_LIBS+set}
+ac_cv_env_OGG_LIBS_value=$OGG_LIBS
+ac_env_VORBIS_CFLAGS_set=${VORBIS_CFLAGS+set}
+ac_env_VORBIS_CFLAGS_value=$VORBIS_CFLAGS
+ac_cv_env_VORBIS_CFLAGS_set=${VORBIS_CFLAGS+set}
+ac_cv_env_VORBIS_CFLAGS_value=$VORBIS_CFLAGS
+ac_env_VORBIS_LIBS_set=${VORBIS_LIBS+set}
+ac_env_VORBIS_LIBS_value=$VORBIS_LIBS
+ac_cv_env_VORBIS_LIBS_set=${VORBIS_LIBS+set}
+ac_cv_env_VORBIS_LIBS_value=$VORBIS_LIBS
+ac_env_WAVPACK_CFLAGS_set=${WAVPACK_CFLAGS+set}
+ac_env_WAVPACK_CFLAGS_value=$WAVPACK_CFLAGS
+ac_cv_env_WAVPACK_CFLAGS_set=${WAVPACK_CFLAGS+set}
+ac_cv_env_WAVPACK_CFLAGS_value=$WAVPACK_CFLAGS
+ac_env_WAVPACK_LIBS_set=${WAVPACK_LIBS+set}
+ac_env_WAVPACK_LIBS_value=$WAVPACK_LIBS
+ac_cv_env_WAVPACK_LIBS_set=${WAVPACK_LIBS+set}
+ac_cv_env_WAVPACK_LIBS_value=$WAVPACK_LIBS
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures easytag 2.1.1 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+ cat <<_ACEOF
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of easytag 2.1.1:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-shared[=PKGS]
+ build shared libraries [default=no]
+ --enable-static[=PKGS]
+ build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --disable-mp3 Disable support for MP3 files (default=enabled)
+ --disable-id3v23 Disable support for writing id3v2.3 tags
+ (default=enabled)
+ --disable-ogg Disable support for Ogg Vorbis files
+ (default=enabled)
+ --disable-speex Disable support for Ogg Speex files
+ (default=enabled)
+ --disable-flac Disable support for FLAC files (default=enabled)
+ --disable-mp4 Disable support for MP4 files (default=enabled)
+ --disable-wavpack Disable support for Wavpack files (default=enabled)
+ --disable-glibtest do not try to compile and run a test GLIB program
+ --disable-gtktest do not try to compile and run a test GTK+ program
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-tags[=TAGS]
+ include additional configurations [automatic]
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ CPP C preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
+ PKG_CONFIG path to pkg-config utility
+ GTK_CFLAGS C compiler flags for GTK, overriding pkg-config
+ GTK_LIBS linker flags for GTK, overriding pkg-config
+ OGG_CFLAGS C compiler flags for OGG, overriding pkg-config
+ OGG_LIBS linker flags for OGG, overriding pkg-config
+ VORBIS_CFLAGS
+ C compiler flags for VORBIS, overriding pkg-config
+ VORBIS_LIBS linker flags for VORBIS, overriding pkg-config
+ WAVPACK_CFLAGS
+ C compiler flags for WAVPACK, overriding pkg-config
+ WAVPACK_LIBS
+ linker flags for WAVPACK, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d $ac_dir || continue
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+ cd $ac_dir
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_srcdir/configure.gnu; then
+ echo
+ $SHELL $ac_srcdir/configure.gnu --help=recursive
+ elif test -f $ac_srcdir/configure; then
+ echo
+ $SHELL $ac_srcdir/configure --help=recursive
+ elif test -f $ac_srcdir/configure.ac ||
+ test -f $ac_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\_ACEOF
+easytag configure 2.1.1
+generated by GNU Autoconf 2.59
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by easytag $as_me 2.1.1, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ # Get rid of the leading space.
+ ac_sep=" "
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+}
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ sed "/^$/d" confdefs.h | sort
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core &&
+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+ eval ac_new_val="\$ac_env_${ac_var}_value"
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+am__api_version="1.9"
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f $ac_dir/shtool; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+ program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+all:
+ @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='easytag'
+ VERSION='2.1.1'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+ALL_LINGUAS="bg cs da de el es fr he hu it ja nl pl pt_BR ro ru sv uk zh_CN"
+GETTEXT_PACKAGE=easytag
+
+
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+_ACEOF
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CC" && break
+done
+
+ CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Find the output, starting from the most likely. This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+ ;;
+ conftest.$ac_ext )
+ # This is the source file.
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
+ * )
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+ enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+
+depcc="$CC" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+all:
+ @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=no
+fi;
+
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+ enableval="$enable_static"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+ enableval="$enable_fast_install"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi;
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+ ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+ ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix3*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line 4548 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ lt_cv_cc_needs_belf=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ---------------------------------- ##
+## Report this to the easytag lists. ##
+## ---------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$F77" && break
+ done
+fi
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_F77" && break
+done
+
+ F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:5683:" \
+ "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_f77_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+ echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDGIRSTW]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+ echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ AR=$ac_ct_AR
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+ withval="$with_pic"
+ pic_mode="$withval"
+else
+ pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:6746: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:6750: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic='-qnocommon'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7014: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:7018: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works=yes
+ fi
+ else
+ lt_prog_compiler_static_works=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7118: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:7122: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+ enable_shared_with_static_runtimes=no
+ archive_cmds=
+ archive_expsym_cmds=
+ old_archive_From_new_cmds=
+ old_archive_from_expsyms_cmds=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ thread_safe_flag_spec=
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_direct=no
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ link_all_deplibs=unknown
+ hardcode_automatic=no
+ module_cmds=
+ module_expsym_cmds=
+ always_export_symbols=no
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ openbsd*)
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 8587 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+ test -n "$runpath_var" || \
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 9484 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 9584 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# Report which library types will actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler \
+ CC \
+ LD \
+ lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
+ lt_prog_compiler_static \
+ lt_prog_compiler_no_builtin_flag \
+ export_dynamic_flag_spec \
+ thread_safe_flag_spec \
+ whole_archive_flag_spec \
+ enable_shared_with_static_runtimes \
+ old_archive_cmds \
+ old_archive_from_new_cmds \
+ predep_objects \
+ postdep_objects \
+ predeps \
+ postdeps \
+ compiler_lib_search_path \
+ archive_cmds \
+ archive_expsym_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ old_archive_from_expsyms_cmds \
+ allow_undefined_flag \
+ no_undefined_flag \
+ export_symbols_cmds \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+ hardcode_automatic \
+ module_cmds \
+ module_expsym_cmds \
+ lt_cv_prog_compiler_c_o \
+ exclude_expsyms \
+ include_expsyms; do
+
+ case $var in
+ old_archive_cmds | \
+ old_archive_from_new_cmds | \
+ archive_cmds | \
+ archive_expsym_cmds | \
+ module_cmds | \
+ module_expsym_cmds | \
+ old_archive_from_expsyms_cmds | \
+ export_symbols_cmds | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+ cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+ withval="$with_tags"
+ tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+ else
+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+ "") ;;
+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+ lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_CXX=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_CXX=''
+ hardcode_direct_CXX=yes
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_CXX=yes
+ else
+ # We have old collect2
+ hardcode_direct_CXX=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_CXX=yes
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_CXX=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_CXX='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX='$convenience'
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_CXX=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=no
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ whole_archive_flag_spec_CXX=''
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+ ;;
+ *)
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ interix3*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ link_all_deplibs_CXX=yes
+ ;;
+ esac
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ ld_shlibs_CXX=no
+ ;;
+ openbsd*)
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag_CXX='${wl}-z,text'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ no_undefined_flag_CXX='${wl}-z,text'
+ allow_undefined_flag_CXX='${wl}-z,nodefs'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ export_dynamic_flag_spec_CXX='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$compiler_lib_search_path_CXX"; then
+ compiler_lib_search_path_CXX="${prev}${p}"
+ else
+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$postdeps_CXX"; then
+ postdeps_CXX="${prev}${p}"
+ else
+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$predep_objects_CXX"; then
+ predep_objects_CXX="$p"
+ else
+ predep_objects_CXX="$predep_objects_CXX $p"
+ fi
+ else
+ if test -z "$postdep_objects_CXX"; then
+ postdep_objects_CXX="$p"
+ else
+ postdep_objects_CXX="$postdep_objects_CXX $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ predep_objects_CXX=
+ postdep_objects_CXX=
+ postdeps_CXX=
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ postdeps_CXX='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_CXX='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ else
+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_CXX='-qnocommon'
+ lt_prog_compiler_wl_CXX='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fpic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:11927: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:11931: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+ esac
+else
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_CXX=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ else
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6
+
+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+ :
+else
+ lt_prog_compiler_static_CXX=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12031: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:12035: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_CXX=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_CXX in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+ pic_flag=$lt_prog_compiler_pic_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+ allow_undefined_flag_CXX=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_CXX=no
+ else
+ archive_cmds_need_lc_CXX=yes
+ fi
+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 12567 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+ test -n "$runpath_var_CXX" || \
+ test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_CXX=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_CXX=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_CXX \
+ CC_CXX \
+ LD_CXX \
+ lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_pic_CXX \
+ lt_prog_compiler_static_CXX \
+ lt_prog_compiler_no_builtin_flag_CXX \
+ export_dynamic_flag_spec_CXX \
+ thread_safe_flag_spec_CXX \
+ whole_archive_flag_spec_CXX \
+ enable_shared_with_static_runtimes_CXX \
+ old_archive_cmds_CXX \
+ old_archive_from_new_cmds_CXX \
+ predep_objects_CXX \
+ postdep_objects_CXX \
+ predeps_CXX \
+ postdeps_CXX \
+ compiler_lib_search_path_CXX \
+ archive_cmds_CXX \
+ archive_expsym_cmds_CXX \
+ postinstall_cmds_CXX \
+ postuninstall_cmds_CXX \
+ old_archive_from_expsyms_cmds_CXX \
+ allow_undefined_flag_CXX \
+ no_undefined_flag_CXX \
+ export_symbols_cmds_CXX \
+ hardcode_libdir_flag_spec_CXX \
+ hardcode_libdir_flag_spec_ld_CXX \
+ hardcode_libdir_separator_CXX \
+ hardcode_automatic_CXX \
+ module_cmds_CXX \
+ module_expsym_cmds_CXX \
+ lt_cv_prog_compiler_c_o_CXX \
+ exclude_expsyms_CXX \
+ include_expsyms_CXX; do
+
+ case $var in
+ old_archive_cmds_CXX | \
+ old_archive_from_new_cmds_CXX | \
+ archive_cmds_CXX | \
+ archive_expsym_cmds_CXX | \
+ module_cmds_CXX | \
+ module_expsym_cmds_CXX | \
+ old_archive_from_expsyms_cmds_CXX | \
+ export_symbols_cmds_CXX | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_static_F77='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_F77=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_F77=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ else
+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_F77='-qnocommon'
+ lt_prog_compiler_wl_F77='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-fpic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_F77='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_F77='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_F77='-Qoption ld '
+ lt_prog_compiler_pic_F77='-PIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_F77='-Kconform_pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_F77='-pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_F77=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:13625: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:13629: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+ case $lt_prog_compiler_pic_F77 in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+ esac
+else
+ lt_prog_compiler_pic_F77=
+ lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_F77=
+ ;;
+ *)
+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_F77=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ else
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6
+
+if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+ :
+else
+ lt_prog_compiler_static_F77=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:13729: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:13733: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_F77=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_F77=
+ enable_shared_with_static_runtimes_F77=no
+ archive_cmds_F77=
+ archive_expsym_cmds_F77=
+ old_archive_From_new_cmds_F77=
+ old_archive_from_expsyms_cmds_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ thread_safe_flag_spec_F77=
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77=
+ hardcode_libdir_separator_F77=
+ hardcode_direct_F77=no
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=unsupported
+ link_all_deplibs_F77=unknown
+ hardcode_automatic_F77=no
+ module_cmds_F77=
+ module_expsym_cmds_F77=
+ always_export_symbols_F77=no
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_F77=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_F77=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_F77=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_F77=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_F77=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=no
+ enable_shared_with_static_runtimes_F77=yes
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_F77=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_F77" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=yes
+ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_F77=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_F77=''
+ hardcode_direct_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_F77=yes
+ else
+ # We have old collect2
+ hardcode_direct_F77=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_F77=yes
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_libdir_separator_F77=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_F77=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_F77='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_F77="-z nodefs"
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_F77=' ${wl}-bernotok'
+ allow_undefined_flag_F77=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77='$convenience'
+ archive_cmds_need_lc_F77=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_F77=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_F77=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_F77=' '
+ allow_undefined_flag_F77=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_F77='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_F77=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_F77=no
+ hardcode_direct_F77=no
+ hardcode_automatic_F77=yes
+ hardcode_shlibpath_var_F77=unsupported
+ whole_archive_flag_spec_F77=''
+ link_all_deplibs_F77=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_F77=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ *)
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ link_all_deplibs_F77=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ newsos6)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ solaris*)
+ no_undefined_flag_F77=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_shlibpath_var_F77=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_F77='$CC -r -o $output$reload_objs'
+ hardcode_direct_F77=no
+ ;;
+ motorola)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_F77=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z,text'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_F77='${wl}-z,text'
+ allow_undefined_flag_F77='${wl}-z,nodefs'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_F77=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_F77 in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_F77
+ pic_flag=$lt_prog_compiler_pic_F77
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+ allow_undefined_flag_F77=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_F77=no
+ else
+ archive_cmds_need_lc_F77=yes
+ fi
+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 15178 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+ test -n "$runpath_var_F77" || \
+ test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_F77" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+ test "$hardcode_minus_L_F77" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_F77=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_F77=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_F77 \
+ CC_F77 \
+ LD_F77 \
+ lt_prog_compiler_wl_F77 \
+ lt_prog_compiler_pic_F77 \
+ lt_prog_compiler_static_F77 \
+ lt_prog_compiler_no_builtin_flag_F77 \
+ export_dynamic_flag_spec_F77 \
+ thread_safe_flag_spec_F77 \
+ whole_archive_flag_spec_F77 \
+ enable_shared_with_static_runtimes_F77 \
+ old_archive_cmds_F77 \
+ old_archive_from_new_cmds_F77 \
+ predep_objects_F77 \
+ postdep_objects_F77 \
+ predeps_F77 \
+ postdeps_F77 \
+ compiler_lib_search_path_F77 \
+ archive_cmds_F77 \
+ archive_expsym_cmds_F77 \
+ postinstall_cmds_F77 \
+ postuninstall_cmds_F77 \
+ old_archive_from_expsyms_cmds_F77 \
+ allow_undefined_flag_F77 \
+ no_undefined_flag_F77 \
+ export_symbols_cmds_F77 \
+ hardcode_libdir_flag_spec_F77 \
+ hardcode_libdir_flag_spec_ld_F77 \
+ hardcode_libdir_separator_F77 \
+ hardcode_automatic_F77 \
+ module_cmds_F77 \
+ module_expsym_cmds_F77 \
+ lt_cv_prog_compiler_c_o_F77 \
+ exclude_expsyms_F77 \
+ include_expsyms_F77; do
+
+ case $var in
+ old_archive_cmds_F77 | \
+ old_archive_from_new_cmds_F77 | \
+ archive_cmds_F77 | \
+ archive_expsym_cmds_F77 | \
+ module_cmds_F77 | \
+ module_expsym_cmds_F77 | \
+ old_archive_from_expsyms_cmds_F77 | \
+ export_symbols_cmds_F77 | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:15956: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:15960: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_static_GCJ='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_GCJ='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_GCJ=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_GCJ=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ else
+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_GCJ='-qnocommon'
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-fpic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_GCJ='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld '
+ lt_prog_compiler_pic_GCJ='-PIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_GCJ='-Kconform_pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_GCJ='-pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_GCJ=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:16224: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:16228: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+ case $lt_prog_compiler_pic_GCJ in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+ esac
+else
+ lt_prog_compiler_pic_GCJ=
+ lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_GCJ=
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_GCJ=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ else
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+ :
+else
+ lt_prog_compiler_static_GCJ=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_GCJ=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:16328: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:16332: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_GCJ=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_GCJ=
+ enable_shared_with_static_runtimes_GCJ=no
+ archive_cmds_GCJ=
+ archive_expsym_cmds_GCJ=
+ old_archive_From_new_cmds_GCJ=
+ old_archive_from_expsyms_cmds_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ thread_safe_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_ld_GCJ=
+ hardcode_libdir_separator_GCJ=
+ hardcode_direct_GCJ=no
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=unsupported
+ link_all_deplibs_GCJ=unknown
+ hardcode_automatic_GCJ=no
+ module_cmds_GCJ=
+ module_expsym_cmds_GCJ=
+ always_export_symbols_GCJ=no
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_GCJ=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_GCJ=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_GCJ=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_GCJ=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_GCJ=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=no
+ enable_shared_with_static_runtimes_GCJ=yes
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_GCJ=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_GCJ" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=yes
+ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_GCJ=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_GCJ=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_GCJ=''
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_GCJ=yes
+ else
+ # We have old collect2
+ hardcode_direct_GCJ=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_libdir_separator_GCJ=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_GCJ=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_GCJ='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_GCJ="-z nodefs"
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_GCJ=' ${wl}-bernotok'
+ allow_undefined_flag_GCJ=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_GCJ='$convenience'
+ archive_cmds_need_lc_GCJ=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_GCJ=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_GCJ=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ=' '
+ allow_undefined_flag_GCJ=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_GCJ='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_GCJ=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_GCJ=no
+ hardcode_direct_GCJ=no
+ hardcode_automatic_GCJ=yes
+ hardcode_shlibpath_var_GCJ=unsupported
+ whole_archive_flag_spec_GCJ=''
+ link_all_deplibs_GCJ=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_GCJ=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+ *)
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ newsos6)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ allow_undefined_flag_GCJ=unsupported
+ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ solaris*)
+ no_undefined_flag_GCJ=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+ hardcode_direct_GCJ=no
+ ;;
+ motorola)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_GCJ=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z,text'
+ archive_cmds_need_lc_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_GCJ='${wl}-z,text'
+ allow_undefined_flag_GCJ='${wl}-z,nodefs'
+ archive_cmds_need_lc_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_GCJ=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_GCJ in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_GCJ
+ pic_flag=$lt_prog_compiler_pic_GCJ
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+ allow_undefined_flag_GCJ=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_GCJ=no
+ else
+ archive_cmds_need_lc_GCJ=yes
+ fi
+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 17797 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+ test -n "$runpath_var_GCJ" || \
+ test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_GCJ" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+ test "$hardcode_minus_L_GCJ" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_GCJ=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_GCJ=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_GCJ \
+ CC_GCJ \
+ LD_GCJ \
+ lt_prog_compiler_wl_GCJ \
+ lt_prog_compiler_pic_GCJ \
+ lt_prog_compiler_static_GCJ \
+ lt_prog_compiler_no_builtin_flag_GCJ \
+ export_dynamic_flag_spec_GCJ \
+ thread_safe_flag_spec_GCJ \
+ whole_archive_flag_spec_GCJ \
+ enable_shared_with_static_runtimes_GCJ \
+ old_archive_cmds_GCJ \
+ old_archive_from_new_cmds_GCJ \
+ predep_objects_GCJ \
+ postdep_objects_GCJ \
+ predeps_GCJ \
+ postdeps_GCJ \
+ compiler_lib_search_path_GCJ \
+ archive_cmds_GCJ \
+ archive_expsym_cmds_GCJ \
+ postinstall_cmds_GCJ \
+ postuninstall_cmds_GCJ \
+ old_archive_from_expsyms_cmds_GCJ \
+ allow_undefined_flag_GCJ \
+ no_undefined_flag_GCJ \
+ export_symbols_cmds_GCJ \
+ hardcode_libdir_flag_spec_GCJ \
+ hardcode_libdir_flag_spec_ld_GCJ \
+ hardcode_libdir_separator_GCJ \
+ hardcode_automatic_GCJ \
+ module_cmds_GCJ \
+ module_expsym_cmds_GCJ \
+ lt_cv_prog_compiler_c_o_GCJ \
+ exclude_expsyms_GCJ \
+ include_expsyms_GCJ; do
+
+ case $var in
+ old_archive_cmds_GCJ | \
+ old_archive_from_new_cmds_GCJ | \
+ archive_cmds_GCJ | \
+ archive_expsym_cmds_GCJ | \
+ module_cmds_GCJ | \
+ module_expsym_cmds_GCJ | \
+ old_archive_from_expsyms_cmds_GCJ | \
+ export_symbols_cmds_GCJ | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_RC \
+ CC_RC \
+ LD_RC \
+ lt_prog_compiler_wl_RC \
+ lt_prog_compiler_pic_RC \
+ lt_prog_compiler_static_RC \
+ lt_prog_compiler_no_builtin_flag_RC \
+ export_dynamic_flag_spec_RC \
+ thread_safe_flag_spec_RC \
+ whole_archive_flag_spec_RC \
+ enable_shared_with_static_runtimes_RC \
+ old_archive_cmds_RC \
+ old_archive_from_new_cmds_RC \
+ predep_objects_RC \
+ postdep_objects_RC \
+ predeps_RC \
+ postdeps_RC \
+ compiler_lib_search_path_RC \
+ archive_cmds_RC \
+ archive_expsym_cmds_RC \
+ postinstall_cmds_RC \
+ postuninstall_cmds_RC \
+ old_archive_from_expsyms_cmds_RC \
+ allow_undefined_flag_RC \
+ no_undefined_flag_RC \
+ export_symbols_cmds_RC \
+ hardcode_libdir_flag_spec_RC \
+ hardcode_libdir_flag_spec_ld_RC \
+ hardcode_libdir_separator_RC \
+ hardcode_automatic_RC \
+ module_cmds_RC \
+ module_expsym_cmds_RC \
+ lt_cv_prog_compiler_c_o_RC \
+ exclude_expsyms_RC \
+ include_expsyms_RC; do
+
+ case $var in
+ old_archive_cmds_RC | \
+ old_archive_from_new_cmds_RC | \
+ archive_cmds_RC | \
+ archive_expsym_cmds_RC | \
+ module_cmds_RC | \
+ module_expsym_cmds_RC | \
+ old_archive_from_expsyms_cmds_RC | \
+ export_symbols_cmds_RC | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ ;;
+
+ *)
+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking for library containing strerror" >&5
+echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
+if test "${ac_cv_search_strerror+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_strerror=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strerror ();
+int
+main ()
+{
+strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_strerror="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_strerror" = no; then
+ for ac_lib in cposix; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strerror ();
+int
+main ()
+{
+strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_strerror="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+echo "${ECHO_T}$ac_cv_search_strerror" >&6
+if test "$ac_cv_search_strerror" != no; then
+ test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
+
+fi
+
+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+ enableval="$enable_maintainer_mode"
+ USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi;
+ echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
+
+
+if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+
+# Check whether --enable-mp3 or --disable-mp3 was given.
+if test "${enable_mp3+set}" = set; then
+ enableval="$enable_mp3"
+
+else
+ enable_mp3=yes
+fi;
+
+# Check whether --enable-id3v23 or --disable-id3v23 was given.
+if test "${enable_id3v23+set}" = set; then
+ enableval="$enable_id3v23"
+
+else
+ enable_id3v23=yes
+fi;
+
+# Check whether --enable-ogg or --disable-ogg was given.
+if test "${enable_ogg+set}" = set; then
+ enableval="$enable_ogg"
+
+else
+ enable_ogg=yes
+fi;
+
+# Check whether --enable-speex or --disable-speex was given.
+if test "${enable_speex+set}" = set; then
+ enableval="$enable_speex"
+
+else
+ enable_speex=yes
+fi;
+
+# Check whether --enable-flac or --disable-flac was given.
+if test "${enable_flac+set}" = set; then
+ enableval="$enable_flac"
+
+else
+ enable_flac=yes
+fi;
+
+# Check whether --enable-mp4 or --disable-mp4 was given.
+if test "${enable_mp4+set}" = set; then
+ enableval="$enable_mp4"
+
+else
+ enable_mp4=yes
+fi;
+
+# Check whether --enable-wavpack or --disable-wavpack was given.
+if test "${enable_wavpack+set}" = set; then
+ enableval="$enable_wavpack"
+
+else
+ enable_wavpack=yes
+fi;
+
+
+
+# Check whether --enable-glibtest or --disable-glibtest was given.
+if test "${enable_glibtest+set}" = set; then
+ enableval="$enable_glibtest"
+
+else
+ enable_glibtest=yes
+fi;
+
+ pkg_config_args=glib-2.0
+ for module in .
+ do
+ case "$module" in
+ gmodule)
+ pkg_config_args="$pkg_config_args gmodule-2.0"
+ ;;
+ gmodule-no-export)
+ pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
+ ;;
+ gobject)
+ pkg_config_args="$pkg_config_args gobject-2.0"
+ ;;
+ gthread)
+ pkg_config_args="$pkg_config_args gthread-2.0"
+ ;;
+ esac
+ done
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+
+if test -n "$ac_pt_PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.7
+ echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ PKG_CONFIG=""
+ fi
+
+fi
+
+ no_glib=""
+
+ if test "x$PKG_CONFIG" = x ; then
+ no_glib=yes
+ PKG_CONFIG=no
+ fi
+
+ min_glib_version=2.8.0
+ echo "$as_me:$LINENO: checking for GLIB - version >= $min_glib_version" >&5
+echo $ECHO_N "checking for GLIB - version >= $min_glib_version... $ECHO_C" >&6
+
+ if test x$PKG_CONFIG != xno ; then
+ ## don't try to run the test against uninstalled libtool libs
+ if $PKG_CONFIG --uninstalled $pkg_config_args; then
+ echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+ enable_glibtest=no
+ fi
+
+ if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+ :
+ else
+ no_glib=yes
+ fi
+ fi
+
+ if test x"$no_glib" = x ; then
+ GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+ GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+ GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+
+ GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+ GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+ glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+ glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+ glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+ if test "x$enable_glibtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$GLIB_LIBS $LIBS"
+ rm -f conf.glibtest
+ if test "$cross_compiling" = yes; then
+ echo $ac_n "cross compiling; assumed OK... $ac_c"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.glibtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = g_strdup("$min_glib_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_glib_version");
+ exit(1);
+ }
+
+ if ((glib_major_version != $glib_config_major_version) ||
+ (glib_minor_version != $glib_config_minor_version) ||
+ (glib_micro_version != $glib_config_micro_version))
+ {
+ printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
+ $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf ("*** was found! If pkg-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+ printf("*** to point to the correct configuration files\n");
+ }
+ else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+ (glib_minor_version != GLIB_MINOR_VERSION) ||
+ (glib_micro_version != GLIB_MICRO_VERSION))
+ {
+ printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+ GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ }
+ else
+ {
+ if ((glib_major_version > major) ||
+ ((glib_major_version == major) && (glib_minor_version > minor)) ||
+ ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+ printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+no_glib=yes
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_glib" = x ; then
+ echo "$as_me:$LINENO: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5
+echo "${ECHO_T}yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6
+ :
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** A new enough version of pkg-config was not found."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+ else
+ if test -f conf.glibtest ; then
+ :
+ else
+ echo "*** Could not run GLIB test program, checking why..."
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$LIBS $GLIB_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <glib.h>
+#include <stdio.h>
+
+int
+main ()
+{
+ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+ echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GLIB is incorrectly installed."
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GLIB_CFLAGS=""
+ GLIB_LIBS=""
+ GLIB_GENMARSHAL=""
+ GOBJECT_QUERY=""
+ GLIB_MKENUMS=""
+ { { echo "$as_me:$LINENO: error: *** GLIB >= 2.8.0 not installed! ***" >&5
+echo "$as_me: error: *** GLIB >= 2.8.0 not installed! ***" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+
+
+
+
+ rm -f conf.glibtest
+
+# Check whether --enable-gtktest or --disable-gtktest was given.
+if test "${enable_gtktest+set}" = set; then
+ enableval="$enable_gtktest"
+
+else
+ enable_gtktest=yes
+fi;
+
+ pkg_config_args=gtk+-2.0
+ for module in .
+ do
+ case "$module" in
+ gthread)
+ pkg_config_args="$pkg_config_args gthread-2.0"
+ ;;
+ esac
+ done
+
+ no_gtk=""
+
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x$PKG_CONFIG != xno ; then
+ if pkg-config --atleast-pkgconfig-version 0.7 ; then
+ :
+ else
+ echo "*** pkg-config too old; version 0.7 or better required."
+ no_gtk=yes
+ PKG_CONFIG=no
+ fi
+ else
+ no_gtk=yes
+ fi
+
+ min_gtk_version=2.4.1
+ echo "$as_me:$LINENO: checking for GTK+ - version >= $min_gtk_version" >&5
+echo $ECHO_N "checking for GTK+ - version >= $min_gtk_version... $ECHO_C" >&6
+
+ if test x$PKG_CONFIG != xno ; then
+ ## don't try to run the test against uninstalled libtool libs
+ if $PKG_CONFIG --uninstalled $pkg_config_args; then
+ echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
+ enable_gtktest=no
+ fi
+
+ if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
+ :
+ else
+ no_gtk=yes
+ fi
+ fi
+
+ if test x"$no_gtk" = x ; then
+ GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
+ GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
+ gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+ gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+ gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+ if test "x$enable_gtktest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ LIBS="$GTK_LIBS $LIBS"
+ rm -f conf.gtktest
+ if test "$cross_compiling" = yes; then
+ echo $ac_n "cross compiling; assumed OK... $ac_c"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.gtktest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = g_strdup("$min_gtk_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_gtk_version");
+ exit(1);
+ }
+
+ if ((gtk_major_version != $gtk_config_major_version) ||
+ (gtk_minor_version != $gtk_config_minor_version) ||
+ (gtk_micro_version != $gtk_config_micro_version))
+ {
+ printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
+ $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ printf ("*** was found! If pkg-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+ printf("*** to point to the correct configuration files\n");
+ }
+ else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+ (gtk_minor_version != GTK_MINOR_VERSION) ||
+ (gtk_micro_version != GTK_MICRO_VERSION))
+ {
+ printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+ GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ }
+ else
+ {
+ if ((gtk_major_version > major) ||
+ ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+ ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
+ printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+no_gtk=yes
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_gtk" = x ; then
+ echo "$as_me:$LINENO: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5
+echo "${ECHO_T}yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6
+ :
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** A new enough version of pkg-config was not found."
+ echo "*** See http://pkgconfig.sourceforge.net"
+ else
+ if test -f conf.gtktest ; then
+ :
+ else
+ echo "*** Could not run GTK+ test program, checking why..."
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ LIBS="$LIBS $GTK_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <gtk/gtk.h>
+#include <stdio.h>
+
+int
+main ()
+{
+ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
+ echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GTK_CFLAGS=""
+ GTK_LIBS=""
+ { { echo "$as_me:$LINENO: error: *** GTK >= 2.4.1 not installed! ***" >&5
+echo "$as_me: error: *** GTK >= 2.4.1 not installed! ***" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+
+ rm -f conf.gtktest
+
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for GTK" >&5
+echo $ECHO_N "checking for GTK... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GTK_CFLAGS"; then
+ pkg_cv_GTK_CFLAGS="$GTK_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GTK_LIBS"; then
+ pkg_cv_GTK_LIBS="$GTK_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1"`
+ else
+ GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTK_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1) were not met:
+
+$GTK_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1) were not met:
+
+$GTK_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
+ GTK_LIBS=$pkg_cv_GTK_LIBS
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ :
+fi
+
+
+
+echo "$as_me:$LINENO: checking for recv in -lsocket" >&5
+echo $ECHO_N "checking for recv in -lsocket... $ECHO_C" >&6
+if test "${ac_cv_lib_socket_recv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char recv ();
+int
+main ()
+{
+recv ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_socket_recv=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_socket_recv=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_socket_recv" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_recv" >&6
+if test $ac_cv_lib_socket_recv = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSOCKET 1
+_ACEOF
+
+ LIBS="-lsocket $LIBS"
+
+fi
+
+
+
+
+if test "x$enable_ogg" = "xyes" -o "x$enable_flac" = "xyes"; then
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for OGG" >&5
+echo $ECHO_N "checking for OGG... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$OGG_CFLAGS"; then
+ pkg_cv_OGG_CFLAGS="$OGG_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ogg >= 1.0\"") >&5
+ ($PKG_CONFIG --exists --print-errors "ogg >= 1.0") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_OGG_CFLAGS=`$PKG_CONFIG --cflags "ogg >= 1.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$OGG_LIBS"; then
+ pkg_cv_OGG_LIBS="$OGG_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ogg >= 1.0\"") >&5
+ ($PKG_CONFIG --exists --print-errors "ogg >= 1.0") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_OGG_LIBS=`$PKG_CONFIG --libs "ogg >= 1.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ OGG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ogg >= 1.0"`
+ else
+ OGG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ogg >= 1.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$OGG_PKG_ERRORS" >&5
+
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ogg_available=no
+elif test $pkg_failed = untried; then
+ ogg_available=no
+else
+ OGG_CFLAGS=$pkg_cv_OGG_CFLAGS
+ OGG_LIBS=$pkg_cv_OGG_LIBS
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ :
+fi
+ if test "x$ogg_available" = "xno"; then
+ echo "***"
+ echo "*** Warning: libogg >= 1.0 needed"
+ echo "***"
+ fi
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for VORBIS" >&5
+echo $ECHO_N "checking for VORBIS... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$VORBIS_CFLAGS"; then
+ pkg_cv_VORBIS_CFLAGS="$VORBIS_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"vorbis >= 1.0.1\"") >&5
+ ($PKG_CONFIG --exists --print-errors "vorbis >= 1.0.1") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_VORBIS_CFLAGS=`$PKG_CONFIG --cflags "vorbis >= 1.0.1" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$VORBIS_LIBS"; then
+ pkg_cv_VORBIS_LIBS="$VORBIS_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"vorbis >= 1.0.1\"") >&5
+ ($PKG_CONFIG --exists --print-errors "vorbis >= 1.0.1") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_VORBIS_LIBS=`$PKG_CONFIG --libs "vorbis >= 1.0.1" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ VORBIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "vorbis >= 1.0.1"`
+ else
+ VORBIS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "vorbis >= 1.0.1"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$VORBIS_PKG_ERRORS" >&5
+
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ogg_available=no
+elif test $pkg_failed = untried; then
+ ogg_available=no
+else
+ VORBIS_CFLAGS=$pkg_cv_VORBIS_CFLAGS
+ VORBIS_LIBS=$pkg_cv_VORBIS_LIBS
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ :
+fi
+ if test "x$ogg_available" = "xno"; then
+ echo "***"
+ echo "*** Warning: libvorbis >= 1.0.1 needed"
+ echo "***"
+ fi
+
+echo "$as_me:$LINENO: checking for cos in -lm" >&5
+echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_cos+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char cos ();
+int
+main ()
+{
+cos ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_cos=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_cos=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5
+echo "${ECHO_T}$ac_cv_lib_m_cos" >&6
+if test $ac_cv_lib_m_cos = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+echo "$as_me:$LINENO: checking for ogg_sync_init in -logg" >&5
+echo $ECHO_N "checking for ogg_sync_init in -logg... $ECHO_C" >&6
+if test "${ac_cv_lib_ogg_ogg_sync_init+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-logg $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char ogg_sync_init ();
+int
+main ()
+{
+ogg_sync_init ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_ogg_ogg_sync_init=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_ogg_ogg_sync_init=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_ogg_ogg_sync_init" >&5
+echo "${ECHO_T}$ac_cv_lib_ogg_ogg_sync_init" >&6
+if test $ac_cv_lib_ogg_ogg_sync_init = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBOGG 1
+_ACEOF
+
+ LIBS="-logg $LIBS"
+
+else
+ ogg_available=no
+fi
+
+
+echo "$as_me:$LINENO: checking for vorbis_comment_init in -lvorbis" >&5
+echo $ECHO_N "checking for vorbis_comment_init in -lvorbis... $ECHO_C" >&6
+if test "${ac_cv_lib_vorbis_vorbis_comment_init+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lvorbis $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char vorbis_comment_init ();
+int
+main ()
+{
+vorbis_comment_init ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_vorbis_vorbis_comment_init=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_vorbis_vorbis_comment_init=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_vorbis_vorbis_comment_init" >&5
+echo "${ECHO_T}$ac_cv_lib_vorbis_vorbis_comment_init" >&6
+if test $ac_cv_lib_vorbis_vorbis_comment_init = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBVORBIS 1
+_ACEOF
+
+ LIBS="-lvorbis $LIBS"
+
+else
+ ogg_available=no
+fi
+
+
+echo "$as_me:$LINENO: checking for ov_open in -lvorbisfile" >&5
+echo $ECHO_N "checking for ov_open in -lvorbisfile... $ECHO_C" >&6
+if test "${ac_cv_lib_vorbisfile_ov_open+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lvorbisfile $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char ov_open ();
+int
+main ()
+{
+ov_open ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_vorbisfile_ov_open=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_vorbisfile_ov_open=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_vorbisfile_ov_open" >&5
+echo "${ECHO_T}$ac_cv_lib_vorbisfile_ov_open" >&6
+if test $ac_cv_lib_vorbisfile_ov_open = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBVORBISFILE 1
+_ACEOF
+
+ LIBS="-lvorbisfile $LIBS"
+
+else
+ ogg_available=no
+fi
+
+fi
+
+echo "$as_me:$LINENO: checking for Ogg Vorbis file support" >&5
+echo $ECHO_N "checking for Ogg Vorbis file support... $ECHO_C" >&6
+if test "x$enable_ogg" = "xyes"; then
+ if test "x$ogg_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_ogg="no"
+ echo "***"
+ echo "*** Warning: Ogg Vorbis file support disabled"
+ echo "*** (Install libogg and libvorbis libraries to enable it)"
+ echo "***"
+ else
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_OGG 1
+_ACEOF
+
+ fi
+else
+ echo "***"
+ echo "*** Ogg Vorbis file support disabled on commandline"
+ echo "*** (Install libogg and libvorbis libraries, and use --enable-ogg to enable it)"
+ echo "***"
+fi
+
+
+
+if test "x$enable_speex" = "xyes"; then
+
+echo "$as_me:$LINENO: checking for cos in -lm" >&5
+echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_cos+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char cos ();
+int
+main ()
+{
+cos ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_cos=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_cos=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5
+echo "${ECHO_T}$ac_cv_lib_m_cos" >&6
+if test $ac_cv_lib_m_cos = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+echo "$as_me:$LINENO: checking for speex_packet_to_header in -lspeex" >&5
+echo $ECHO_N "checking for speex_packet_to_header in -lspeex... $ECHO_C" >&6
+if test "${ac_cv_lib_speex_speex_packet_to_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lspeex $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char speex_packet_to_header ();
+int
+main ()
+{
+speex_packet_to_header ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_speex_speex_packet_to_header=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_speex_speex_packet_to_header=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_speex_speex_packet_to_header" >&5
+echo "${ECHO_T}$ac_cv_lib_speex_speex_packet_to_header" >&6
+if test $ac_cv_lib_speex_speex_packet_to_header = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSPEEX 1
+_ACEOF
+
+ LIBS="-lspeex $LIBS"
+
+else
+ speex_available=no
+fi
+
+
+ echo "$as_me:$LINENO: checking for Speex file support" >&5
+echo $ECHO_N "checking for Speex file support... $ECHO_C" >&6
+ if test "x$speex_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_speex="no"
+ echo "***"
+ echo "*** Warning: Speex file support disabled, speex missing"
+ echo "*** (Install speex, libogg and libvorbis libraries to enable it)"
+ echo "***"
+ elif test "x$ogg_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_speex="no"
+ echo "***"
+ echo "*** Warning: Speex file support disabled, libvorbis missing"
+ echo "*** (Install speex, libogg and libvorbis libraries to enable it)"
+ echo "***"
+ else
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_SPEEX 1
+_ACEOF
+
+ fi
+else
+ echo "$as_me:$LINENO: checking for Speex file support" >&5
+echo $ECHO_N "checking for Speex file support... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ echo "***"
+ echo "*** Speex file support disabled on commandline"
+ echo "*** (Install speex, libogg and libvorbis libraries, and use --enable-speex to enable it)"
+ echo "***"
+fi
+
+
+
+if test "x$enable_flac" = "xyes"; then
+
+echo "$as_me:$LINENO: checking for cos in -lm" >&5
+echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_cos+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char cos ();
+int
+main ()
+{
+cos ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_cos=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_cos=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5
+echo "${ECHO_T}$ac_cv_lib_m_cos" >&6
+if test $ac_cv_lib_m_cos = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+echo "$as_me:$LINENO: checking for FLAC__metadata_simple_iterator_new in -lFLAC" >&5
+echo $ECHO_N "checking for FLAC__metadata_simple_iterator_new in -lFLAC... $ECHO_C" >&6
+if test "${ac_cv_lib_FLAC_FLAC__metadata_simple_iterator_new+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lFLAC $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char FLAC__metadata_simple_iterator_new ();
+int
+main ()
+{
+FLAC__metadata_simple_iterator_new ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_FLAC_FLAC__metadata_simple_iterator_new=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_FLAC_FLAC__metadata_simple_iterator_new=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_FLAC_FLAC__metadata_simple_iterator_new" >&5
+echo "${ECHO_T}$ac_cv_lib_FLAC_FLAC__metadata_simple_iterator_new" >&6
+if test $ac_cv_lib_FLAC_FLAC__metadata_simple_iterator_new = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBFLAC 1
+_ACEOF
+
+ LIBS="-lFLAC $LIBS"
+
+else
+ flac_available=no
+fi
+
+
+ echo "$as_me:$LINENO: checking for FLAC file support" >&5
+echo $ECHO_N "checking for FLAC file support... $ECHO_C" >&6
+ if test "x$flac_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_flac="no"
+ echo "***"
+ echo "*** Warning: FLAC file support disabled, libflac missing"
+ echo "*** (Install libflac, libogg and libvorbis libraries to enable it)"
+ echo "***"
+ elif test "x$ogg_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_flac="no"
+ echo "***"
+ echo "*** Warning: FLAC file support disabled, libvorbis missing"
+ echo "*** (Install libflac, libogg and libvorbis libraries to enable it)"
+ echo "***"
+ else
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_FLAC 1
+_ACEOF
+
+ fi
+else
+ echo "$as_me:$LINENO: checking for FLAC file support" >&5
+echo $ECHO_N "checking for FLAC file support... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ echo "***"
+ echo "*** FLAC file support disabled on commandline"
+ echo "*** (Install libflac, libogg and libvorbis libraries, and use --enable-flac to enable it)"
+ echo "***"
+fi
+
+if test "x$enable_flac" = "xyes"; then
+ LIBS_SAVE="$LIBS"
+ CFLAGS_SAVE="$CFLAGS"
+ LIBS="$LIBS $LIBFLAC_LIBS"
+ CFLAGS="$CFLAGS $LIBFLAC_CFLAGS"
+ echo "$as_me:$LINENO: checking for libFLAC version" >&5
+echo $ECHO_N "checking for libFLAC version... $ECHO_C" >&6
+ if test "$cross_compiling" = yes; then
+ echo $ac_n "cross compiling; assuming ${LIBFLAC_MAJOR}.${LIBFLAC_MINOR}.${LIBFLAC_PATCH} $ac_c"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <FLAC/format.h>
+int
+main (void)
+{
+ FILE *output;
+ char tmp[16];
+ int libflac_major, libflac_minor, libflac_patch;
+
+ sprintf(tmp,"%s",FLAC__VERSION_STRING);
+ libflac_major = atoi( (char *)strtok(tmp,".") );
+ libflac_minor = atoi( (char *)strtok(NULL,".") );
+ libflac_patch = atoi( (char *)strtok(NULL,".") );
+ output=fopen("conftest.flac","w");
+ fprintf(output,"LIBFLAC_MAJOR=%d\nLIBFLAC_MINOR=%d\nLIBFLAC_PATCH=%d\n",libflac_major,libflac_minor,libflac_patch);
+ fclose(output);
+ exit(0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ . ./conftest.flac; echo "${LIBFLAC_MAJOR}.${LIBFLAC_MINOR}.${LIBFLAC_PATCH}"
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ echo "$as_me:$LINENO: WARNING: could not determine libFLAC version" >&5
+echo "$as_me: WARNING: could not determine libFLAC version" >&2;}
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+ LIBS="$LIBS_SAVE"
+ CFLAGS="$CFLAGS_SAVE"
+ LIBFLAC_VERSION="(flac-$LIBFLAC_MAJOR.$LIBFLAC_MINOR.$LIBFLAC_PATCH)"
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define LIBFLAC_MAJOR $LIBFLAC_MAJOR
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define LIBFLAC_MINOR $LIBFLAC_MINOR
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define LIBFLAC_PATCH $LIBFLAC_PATCH
+_ACEOF
+
+
+
+if test "x$enable_mp3" = "xyes"; then
+ echo "$as_me:$LINENO: checking for MP3 file support" >&5
+echo $ECHO_N "checking for MP3 file support... $ECHO_C" >&6
+ if test "${ac_cv_header_id3tag_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for id3tag.h" >&5
+echo $ECHO_N "checking for id3tag.h... $ECHO_C" >&6
+if test "${ac_cv_header_id3tag_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_id3tag_h" >&5
+echo "${ECHO_T}$ac_cv_header_id3tag_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking id3tag.h usability" >&5
+echo $ECHO_N "checking id3tag.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <id3tag.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking id3tag.h presence" >&5
+echo $ECHO_N "checking id3tag.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <id3tag.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: id3tag.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: id3tag.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: id3tag.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: id3tag.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: id3tag.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: id3tag.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: id3tag.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: id3tag.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: id3tag.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: id3tag.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: id3tag.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: id3tag.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: id3tag.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: id3tag.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: id3tag.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: id3tag.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ---------------------------------- ##
+## Report this to the easytag lists. ##
+## ---------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for id3tag.h" >&5
+echo $ECHO_N "checking for id3tag.h... $ECHO_C" >&6
+if test "${ac_cv_header_id3tag_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_id3tag_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_id3tag_h" >&5
+echo "${ECHO_T}$ac_cv_header_id3tag_h" >&6
+
+fi
+if test $ac_cv_header_id3tag_h = yes; then
+ :
+else
+ libid3tag_available=no
+fi
+
+
+
+echo "$as_me:$LINENO: checking for id3_frame_field in -lid3tag" >&5
+echo $ECHO_N "checking for id3_frame_field in -lid3tag... $ECHO_C" >&6
+if test "${ac_cv_lib_id3tag_id3_frame_field+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lid3tag -lz $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char id3_frame_field ();
+int
+main ()
+{
+id3_frame_field ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_id3tag_id3_frame_field=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_id3tag_id3_frame_field=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_id3tag_id3_frame_field" >&5
+echo "${ECHO_T}$ac_cv_lib_id3tag_id3_frame_field" >&6
+if test $ac_cv_lib_id3tag_id3_frame_field = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBID3TAG 1
+_ACEOF
+
+ LIBS="-lid3tag $LIBS"
+
+else
+ libid3tag_available=no
+fi
+
+ if test "x$libid3tag_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_mp3="no"
+ echo "***"
+ echo "*** Warning: MP3 file support disabled, libid3tag missing"
+ echo "***"
+ else
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_MP3 1
+_ACEOF
+
+ fi
+
+ if test "x$enable_id3v23" == "xyes"; then
+ echo "$as_me:$LINENO: checking for library containing ID3Tag_Link" >&5
+echo $ECHO_N "checking for library containing ID3Tag_Link... $ECHO_C" >&6
+if test "${ac_cv_search_ID3Tag_Link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_ID3Tag_Link=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char ID3Tag_Link ();
+int
+main ()
+{
+ID3Tag_Link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_ID3Tag_Link="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_ID3Tag_Link" = no; then
+ for ac_lib in "id3" "id3 -lstdc++" "id3 -lz" "id3 -lz -lstdc++"; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char ID3Tag_Link ();
+int
+main ()
+{
+ID3Tag_Link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_ID3Tag_Link="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_ID3Tag_Link" >&5
+echo "${ECHO_T}$ac_cv_search_ID3Tag_Link" >&6
+if test "$ac_cv_search_ID3Tag_Link" != no; then
+ test "$ac_cv_search_ID3Tag_Link" = "none required" || LIBS="$ac_cv_search_ID3Tag_Link $LIBS"
+
+else
+ { echo "$as_me:$LINENO: WARNING: id3lib not found" >&5
+echo "$as_me: WARNING: id3lib not found" >&2;}; id3lib_available=no
+fi
+
+
+ LIBS="-lz -lstdc++ $LIBS"
+
+ ID3LIB_MAJOR=3
+ ID3LIB_MINOR=8
+ ID3LIB_PATCH=0
+
+ echo "$as_me:$LINENO: checking for id3lib version" >&5
+echo $ECHO_N "checking for id3lib version... $ECHO_C" >&6
+ if test "$cross_compiling" = yes; then
+ echo $ac_n "cross compiling; assuming ${ID3LIB_MAJOR}.${ID3LIB_MINOR}.${ID3LIB_PATCH} $ac_c"
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <id3.h>
+ #include <stdio.h>
+ int
+ main ()
+ {
+ FILE *output;
+ output=fopen("conftest.id3","w");
+ fprintf(output,"ID3LIB_MAJOR=%d\nID3LIB_MINOR=%d\nID3LIB_PATCH=%d\n",ID3LIB_MAJOR_VERSION,ID3LIB_MINOR_VERSION,ID3LIB_PATCH_VERSION);
+ fclose(output);
+ exit(0);
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ . ./conftest.id3; echo "${ID3LIB_MAJOR}.${ID3LIB_MINOR}.${ID3LIB_PATCH}"
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ echo "$as_me:$LINENO: WARNING: could not determine id3lib version" >&5
+echo "$as_me: WARNING: could not determine id3lib version" >&2;}; id3lib_available=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define ID3LIB_MAJOR $ID3LIB_MAJOR
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define ID3LIB_MINOR $ID3LIB_MINOR
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define ID3LIB_PATCH $ID3LIB_PATCH
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for MP3 file support" >&5
+echo $ECHO_N "checking for MP3 file support... $ECHO_C" >&6
+ if test "x$id3lib_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ echo "***"
+ echo "*** Warning: id3v23 tags support disabled, id3lib missing"
+ echo "***"
+ else
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_ID3LIB 1
+_ACEOF
+
+ ID3LIB_VERSION="(id3lib-$ID3LIB_MAJOR.$ID3LIB_MINOR.$ID3LIB_PATCH)"
+ fi
+ fi
+fi
+
+
+if test "x$enable_mp4" = "xyes"; then
+
+echo "$as_me:$LINENO: checking for cos in -lm" >&5
+echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_cos+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char cos ();
+int
+main ()
+{
+cos ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_cos=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_cos=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5
+echo "${ECHO_T}$ac_cv_lib_m_cos" >&6
+if test $ac_cv_lib_m_cos = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+
+echo "$as_me:$LINENO: checking for MP4GetTrackMediaDataName in -lmp4v2" >&5
+echo $ECHO_N "checking for MP4GetTrackMediaDataName in -lmp4v2... $ECHO_C" >&6
+if test "${ac_cv_lib_mp4v2_MP4GetTrackMediaDataName+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmp4v2 $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char MP4GetTrackMediaDataName ();
+int
+main ()
+{
+MP4GetTrackMediaDataName ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_mp4v2_MP4GetTrackMediaDataName=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_mp4v2_MP4GetTrackMediaDataName=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_mp4v2_MP4GetTrackMediaDataName" >&5
+echo "${ECHO_T}$ac_cv_lib_mp4v2_MP4GetTrackMediaDataName" >&6
+if test $ac_cv_lib_mp4v2_MP4GetTrackMediaDataName = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBMP4V2 1
+_ACEOF
+
+ LIBS="-lmp4v2 $LIBS"
+
+else
+ mp4_available=no
+fi
+
+fi
+
+echo "$as_me:$LINENO: checking for MP4/AAC file support" >&5
+echo $ECHO_N "checking for MP4/AAC file support... $ECHO_C" >&6
+if test "x$enable_mp4" = "xyes"; then
+ if test "x$mp4_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_mp4="no"
+ echo "***"
+ echo "*** Warning: MP4 file support disabled"
+ echo "*** (Install libmp4v2 to enable it)"
+ echo "***"
+ else
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_MP4 1
+_ACEOF
+
+ fi
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_mp4="no"
+ echo "***"
+ echo "*** MP4 file support disabled on commandline"
+ echo "*** (Install libmp4v2 and use --enable-mp4 to enable it)"
+ echo "***"
+fi
+
+
+if test "x$enable_wavpack" = "xyes"; then
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for WAVPACK" >&5
+echo $ECHO_N "checking for WAVPACK... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$WAVPACK_CFLAGS"; then
+ pkg_cv_WAVPACK_CFLAGS="$WAVPACK_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"wavpack >= 4.40\"") >&5
+ ($PKG_CONFIG --exists --print-errors "wavpack >= 4.40") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_WAVPACK_CFLAGS=`$PKG_CONFIG --cflags "wavpack >= 4.40" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$WAVPACK_LIBS"; then
+ pkg_cv_WAVPACK_LIBS="$WAVPACK_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"wavpack >= 4.40\"") >&5
+ ($PKG_CONFIG --exists --print-errors "wavpack >= 4.40") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_WAVPACK_LIBS=`$PKG_CONFIG --libs "wavpack >= 4.40" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ WAVPACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "wavpack >= 4.40"`
+ else
+ WAVPACK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "wavpack >= 4.40"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$WAVPACK_PKG_ERRORS" >&5
+
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ wavpack_available=no
+elif test $pkg_failed = untried; then
+ wavpack_available=no
+else
+ WAVPACK_CFLAGS=$pkg_cv_WAVPACK_CFLAGS
+ WAVPACK_LIBS=$pkg_cv_WAVPACK_LIBS
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ :
+fi
+ if test "x$wavpack_available" = "xno"; then
+ echo "***"
+ echo "*** Warning: wavpack >= 4.40 needed"
+ echo "***"
+ fi
+
+echo "$as_me:$LINENO: checking for cos in -lm" >&5
+echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_cos+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char cos ();
+int
+main ()
+{
+cos ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_cos=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_cos=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5
+echo "${ECHO_T}$ac_cv_lib_m_cos" >&6
+if test $ac_cv_lib_m_cos = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+
+echo "$as_me:$LINENO: checking for WavpackOpenFileInput in -lwavpack" >&5
+echo $ECHO_N "checking for WavpackOpenFileInput in -lwavpack... $ECHO_C" >&6
+if test "${ac_cv_lib_wavpack_WavpackOpenFileInput+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lwavpack $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char WavpackOpenFileInput ();
+int
+main ()
+{
+WavpackOpenFileInput ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_wavpack_WavpackOpenFileInput=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_wavpack_WavpackOpenFileInput=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_wavpack_WavpackOpenFileInput" >&5
+echo "${ECHO_T}$ac_cv_lib_wavpack_WavpackOpenFileInput" >&6
+if test $ac_cv_lib_wavpack_WavpackOpenFileInput = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBWAVPACK 1
+_ACEOF
+
+ LIBS="-lwavpack $LIBS"
+
+else
+ wavpack_available=no
+fi
+
+fi
+
+echo "$as_me:$LINENO: checking for Wavpack file support" >&5
+echo $ECHO_N "checking for Wavpack file support... $ECHO_C" >&6
+if test "x$enable_wavpack" = "xyes"; then
+ if test "x$wavpack_available" = "xno"; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_wavpack="no"
+ echo "***"
+ echo "*** Warning: Wavpack file support disabled"
+ echo "*** (Install libwavpack to enable it)"
+ echo "***"
+ else
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_WAVPACK 1
+_ACEOF
+
+ fi
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ enable_wavpack="no"
+ echo "***"
+ echo "*** Wavpack file support disabled on commandline"
+ echo "*** (Install libwavpack, and use --enable-wavpack to enable it)"
+ echo "***"
+fi
+
+if test "x$GCC" = "xyes"; then
+ case " $CFLAGS " in
+ *[\ \ ]-Wall[\ \ ]*) ;;
+ *) CFLAGS="$CFLAGS -Wall" ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in dir; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+else
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in x; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+fi
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+
+
+for ac_header in fcntl.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ---------------------------------- ##
+## Report this to the easytag lists. ##
+## ---------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+ const charset x;
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *ccp;
+ char **p;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ ccp = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++ccp;
+ p = (char**) ccp;
+ ccp = (char const *const *) p;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; };
+ struct s *b; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ }
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_const=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_const=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define const
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for mode_t" >&5
+echo $ECHO_N "checking for mode_t... $ECHO_C" >&6
+if test "${ac_cv_type_mode_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((mode_t *) 0)
+ return 0;
+if (sizeof (mode_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_mode_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_mode_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
+echo "${ECHO_T}$ac_cv_type_mode_t" >&6
+if test $ac_cv_type_mode_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define mode_t int
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for pid_t" >&5
+echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
+if test "${ac_cv_type_pid_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((pid_t *) 0)
+ return 0;
+if (sizeof (pid_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_pid_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_pid_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
+echo "${ECHO_T}$ac_cv_type_pid_t" >&6
+if test $ac_cv_type_pid_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((size_t *) 0)
+ return 0;
+if (sizeof (size_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_size_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_size_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
+echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6
+if test "${ac_cv_struct_tm+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm *tp; tp->tm_sec;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_struct_tm=time.h
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_struct_tm=sys/time.h
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
+echo "${ECHO_T}$ac_cv_struct_tm" >&6
+if test $ac_cv_struct_tm = sys/time.h; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TM_IN_SYS_TIME 1
+_ACEOF
+
+fi
+
+
+
+
+
+for ac_header in unistd.h vfork.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ---------------------------------- ##
+## Report this to the easytag lists. ##
+## ---------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_func in fork vfork
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+if test "x$ac_cv_func_fork" = xyes; then
+ echo "$as_me:$LINENO: checking for working fork" >&5
+echo $ECHO_N "checking for working fork... $ECHO_C" >&6
+if test "${ac_cv_func_fork_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_fork_works=cross
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* By Ruediger Kuhlmann. */
+ #include <sys/types.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+ /* Some systems only have a dummy stub for fork() */
+ int main ()
+ {
+ if (fork() < 0)
+ exit (1);
+ exit (0);
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_fork_works=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_fork_works=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5
+echo "${ECHO_T}$ac_cv_func_fork_works" >&6
+
+else
+ ac_cv_func_fork_works=$ac_cv_func_fork
+fi
+if test "x$ac_cv_func_fork_works" = xcross; then
+ case $host in
+ *-*-amigaos* | *-*-msdosdjgpp*)
+ # Override, as these systems have only a dummy fork() stub
+ ac_cv_func_fork_works=no
+ ;;
+ *)
+ ac_cv_func_fork_works=yes
+ ;;
+ esac
+ { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
+echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
+fi
+ac_cv_func_vfork_works=$ac_cv_func_vfork
+if test "x$ac_cv_func_vfork" = xyes; then
+ echo "$as_me:$LINENO: checking for working vfork" >&5
+echo $ECHO_N "checking for working vfork... $ECHO_C" >&6
+if test "${ac_cv_func_vfork_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_vfork_works=cross
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Thanks to Paul Eggert for this test. */
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#if HAVE_VFORK_H
+# include <vfork.h>
+#endif
+/* On some sparc systems, changes by the child to local and incoming
+ argument registers are propagated back to the parent. The compiler
+ is told about this with #include <vfork.h>, but some compilers
+ (e.g. gcc -O) don't grok <vfork.h>. Test for this by using a
+ static variable whose address is put into a register that is
+ clobbered by the vfork. */
+static void
+#ifdef __cplusplus
+sparc_address_test (int arg)
+# else
+sparc_address_test (arg) int arg;
+#endif
+{
+ static pid_t child;
+ if (!child) {
+ child = vfork ();
+ if (child < 0) {
+ perror ("vfork");
+ _exit(2);
+ }
+ if (!child) {
+ arg = getpid();
+ write(-1, "", 0);
+ _exit (arg);
+ }
+ }
+}
+
+int
+main ()
+{
+ pid_t parent = getpid ();
+ pid_t child;
+
+ sparc_address_test (0);
+
+ child = vfork ();
+
+ if (child == 0) {
+ /* Here is another test for sparc vfork register problems. This
+ test uses lots of local variables, at least as many local
+ variables as main has allocated so far including compiler
+ temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris
+ 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should
+ reuse the register of parent for one of the local variables,
+ since it will think that parent can't possibly be used any more
+ in this routine. Assigning to the local variable will thus
+ munge parent in the parent process. */
+ pid_t
+ p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(),
+ p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid();
+ /* Convince the compiler that p..p7 are live; otherwise, it might
+ use the same hardware register for all 8 local variables. */
+ if (p != p1 || p != p2 || p != p3 || p != p4
+ || p != p5 || p != p6 || p != p7)
+ _exit(1);
+
+ /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent
+ from child file descriptors. If the child closes a descriptor
+ before it execs or exits, this munges the parent's descriptor
+ as well. Test for this by closing stdout in the child. */
+ _exit(close(fileno(stdout)) != 0);
+ } else {
+ int status;
+ struct stat st;
+
+ while (wait(&status) != child)
+ ;
+ exit(
+ /* Was there some problem with vforking? */
+ child < 0
+
+ /* Did the child fail? (This shouldn't happen.) */
+ || status
+
+ /* Did the vfork/compiler bug occur? */
+ || parent != getpid()
+
+ /* Did the file descriptor bug occur? */
+ || fstat(fileno(stdout), &st) != 0
+ );
+ }
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_vfork_works=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_vfork_works=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5
+echo "${ECHO_T}$ac_cv_func_vfork_works" >&6
+
+fi;
+if test "x$ac_cv_func_fork_works" = xcross; then
+ ac_cv_func_vfork_works=$ac_cv_func_vfork
+ { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
+echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
+fi
+
+if test "x$ac_cv_func_vfork_works" = xyes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WORKING_VFORK 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define vfork fork
+_ACEOF
+
+fi
+if test "x$ac_cv_func_fork_works" = xyes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WORKING_FORK 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5
+echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6
+if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ rm -f conftest.sym conftest.file
+echo >conftest.file
+if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_lstat_dereferences_slashed_symlink=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+struct stat sbuf;
+ /* Linux will dereference the symlink and fail.
+ That is better in the sense that it means we will not
+ have to compile and use the lstat wrapper. */
+ exit (lstat ("conftest.sym/", &sbuf) ? 0 : 1);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_lstat_dereferences_slashed_symlink=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_lstat_dereferences_slashed_symlink=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+else
+ # If the `ln -s' command failed, then we probably don't even
+ # have an lstat function.
+ ac_cv_func_lstat_dereferences_slashed_symlink=no
+fi
+rm -f conftest.sym conftest.file
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
+echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6
+
+test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
+
+cat >>confdefs.h <<_ACEOF
+#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+_ACEOF
+
+
+if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
+ case $LIBOBJS in
+ "lstat.$ac_objext" | \
+ *" lstat.$ac_objext" | \
+ "lstat.$ac_objext "* | \
+ *" lstat.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;;
+esac
+
+fi
+
+echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5
+echo $ECHO_N "checking whether stat accepts an empty string... $ECHO_C" >&6
+if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_stat_empty_string_bug=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+struct stat sbuf;
+ exit (stat ("", &sbuf) ? 1 : 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_stat_empty_string_bug=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_stat_empty_string_bug=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5
+echo "${ECHO_T}$ac_cv_func_stat_empty_string_bug" >&6
+if test $ac_cv_func_stat_empty_string_bug = yes; then
+ case $LIBOBJS in
+ "stat.$ac_objext" | \
+ *" stat.$ac_objext" | \
+ "stat.$ac_objext "* | \
+ *" stat.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;;
+esac
+
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STAT_EMPTY_STRING_BUG 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking return type of signal handlers" >&5
+echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
+if test "${ac_cv_type_signal+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+# undef signal
+#endif
+#ifdef __cplusplus
+extern "C" void (*signal (int, void (*)(int)))(int);
+#else
+void (*signal ()) ();
+#endif
+
+int
+main ()
+{
+int i;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_signal=void
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_signal=int
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
+echo "${ECHO_T}$ac_cv_type_signal" >&6
+
+cat >>confdefs.h <<_ACEOF
+#define RETSIGTYPE $ac_cv_type_signal
+_ACEOF
+
+
+
+
+
+
+for ac_func in mkdir strstr strtol mkstemp
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+for ac_header in locale.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ---------------------------------- ##
+## Report this to the easytag lists. ##
+## ---------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_locale_h = yes; then
+ echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
+if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ am_cv_val_LC_MESSAGES=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+am_cv_val_LC_MESSAGES=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LC_MESSAGES 1
+_ACEOF
+
+ fi
+ fi
+ USE_NLS=yes
+
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for libintl.h" >&5
+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
+if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking libintl.h usability" >&5
+echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <libintl.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking libintl.h presence" >&5
+echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <libintl.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ---------------------------------- ##
+## Report this to the easytag lists. ##
+## ---------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for libintl.h" >&5
+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
+if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_libintl_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
+
+fi
+if test $ac_cv_header_libintl_h = yes; then
+ gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ echo "$as_me:$LINENO: checking for ngettext in libc" >&5
+echo $ECHO_N "checking for ngettext in libc... $ECHO_C" >&6
+if test "${gt_cv_func_ngettext_libc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !ngettext ("","", 1)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gt_cv_func_ngettext_libc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gt_cv_func_ngettext_libc=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5
+echo "${ECHO_T}$gt_cv_func_ngettext_libc" >&6
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ echo "$as_me:$LINENO: checking for dgettext in libc" >&5
+echo $ECHO_N "checking for dgettext in libc... $ECHO_C" >&6
+if test "${gt_cv_func_dgettext_libc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !dgettext ("","")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gt_cv_func_dgettext_libc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gt_cv_func_dgettext_libc=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5
+echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6
+ fi
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+
+for ac_func in bind_textdomain_codeset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+ #
+ # If we don't have everything we want, check in libintl
+ #
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ || test "$gt_cv_func_ngettext_libc" != "yes" \
+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char bindtextdomain ();
+int
+main ()
+{
+bindtextdomain ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_intl_bindtextdomain=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_bindtextdomain=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
+if test $ac_cv_lib_intl_bindtextdomain = yes; then
+ echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
+echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char ngettext ();
+int
+main ()
+{
+ngettext ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_intl_ngettext=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_ngettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6
+if test $ac_cv_lib_intl_ngettext = yes; then
+ echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5
+echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_dgettext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dgettext ();
+int
+main ()
+{
+dgettext ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_intl_dgettext=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_dgettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_dgettext" >&6
+if test $ac_cv_lib_intl_dgettext = yes; then
+ gt_cv_func_dgettext_libintl=yes
+fi
+
+fi
+
+fi
+
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5
+echo $ECHO_N "checking if -liconv is needed to use gettext... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: " >&5
+echo "${ECHO_T}" >&6
+ echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
+echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char ngettext ();
+int
+main ()
+{
+ngettext ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_intl_ngettext=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_ngettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6
+if test $ac_cv_lib_intl_ngettext = yes; then
+ echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5
+echo $ECHO_N "checking for dcgettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_dcgettext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dcgettext ();
+int
+main ()
+{
+dcgettext ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_intl_dcgettext=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_dcgettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_dcgettext" >&6
+if test $ac_cv_lib_intl_dcgettext = yes; then
+ gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv
+else
+ :
+fi
+
+else
+ :
+fi
+
+ fi
+
+ #
+ # If we found libintl, then check in it for bind_textdomain_codeset();
+ # we'll prefer libc if neither have bind_textdomain_codeset(),
+ # and both have dgettext and ngettext
+ #
+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS -lintl $libintl_extra_libs"
+ unset ac_cv_func_bind_textdomain_codeset
+
+for ac_func in bind_textdomain_codeset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ LIBS="$glib_save_LIBS"
+
+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+ gt_cv_func_dgettext_libc=no
+ else
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ && test "$gt_cv_func_ngettext_libc" = "yes"; then
+ gt_cv_func_dgettext_libintl=no
+ fi
+ fi
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ gt_cv_have_gettext=yes
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ fi
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETTEXT 1
+_ACEOF
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case "$MSGFMT" in
+ /*)
+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
+ ac_cv_path_MSGFMT="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
+ ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != "no"; then
+ echo "$as_me:$LINENO: result: $MSGFMT" >&5
+echo "${ECHO_T}$MSGFMT" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+
+for ac_func in dcgettext
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+
+if test -n "$GMSGFMT"; then
+ echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+echo "${ECHO_T}$GMSGFMT" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case "$XGETTEXT" in
+ /*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+ ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+ echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+echo "${ECHO_T}$XGETTEXT" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+case $host in
+ *-*-solaris*)
+ echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5
+echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6
+if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define bind_textdomain_codeset innocuous_bind_textdomain_codeset
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char bind_textdomain_codeset (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef bind_textdomain_codeset
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char bind_textdomain_codeset ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_bind_textdomain_codeset) || defined (__stub___bind_textdomain_codeset)
+choke me
+#else
+char (*f) () = bind_textdomain_codeset;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != bind_textdomain_codeset;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_bind_textdomain_codeset=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_bind_textdomain_codeset=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5
+echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6
+if test $ac_cv_func_bind_textdomain_codeset = yes; then
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+else
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+fi
+
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$glib_save_LIBS"
+ INSTOBJEXT=.mo
+ else
+ gt_cv_have_gettext=no
+ fi
+ fi
+
+fi
+
+
+
+ if test "$gt_cv_have_gettext" = "yes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_NLS 1
+_ACEOF
+
+ fi
+
+ if test "$XGETTEXT" != ":"; then
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
+echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+
+ ac_config_commands="$ac_config_commands default-1"
+
+
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6
+ NEW_LINGUAS=
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+ fi
+ done
+ LINGUAS=$NEW_LINGUAS
+ echo "$as_me:$LINENO: result: $LINGUAS" >&5
+echo "${ECHO_T}$LINGUAS" >&6
+ fi
+
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+
+
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+
+
+
+ ac_config_headers="$ac_config_headers config.h"
+
+
+
+ ac_config_files="$ac_config_files Makefile easytag.spec doc/easytag.1 src/Makefile src/id3lib/Makefile src/libapetag/Makefile src/libmpg123/Makefile po/Makefile.in"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by easytag $as_me 2.1.1, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+easytag config.status 2.1.1
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "easytag.spec" ) CONFIG_FILES="$CONFIG_FILES easytag.spec" ;;
+ "doc/easytag.1" ) CONFIG_FILES="$CONFIG_FILES doc/easytag.1" ;;
+ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "src/id3lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/id3lib/Makefile" ;;
+ "src/libapetag/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libapetag/Makefile" ;;
+ "src/libmpg123/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libmpg123/Makefile" ;;
+ "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@CYGPATH_W@,$CYGPATH_W,;t t
+s,@PACKAGE@,$PACKAGE,;t t
+s,@VERSION@,$VERSION,;t t
+s,@ACLOCAL@,$ACLOCAL,;t t
+s,@AUTOCONF@,$AUTOCONF,;t t
+s,@AUTOMAKE@,$AUTOMAKE,;t t
+s,@AUTOHEADER@,$AUTOHEADER,;t t
+s,@MAKEINFO@,$MAKEINFO,;t t
+s,@install_sh@,$install_sh,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@mkdir_p@,$mkdir_p,;t t
+s,@AWK@,$AWK,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
+s,@GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@DEPDIR@,$DEPDIR,;t t
+s,@am__include@,$am__include,;t t
+s,@am__quote@,$am__quote,;t t
+s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s,@CCDEPMODE@,$CCDEPMODE,;t t
+s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXDEPMODE@,$CXXDEPMODE,;t t
+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@SED@,$SED,;t t
+s,@EGREP@,$EGREP,;t t
+s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@CPP@,$CPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+s,@MAINT@,$MAINT,;t t
+s,@PKG_CONFIG@,$PKG_CONFIG,;t t
+s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t
+s,@GLIB_CFLAGS@,$GLIB_CFLAGS,;t t
+s,@GLIB_LIBS@,$GLIB_LIBS,;t t
+s,@GLIB_GENMARSHAL@,$GLIB_GENMARSHAL,;t t
+s,@GOBJECT_QUERY@,$GOBJECT_QUERY,;t t
+s,@GLIB_MKENUMS@,$GLIB_MKENUMS,;t t
+s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t
+s,@GTK_LIBS@,$GTK_LIBS,;t t
+s,@OGG_CFLAGS@,$OGG_CFLAGS,;t t
+s,@OGG_LIBS@,$OGG_LIBS,;t t
+s,@VORBIS_CFLAGS@,$VORBIS_CFLAGS,;t t
+s,@VORBIS_LIBS@,$VORBIS_LIBS,;t t
+s,@WAVPACK_CFLAGS@,$WAVPACK_CFLAGS,;t t
+s,@WAVPACK_LIBS@,$WAVPACK_LIBS,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@USE_NLS@,$USE_NLS,;t t
+s,@MSGFMT@,$MSGFMT,;t t
+s,@GMSGFMT@,$GMSGFMT,;t t
+s,@XGETTEXT@,$XGETTEXT,;t t
+s,@CATALOGS@,$CATALOGS,;t t
+s,@CATOBJEXT@,$CATOBJEXT,;t t
+s,@DATADIRNAME@,$DATADIRNAME,;t t
+s,@GMOFILES@,$GMOFILES,;t t
+s,@INSTOBJEXT@,$INSTOBJEXT,;t t
+s,@INTLLIBS@,$INTLLIBS,;t t
+s,@PO_IN_DATADIR_TRUE@,$PO_IN_DATADIR_TRUE,;t t
+s,@PO_IN_DATADIR_FALSE@,$PO_IN_DATADIR_FALSE,;t t
+s,@POFILES@,$POFILES,;t t
+s,@POSUB@,$POSUB,;t t
+s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $ac_file | $ac_file:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+ X$ac_file : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+ case $ac_dest in
+ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p $dirpart/$fdir
+ else
+ as_dir=$dirpart/$fdir
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+ ;;
+ default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac ;;
+ esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
+echo
+echo Configuration for $PACKAGE $VERSION :
+echo --------------------------------
+echo
+echo Source code location ....: $srcdir
+echo Host System Type ........: $host
+echo Preprocessor ............: $CC $CPPFLAGS
+echo Compiler ................: $CC $CFLAGS
+echo Linker ..................: $CC $LDFLAGS $LIBS
+echo GTK2 version ............: `pkg-config --modversion gtk+-2.0`
+echo MP3 file support ........: $enable_mp3
+echo ID3v2.3 tags support ....: $enable_id3v23 $ID3LIB_VERSION
+echo Ogg Vorbis file support .: $enable_ogg
+echo Speex file support ......: $enable_speex
+echo FLAC file support .......: $enable_flac $LIBFLAC_VERSION
+echo MP4 file support ........: $enable_mp4 $MPEG4IP_VERSION
+echo WavPack support .........: $enable_wavpack
+echo NLS/gettext .............: $USE_NLS
+echo Install path ............: $prefix
+echo
+echo Now type 'make' to build $PACKAGE $VERSION,
+echo and then 'make install' for installation.
+echo
diff --git a/configure.in b/configure.in
new file mode 100755
index 0000000..288c400
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,465 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl AC_INIT(src/easytag.h)
+
+AC_PREREQ(2.53)
+
+AC_INIT(easytag, 2.1.1) dnl defines ($PACKAGE, $VERSION) - To set also in config.h.mingw
+
+AC_CONFIG_SRCDIR(src/easytag.h)
+dnl -------------------------------
+dnl Init automake
+dnl -------------------------------
+AM_INIT_AUTOMAKE(foreign)
+
+dnl -------------------------------
+dnl Translation files
+dnl -------------------------------
+ALL_LINGUAS="bg cs da de el es fr he hu it ja nl pl pt_BR ro ru sv uk zh_CN"
+GETTEXT_PACKAGE=easytag
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])
+
+dnl -------------------------------
+dnl Checks for programs.
+dnl -------------------------------
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_CXXCPP
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+AC_DISABLE_SHARED
+AC_PROG_LIBTOOL
+AC_ISC_POSIX
+AM_MAINTAINER_MODE
+
+
+dnl -------------------------------
+dnl Configure switches.
+dnl -------------------------------
+AC_ARG_ENABLE(mp3,
+ AC_HELP_STRING([--disable-mp3], [Disable support for MP3 files (default=enabled)]),
+ , enable_mp3=yes)
+
+AC_ARG_ENABLE(id3v23,
+ AC_HELP_STRING([--disable-id3v23], [Disable support for writing id3v2.3 tags (default=enabled)]),
+ , enable_id3v23=yes)
+
+AC_ARG_ENABLE(ogg,
+ AC_HELP_STRING([--disable-ogg], [Disable support for Ogg Vorbis files (default=enabled)]),
+ , enable_ogg=yes)
+
+AC_ARG_ENABLE(speex,
+ AC_HELP_STRING([--disable-speex], [Disable support for Ogg Speex files (default=enabled)]),
+ , enable_speex=yes)
+
+AC_ARG_ENABLE(flac,
+ AC_HELP_STRING([--disable-flac],[Disable support for FLAC files (default=enabled)]),
+ , enable_flac=yes)
+
+AC_ARG_ENABLE(mp4,
+ AC_HELP_STRING([--disable-mp4],[Disable support for MP4 files (default=enabled)]),
+ , enable_mp4=yes)
+
+AC_ARG_ENABLE(wavpack,
+ AC_HELP_STRING([--disable-wavpack],[Disable support for Wavpack files (default=enabled)]),
+ , enable_wavpack=yes)
+
+
+dnl -------------------------------
+dnl Checks for libraries.
+dnl -------------------------------
+
+dnl GTK+-2 libraries
+AM_PATH_GLIB_2_0(2.8.0,, AC_MSG_ERROR([*** GLIB >= 2.8.0 not installed! ***]))
+AM_PATH_GTK_2_0(2.4.1,, AC_MSG_ERROR([*** GTK >= 2.4.1 not installed! ***]))
+PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4.1 glib-2.0 >= 2.4.1)
+
+
+dnl Patch from Ben Taylor to fix a Solaris bug (for CDDB)
+AC_CHECK_LIB(socket, recv)
+
+
+dnl ################################################
+dnl # Ogg Vorbis librairies (rq : needed also for libFLAC)
+dnl ################################################
+dnl XIPH_PATH_OGG(enable_ogg="yes",enable_ogg="no")
+
+if test "x$enable_ogg" = "xyes" -o "x$enable_flac" = "xyes"; then
+ PKG_CHECK_MODULES(OGG, ogg >= 1.0, , ogg_available=no)
+ if test "x$ogg_available" = "xno"; then
+ echo "***"
+ echo "*** Warning: libogg >= 1.0 needed"
+ echo "***"
+ fi
+ PKG_CHECK_MODULES(VORBIS, vorbis >= 1.0.1, , ogg_available=no)
+ if test "x$ogg_available" = "xno"; then
+ echo "***"
+ echo "*** Warning: libvorbis >= 1.0.1 needed"
+ echo "***"
+ fi
+ AC_CHECK_LIB(m, cos) dnl Patch from Christian Weisgerber
+ AC_CHECK_LIB(ogg, ogg_sync_init, , ogg_available=no)
+ AC_CHECK_LIB(vorbis, vorbis_comment_init, , ogg_available=no)
+ AC_CHECK_LIB(vorbisfile, ov_open, , ogg_available=no)
+fi
+
+AC_MSG_CHECKING(for Ogg Vorbis file support)
+if test "x$enable_ogg" = "xyes"; then
+ if test "x$ogg_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ enable_ogg="no"
+ echo "***"
+ echo "*** Warning: Ogg Vorbis file support disabled"
+ echo "*** (Install libogg and libvorbis libraries to enable it)"
+ echo "***"
+ else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(ENABLE_OGG,1,[Define for Ogg Vorbis support])
+ fi
+else
+ echo "***"
+ echo "*** Ogg Vorbis file support disabled on commandline"
+ echo "*** (Install libogg and libvorbis libraries, and use --enable-ogg to enable it)"
+ echo "***"
+fi
+
+
+dnl ################################################
+dnl # libSpeex library
+dnl ################################################
+dnl check for system libspeex
+dnl Note that libvorbis is required for speex support, even if the user chooses --disable-speex
+
+if test "x$enable_speex" = "xyes"; then
+ dnl Library required for speex files, if not found 'enable_speex' is disabled
+ AC_CHECK_LIB(m, cos) dnl Patch from Christian Weisgerber
+ AC_CHECK_LIB(speex, speex_packet_to_header, , speex_available=no)
+
+ AC_MSG_CHECKING(for Speex file support)
+ if test "x$speex_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ enable_speex="no"
+ echo "***"
+ echo "*** Warning: Speex file support disabled, speex missing"
+ echo "*** (Install speex, libogg and libvorbis libraries to enable it)"
+ echo "***"
+ elif test "x$ogg_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ enable_speex="no"
+ echo "***"
+ echo "*** Warning: Speex file support disabled, libvorbis missing"
+ echo "*** (Install speex, libogg and libvorbis libraries to enable it)"
+ echo "***"
+ else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(ENABLE_SPEEX,1,[Define for Speex support])
+ fi
+else
+ AC_MSG_CHECKING(for Speex file support)
+ AC_MSG_RESULT(no)
+ echo "***"
+ echo "*** Speex file support disabled on commandline"
+ echo "*** (Install speex, libogg and libvorbis libraries, and use --enable-speex to enable it)"
+ echo "***"
+fi
+
+
+dnl ################################################
+dnl # libFLAC library
+dnl ################################################
+dnl check for system libflac
+dnl Note that libvorbis is required for flac support, even if the user chooses --disable-ogg
+
+if test "x$enable_flac" = "xyes"; then
+ dnl Library required for flac files, if not found 'enable_flac' is disabled
+ AC_CHECK_LIB(m, cos) dnl Patch from Christian Weisgerber
+ AC_CHECK_LIB(FLAC, FLAC__metadata_simple_iterator_new, , flac_available=no)
+
+ AC_MSG_CHECKING(for FLAC file support)
+ if test "x$flac_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ enable_flac="no"
+ echo "***"
+ echo "*** Warning: FLAC file support disabled, libflac missing"
+ echo "*** (Install libflac, libogg and libvorbis libraries to enable it)"
+ echo "***"
+ elif test "x$ogg_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ enable_flac="no"
+ echo "***"
+ echo "*** Warning: FLAC file support disabled, libvorbis missing"
+ echo "*** (Install libflac, libogg and libvorbis libraries to enable it)"
+ echo "***"
+ else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(ENABLE_FLAC,1,[Define for FLAC support])
+ fi
+else
+ AC_MSG_CHECKING(for FLAC file support)
+ AC_MSG_RESULT(no)
+ echo "***"
+ echo "*** FLAC file support disabled on commandline"
+ echo "*** (Install libflac, libogg and libvorbis libraries, and use --enable-flac to enable it)"
+ echo "***"
+fi
+
+dnl Check version of libFLAC installed
+dnl version of libFLAC must be at least 1.1.0
+if test "x$enable_flac" = "xyes"; then
+ LIBS_SAVE="$LIBS"
+ CFLAGS_SAVE="$CFLAGS"
+ LIBS="$LIBS $LIBFLAC_LIBS"
+ CFLAGS="$CFLAGS $LIBFLAC_CFLAGS"
+ AC_MSG_CHECKING(for libFLAC version)
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <FLAC/format.h>
+int
+main (void)
+{
+ FILE *output;
+ char tmp[16];
+ int libflac_major, libflac_minor, libflac_patch;
+
+ sprintf(tmp,"%s",FLAC__VERSION_STRING);
+ libflac_major = atoi( (char *)strtok(tmp,".") );
+ libflac_minor = atoi( (char *)strtok(NULL,".") );
+ libflac_patch = atoi( (char *)strtok(NULL,".") );
+ output=fopen("conftest.flac","w");
+ fprintf(output,"LIBFLAC_MAJOR=%d\nLIBFLAC_MINOR=%d\nLIBFLAC_PATCH=%d\n",libflac_major,libflac_minor,libflac_patch);
+ fclose(output);
+ exit(0);
+}
+], . ./conftest.flac; echo "${LIBFLAC_MAJOR}.${LIBFLAC_MINOR}.${LIBFLAC_PATCH}", AC_MSG_WARN(could not determine libFLAC version),[echo $ac_n "cross compiling; assuming ${LIBFLAC_MAJOR}.${LIBFLAC_MINOR}.${LIBFLAC_PATCH} $ac_c"])
+ LIBS="$LIBS_SAVE"
+ CFLAGS="$CFLAGS_SAVE"
+ LIBFLAC_VERSION="(flac-$LIBFLAC_MAJOR.$LIBFLAC_MINOR.$LIBFLAC_PATCH)"
+fi
+AC_DEFINE_UNQUOTED(LIBFLAC_MAJOR, $LIBFLAC_MAJOR, [libflac major version])
+AC_DEFINE_UNQUOTED(LIBFLAC_MINOR, $LIBFLAC_MINOR, [libflac minor version])
+AC_DEFINE_UNQUOTED(LIBFLAC_PATCH, $LIBFLAC_PATCH, [libflac patch version])
+
+
+dnl ################################################
+dnl # libid3tag and Id3lib libraries
+dnl ################################################
+if test "x$enable_mp3" = "xyes"; then
+ AC_MSG_CHECKING(for MP3 file support)
+ AC_CHECK_HEADER(id3tag.h, [], [libid3tag_available=no])
+ AC_CHECK_LIB(id3tag, id3_frame_field, [], [libid3tag_available=no], [-lz])
+ if test "x$libid3tag_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ enable_mp3="no"
+ echo "***"
+ echo "*** Warning: MP3 file support disabled, libid3tag missing"
+ echo "***"
+ else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(ENABLE_MP3,1,[Define for MP3 support])
+ fi
+
+ if test "x$enable_id3v23" == "xyes"; then
+ dnl Check which libs are required by id3lib, libid3.la is fucked up
+ AC_SEARCH_LIBS(ID3Tag_Link,"id3" "id3 -lstdc++" "id3 -lz" "id3 -lz -lstdc++",,AC_MSG_WARN(id3lib not found); id3lib_available=no)
+
+ dnl Needed to link correctly with id3lib 3.8.0
+ LIBS="-lz -lstdc++ $LIBS"
+ dnl AC_CHECK_LIB(z,uncompress,AC_DEFINE_UNQUOTED(HAVE_ZLIB))
+
+ dnl expected version for cross compiling
+ ID3LIB_MAJOR=3
+ ID3LIB_MINOR=8
+ ID3LIB_PATCH=0
+
+ AC_MSG_CHECKING(for id3lib version)
+ AC_TRY_RUN([
+ #include <id3.h>
+ #include <stdio.h>
+ int
+ main ()
+ {
+ FILE *output;
+ output=fopen("conftest.id3","w");
+ fprintf(output,"ID3LIB_MAJOR=%d\nID3LIB_MINOR=%d\nID3LIB_PATCH=%d\n",ID3LIB_MAJOR_VERSION,ID3LIB_MINOR_VERSION,ID3LIB_PATCH_VERSION);
+ fclose(output);
+ exit(0);
+ }
+ ], . ./conftest.id3; echo "${ID3LIB_MAJOR}.${ID3LIB_MINOR}.${ID3LIB_PATCH}", AC_MSG_WARN(could not determine id3lib version); id3lib_available=no,[echo $ac_n "cross compiling; assuming ${ID3LIB_MAJOR}.${ID3LIB_MINOR}.${ID3LIB_PATCH} $ac_c"])
+ AC_DEFINE_UNQUOTED(ID3LIB_MAJOR, $ID3LIB_MAJOR, [id3lib major version])
+ AC_DEFINE_UNQUOTED(ID3LIB_MINOR, $ID3LIB_MINOR, [id3lib minor version])
+ AC_DEFINE_UNQUOTED(ID3LIB_PATCH, $ID3LIB_PATCH, [id3lib patch level])
+
+ AC_MSG_CHECKING(for MP3 file support)
+ if test "x$id3lib_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ echo "***"
+ echo "*** Warning: id3v23 tags support disabled, id3lib missing"
+ echo "***"
+ else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(ENABLE_ID3LIB,1,[Define for id3v23 support])
+ ID3LIB_VERSION="(id3lib-$ID3LIB_MAJOR.$ID3LIB_MINOR.$ID3LIB_PATCH)"
+ fi
+ fi
+fi
+
+
+dnl ################################################
+dnl # libmp4v2 library
+dnl ################################################
+if test "x$enable_mp4" = "xyes"; then
+ dnl Librairies required for mp4 files, if not found 'enable_mp4' is disabled
+ AC_CHECK_LIB(m, cos)
+ dnl AC_CHECK_LIB(mp4v2, MP4Read, , mp4_available=no)
+ AC_CHECK_LIB(mp4v2, MP4GetTrackMediaDataName, , mp4_available=no)
+fi
+
+AC_MSG_CHECKING(for MP4/AAC file support)
+if test "x$enable_mp4" = "xyes"; then
+ if test "x$mp4_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ enable_mp4="no"
+ echo "***"
+ echo "*** Warning: MP4 file support disabled"
+ echo "*** (Install libmp4v2 to enable it)"
+ echo "***"
+ else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(ENABLE_MP4,1,[Define for MP4 support])
+ fi
+else
+ AC_MSG_RESULT(no)
+ enable_mp4="no"
+ echo "***"
+ echo "*** MP4 file support disabled on commandline"
+ echo "*** (Install libmp4v2 and use --enable-mp4 to enable it)"
+ echo "***"
+fi
+
+
+dnl ################################################
+dnl # WavPack library
+dnl ################################################
+if test "x$enable_wavpack" = "xyes"; then
+ dnl Librairies required for wavpack files, if not found 'enable_wavpack' is disabled
+ PKG_CHECK_MODULES(WAVPACK, wavpack >= 4.40, , wavpack_available=no)
+ if test "x$wavpack_available" = "xno"; then
+ echo "***"
+ echo "*** Warning: wavpack >= 4.40 needed"
+ echo "***"
+ fi
+ AC_CHECK_LIB(m, cos)
+ AC_CHECK_LIB(wavpack, WavpackOpenFileInput, , wavpack_available=no)
+fi
+
+AC_MSG_CHECKING(for Wavpack file support)
+if test "x$enable_wavpack" = "xyes"; then
+ if test "x$wavpack_available" = "xno"; then
+ AC_MSG_RESULT(no)
+ enable_wavpack="no"
+ echo "***"
+ echo "*** Warning: Wavpack file support disabled"
+ echo "*** (Install libwavpack to enable it)"
+ echo "***"
+ else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(ENABLE_WAVPACK,1,[Define for Wavpack support])
+ fi
+else
+ AC_MSG_RESULT(no)
+ enable_wavpack="no"
+ echo "***"
+ echo "*** Wavpack file support disabled on commandline"
+ echo "*** (Install libwavpack, and use --enable-wavpack to enable it)"
+ echo "***"
+fi
+
+dnl Use -Wall if we have gcc.
+changequote(,)dnl
+if test "x$GCC" = "xyes"; then
+ case " $CFLAGS " in
+ *[\ \ ]-Wall[\ \ ]*) ;;
+ *) CFLAGS="$CFLAGS -Wall" ;;
+ esac
+fi
+changequote([,])
+
+dnl To enable 'gprof' profiling
+dnl CFLAGS="$CFLAGS -pg"
+
+
+dnl -------------------------------
+dnl Checks for header files.
+dnl -------------------------------
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+AC_CHECK_HEADERS(fcntl.h unistd.h)
+
+
+dnl -------------------------------
+dnl Checks for typedefs, structures, and compiler characteristics.
+dnl -------------------------------
+AC_C_CONST
+AC_TYPE_MODE_T
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_STRUCT_TM
+
+
+dnl -------------------------------
+dnl Checks for library functions.
+dnl -------------------------------
+AC_FUNC_FORK
+AC_FUNC_STAT
+AC_TYPE_SIGNAL
+AC_CHECK_FUNCS(mkdir strstr strtol mkstemp)
+
+
+dnl -------------------------------
+dnl check for NLS
+dnl -------------------------------
+AM_GLIB_GNU_GETTEXT
+dnl AM_GNU_GETTEXT_VERSION(0.10.40)
+
+
+dnl -------------------------------
+dnl config header
+dnl -------------------------------
+AM_CONFIG_HEADER(config.h)
+
+
+AC_OUTPUT([ Makefile
+ easytag.spec
+ doc/easytag.1
+ src/Makefile
+ src/id3lib/Makefile
+ src/libapetag/Makefile
+ src/libmpg123/Makefile
+ po/Makefile.in
+ ])
+
+echo
+echo Configuration for $PACKAGE $VERSION :
+echo --------------------------------
+echo
+echo Source code location ....: $srcdir
+echo Host System Type ........: $host
+echo Preprocessor ............: $CC $CPPFLAGS
+echo Compiler ................: $CC $CFLAGS
+echo Linker ..................: $CC $LDFLAGS $LIBS
+echo GTK2 version ............: `pkg-config --modversion gtk+-2.0`
+echo MP3 file support ........: $enable_mp3
+echo ID3v2.3 tags support ....: $enable_id3v23 $ID3LIB_VERSION
+echo Ogg Vorbis file support .: $enable_ogg
+echo Speex file support ......: $enable_speex
+echo FLAC file support .......: $enable_flac $LIBFLAC_VERSION
+echo MP4 file support ........: $enable_mp4 $MPEG4IP_VERSION
+echo WavPack support .........: $enable_wavpack
+echo NLS/gettext .............: $USE_NLS
+echo Install path ............: $prefix
+echo
+echo Now type 'make' to build $PACKAGE $VERSION,
+echo and then 'make install' for installation.
+echo
diff --git a/debian/changelog b/debian/changelog
new file mode 100755
index 0000000..0a44682
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,492 @@
+easytag (2.1-1) unstable; urgency=low
+
+ * New upstream version
+ * debian/control:
+ - required glib version specified to configure
+
+ -- Sebastien Bacher <seb128@debian.org> Thu, 31 May 2007 00:10:52 +0200
+
+easytag (1.99.12-1) unstable; urgency=low
+
+ * New upstream version:
+ - New logo and icons,
+ - Added ability to display all albums of an artist in the 'Artist / Album'
+ view,
+ - Added detection of the bugged version of id3lib when writting ID3 tag to
+ Unicode to inform the user (a patch for id3lib is supplied in package
+ source),
+ - For Ogg files, the field DESCRIPTION is also used for the comment,
+ - Fixed stack corruption bugs in Fill Tag scanner,
+ - Fixed loading disk number for FLAC tag,
+ - Fixed error that displays MP3 files in red when no tag is present,
+ - Fixed a crash in the CDDB window when getting tracks of a album,
+ - Fixed playlist name bug when creating it in the parent directory,
+ - Fixed manual CDDB search when using Squid,
+ - Little fix for FLAC tags,
+ - Fixed various bugs,
+ - Russian translation updated,
+ - Greek translation updated,
+ - Spanish translation updated,
+ - Japanese translation updated,
+ - Czech translation updated,
+ - Brazilian Portuguese translation updated
+ - Danish translation updated,
+ - Italian translation updated,
+ - Hungarian translation updated,
+ - German translation updated.
+
+ -- Sebastien Bacher <seb128@debian.org> Sat, 15 Apr 2006 15:47:47 +0200
+
+easytag (1.99.11-1) unstable; urgency=low
+
+ * New upstream version:
+ - Added ability to force saving tag of file even if no changes made (useful
+ to convert quickly tags),
+ - Added switch '--disable-mp3' to not compile the program with id3lib (will
+ allow in future version to choose between id3lib or taglib),
+ - Fixed problem of saving file order (bug introduced in version 1.99.10),
+ - French translation updated,
+ - Czech translation updated,
+ - Hungarian translation updated,
+ - Spanish translation updated,
+ - German translation updated
+ - fix implicit function (Closes: #341277)
+
+ -- Sebastien Bacher <seb128@debian.org> Sun, 18 Dec 2005 23:43:03 +0100
+
+easytag (1.99.10-1) unstable; urgency=low
+
+ * New upstream version:
+ - Added port to Win32, to compile under MinGW (thanks to Michael Pujos),
+ - The preferences window was clean up : saving configuration changed (the
+ apply button was removed to not confuse user), position of main window,
+ scanner window and cddb are automatically saved (settings were removed
+ from the window),
+ - Added a protection against MP3 corrupted files (files containing only
+ zeroes) which cause a bug in id3lib and so freeze the program,
+ - Added some documentation,
+ - Changed some shortcuts in the menu by following the GNOME Human Interface
+ Guidelines 2.0,
+ - Added ability to load pictures contained in ID3v2 tag of a FLAC file,
+ - Fixed a crash that may occurs with the browser at startup,
+ - Fixed displaying of player in preferences window if it not exists, else
+ were can't save the settings,
+ - Fixed a crash that may occurs with message boxes ,
+ - Fixed some memory leaks,
+ - French translation updated,
+ - Czech translation updated,
+ - Danish translation updated,
+ - Brazilian Portuguese translation updated,
+ - German translation updated
+
+ -- Sebastien Bacher <seb128@debian.org> Tue, 29 Nov 2005 14:34:00 +0100
+
+easytag (1.99.9-1) unstable; urgency=low
+
+ * New upstream version:
+ - Ability to read and write UTF-16 strings in ID3 tag
+ - Added options to save tags only in ISO-8859-1, or only in Unicode, or to
+ let the program to do the best choice (Closes: #281255)
+ - Added options to select a non-standard encoding for ISO-8859-1 fields in
+ the tag (very useful for example for Russian people), and can apply some
+ rules when writing tag if some characters can't be converted to this
+ non-standard encoding (activate the transliteration or silently discard
+ some characters) (Closes: #246856)
+ - Changed way to read and write filenames : use the encoding specified into
+ environment variables of language (as LANG or LC_ALL), instead of the
+ GTK2 environment variable G_FILENAME_ENCODING
+ - Added options to apply some rules when writing filename if some
+ characters can't be converted to the system encoding (activate the
+ transliteration or silently discard some characters)
+ - Added ability to rename the directory in the browser with masks,
+ - Added an option to return focus to the 'Title' field when switching files
+ with the previous/next button/shortcut
+ - Added a menu item for the action "Show hidden directories" in the browser
+ - For Ogg Vorbis files, the file vcedit.h was updated
+ from vorbis-tools-1.1.1
+ - Some fixes and improvements in the CDDB windows
+ - Improvements when handling character set of the locale when reading and
+ writing filenames
+ - Improved compatibility for MP4/AAC files with MPEG4IP-1.2
+ - Fixed a crash when reading FLAC files
+ - Fixed : remove old directories when changing path of the file with the
+ 'Rename File' scanner
+ - Fixed crash when numbering tracks sequentially after renaming files
+ - Fixed problem when renaming file from one partition to an other one
+ (mananage the error "Invalid cross-device link")
+ - Fixed : don't replace illegal characters when writing playlist content
+ from a pattern
+ - Fixed writting of playlist to improve compatibility with some players
+ (uses DOS characters for a new line)
+ - Fixed conversion of the word 'I' with the
+ 'first letter uppercase' scanner: now it stays to upper case
+ - Check if the program to launch to open files exists before to run it
+ - A new bulgarian translation
+ - French translation updated
+ - Brazilian Portuguese translation updated
+ - German translation updated
+
+ -- Sebastien Bacher <seb128@debian.org> Thu, 10 Nov 2005 17:17:14 +0100
+
+easytag (1.99.8-1) unstable; urgency=low
+
+ * New upstream version (Closes: #326802):
+ - Fixed hangs in the cddb lookups (Closes: #292188).
+ - Fixed problem when parsing markup in the 'Fill Tag' scanner preview.
+ - Added MP4/AAC file and tag support (including pictures in tag) by using
+ MPEG4IP (libmp4v2).
+ - "Copyright" replaced by "License" in .spec file to allow to build the RPM
+ package with rpm-4.4.0.
+ - French translation updated.
+ - Italian translation updated.
+ - German translation updated.
+ * debian/control:
+ - updated the Build-Depends on flac package (Closes: #325949).
+
+ -- Sebastien Bacher <seb128@debian.org> Sun, 11 Sep 2005 15:03:36 +0200
+
+easytag (1.99.7-2) unstable; urgency=low
+
+ * Rebuild with the current libid3 (Closes: #321431, #323089).
+ * debian/control:
+ - updated the Standards-Version.
+
+ -- Sebastien Bacher <seb128@debian.org> Wed, 17 Aug 2005 23:05:14 +0200
+
+easytag (1.99.7-1) unstable; urgency=low
+
+ * New upstream version.
+
+ -- Sebastien Bacher <seb128@debian.org> Fri, 15 Jul 2005 22:46:51 +0200
+
+easytag (1.99.6-2) unstable; urgency=low
+
+ * debian/copyright, debian/easytag.1:
+ - fix upstream email.
+ * debian/patches/patch_1996_browser_entry_fix.diff:
+ - upstream patch to fix an issue with the browser entry.
+
+ -- Sebastien Bacher <seb128@debian.org> Wed, 29 Jun 2005 11:59:23 +0200
+
+easytag (1.99.6-1) unstable; urgency=low
+
+ * New upstream version:
+ - fix tab order for the label editor (Closes: #292033).
+ - fix the FTBFS on ppc64 (Closes: #299280).
+ - updated german translation (Closes: #313692).
+
+ -- Sebastien Bacher <seb128@debian.org> Tue, 28 Jun 2005 17:43:07 +0200
+
+easytag (1.99.5-1) unstable; urgency=low
+
+ * New upstream version.
+
+ -- Sebastien Bacher <seb128@debian.org> Thu, 9 Jun 2005 15:09:01 +0200
+
+easytag (1.99.4-1) unstable; urgency=low
+
+ * New upstream version.
+
+ -- Sebastien Bacher <seb128@debian.org> Mon, 2 May 2005 16:58:03 +0200
+
+easytag (1.99.3-1) unstable; urgency=low
+
+ * Upload of the GTK2 version to unstable.
+ * New upstream release.
+
+ -- Sebastien Bacher <seb128@debian.org> Fri, 21 Jan 2005 19:29:31 +0100
+
+easytag (1.99.2-2) experimental; urgency=low
+
+ * easytag.desktop:
+ - don't list x-directory/normal.
+ * debian/control.in:
+ - updated the Build-Depends on libflac-dev to 1.1.1-3.
+
+ -- Sebastien Bacher <seb128@debian.org> Sat, 8 Jan 2005 14:33:06 +0100
+
+easytag (1.99.2-1) experimental; urgency=low
+
+ * New upstream release (Closes: #288033).
+
+ -- Sebastien Bacher <seb128@debian.org> Sat, 1 Jan 2005 22:32:01 +0100
+
+easytag (1.99.1-1) experimental; urgency=low
+
+ * New upstream release:
+ - added new fields for ID3v2 tag, Ogg Vorbis tag, FLAC tag and APE tag :
+ Composer, Original Artist/Performer, Copyright, URL and Encoder name.
+ - added an option to select or not the corresponding file when selecting a
+ track name in the Cddb results.
+ - added ability to search files in hidden directories.
+ - added an option to not convert some words when using the scanner 'First
+ letter uppercase of each word'.
+
+ -- Sebastien Bacher <seb128@debian.org> Sun, 7 Nov 2004 22:14:54 +0100
+
+easytag (0.31gtk2pre2-2) experimental; urgency=low
+
+ * New upstream release.
+
+ -- Sebastien Bacher <seb128@debian.org> Fri, 8 Oct 2004 11:21:15 +0200
+
+easytag (0.31gtk2pre2-1) experimental; urgency=low
+
+ * New upstream pre-release.
+ * debian/control:
+ - updated the description with the upstream one. The flac format is
+ mentioned now (Closes: #255052).
+
+ -- Sebastien Bacher <seb128@debian.org> Sat, 18 Sep 2004 15:39:05 +0200
+
+easytag (0.31gtk2pre1-1) experimental; urgency=low
+
+ * New pre-release.
+
+ -- Sebastien Bacher <seb128@debian.org> Mon, 19 Jul 2004 23:39:35 +0200
+
+easytag (0.31gtk2pre0-1) experimental; urgency=low
+
+ * First pre-release of the GTK+2 version.
+
+ -- Sebastien Bacher <seb128@debian.org> Wed, 14 Jul 2004 15:44:41 +0200
+
+easytag (0.31-1) unstable; urgency=low
+
+ * New upstream release
+ + allow to display the files by artists and by albums (Closes: #208090).
+ * debian/patches/*:
+ + removed patchs included in the new version.
+ * debian/menu:
+ + added an icon (Closes: #252859).
+
+ -- Sebastien Bacher <seb128@debian.org> Sun, 6 Jun 2004 23:30:01 +0200
+
+easytag (0.30-5) unstable; urgency=low
+
+ * Updated es.po (Closes: #236800).
+
+ -- Sebastien Bacher <seb128@debian.org> Tue, 11 May 2004 21:13:49 +0200
+
+easytag (0.30-4) unstable; urgency=low
+
+ * Updated Build-Depends on debhelper to 4.1.46 (Closes: #219480).
+ * debian/patches/patch_easytag_030c_030d.diff:
+ + new patch to fix the cddb server selection (Closes: #230672).
+
+ -- Sebastien Bacher <seb128@debian.org> Sat, 7 Feb 2004 11:55:58 +0100
+
+easytag (0.30-3) unstable; urgency=low
+
+ * Added patches to fix the repeat action (Closes: #217661).
+
+ -- Sebastien Bacher <seb128@debian.org> Thu, 30 Oct 2003 17:05:22 +0100
+
+easytag (0.30-2) unstable; urgency=low
+
+ * Added the upstream patch to fix the renaming bug (Closes: #210420).
+
+ -- Sebastien Bacher <seb128@debian.org> Sun, 28 Sep 2003 11:35:44 +0200
+
+easytag (0.30-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Sebastien Bacher <seb128@debian.org> Thu, 11 Sep 2003 00:53:00 +0200
+
+easytag (0.29-1) unstable; urgency=low
+
+ * New maintainer (Closes: #202543).
+ * New upstream release.
+ * Switched to cdbs.
+ * Updated Build-Depends.
+ * Updated Standards-Version to 3.6.1.0.
+
+ -- Sebastien Bacher <seb128@debian.org> Wed, 3 Sep 2003 02:57:29 +0200
+
+easytag (0.28.1-2) unstable; urgency=low
+
+ * orphaned; maintainer set to packages@qa.debian.org
+
+ -- tony mancill <tmancill@debian.org> Tue, 22 Jul 2003 21:14:14 -0700
+
+easytag (0.28.1-1) unstable; urgency=low
+
+ * new upstream release
+
+ -- tony mancill <tmancill@debian.org> Sun, 13 Jul 2003 11:31:37 -0700
+
+easytag (0.28-4) unstable; urgency=low
+
+ * added signal handler to ignore SIGCHLD; prevents zombies when
+ spawning audio player (closes: #177185)
+
+ -- tony mancill <tmancill@debian.org> Mon, 30 Jun 2003 21:40:30 -0700
+
+easytag (0.28-3) unstable; urgency=low
+
+ * crc32 renamed; workaround for GTK themes problem (closes: #195884)
+
+ -- tony mancill <tmancill@debian.org> Sat, 28 Jun 2003 10:29:13 -0700
+
+easytag (0.28-2) unstable; urgency=low
+
+ * using CDDB results will no longer blank out filenames
+ applied upstream patch 0.28a (closes: #197971)
+
+ -- tony mancill <tmancill@debian.org> Mon, 23 Jun 2003 21:20:42 -0700
+
+easytag (0.28-1) unstable; urgency=low
+
+ * new upstream release
+ * updated description regarding ID3v2 support (closes: #185259)
+
+ -- tony mancill <tmancill@debian.org> Sun, 1 Jun 2003 16:12:25 -0700
+
+easytag (0.27a-3) unstable; urgency=low
+
+ * scanner window now provides WM_CLASS (closes: #185980)
+ (thanks to Nikolai Prokoschenko for the patch)
+ * now build depends upon libid3-3.8.3-dev
+ * added string.h include to configure.in and flac_header.c (for ia64)
+
+ -- tony mancill <tmancill@debian.org> Mon, 28 Apr 2003 21:55:28 -0700
+
+easytag (0.27a-2) unstable; urgency=low
+
+ * rebuilt against libvorbis0a (closes: #185060)
+
+ -- tony mancill (Debian) <tmancill@debian.org> Sun, 16 Mar 2003 13:33:54 -0800
+
+easytag (0.27a-1) unstable; urgency=low
+
+ * new upstream version
+ * new maintainer
+
+ -- tony mancill <tmancill@debian.org> Tue, 11 Feb 2003 21:13:10 -0800
+
+easytag (0.25b-1) unstable; urgency=low
+
+ * New upstream version (Closes: bug#171195)
+ * Add Ogg to description (Closes: bug#171455)
+
+ -- Baruch Even <baruch@debian.org> Fri, 13 Dec 2002 15:00:41 +0200
+
+easytag (0.24b-1) unstable; urgency=low
+
+ * New upstream version (Closes: bug#160751)
+ + Compile against new libflac4 (Closes: bug#164187)
+ + Fix code to compile with libflac4 (Closes: bug#164087)
+
+ -- Baruch Even <baruch@debian.org> Sat, 12 Oct 2002 03:07:45 +0200
+
+easytag (0.23-1) unstable; urgency=low
+
+ * New upstream version (Closes: bug#158176)
+ * Use libid3 from debian package it's version 3.8.0 now (Closes: bug#158178)
+
+ -- Baruch Even <baruch@debian.org> Sat, 31 Aug 2002 22:22:55 +0300
+
+easytag (0.21-1.1) unstable; urgency=low
+
+ * NMU to fix breakage caused by libvorbis0 split.
+
+ -- Christopher L Cheney <ccheney@debian.org> Mon, 29 Jul 2002 23:00:00 -0500
+
+easytag (0.21-1) unstable; urgency=low
+
+ * New upstream version
+
+ -- Baruch Even <baruch@debian.org> Sat, 8 Jun 2002 22:40:41 +0300
+
+easytag (0.18-3) unstable; urgency=low
+
+ * Add a missing Build-Dep: zlib1g-dev
+
+ -- Baruch Even <baruch@debian.org> Fri, 12 Apr 2002 22:29:07 +0300
+
+easytag (0.18-2) unstable; urgency=low
+
+ * Really try to compile for alpha
+
+ -- Baruch Even <baruch@debian.org> Thu, 11 Apr 2002 01:19:01 +0300
+
+easytag (0.18-1) unstable; urgency=low
+
+ * New upstream release
+ * Try to get the libid3 to compile with gcc 3.0
+
+ -- Baruch Even <baruch@debian.org> Sun, 7 Apr 2002 02:07:02 +0300
+
+easytag (0.17-1) unstable; urgency=low
+
+ * New upstream release.
+ * Upped Standards-Version, no action required.
+ * Included a static version of libid3 3.8.0pre2 due to stability problems
+ with the current version. (Closes: bug#136819)
+
+ -- Baruch Even <baruch@debian.org> Tue, 12 Mar 2002 02:30:05 +0200
+
+easytag (0.16-1) unstable; urgency=low
+
+ * New upstream release (Closes: bug#134570)
+
+ -- Baruch Even <baruch@debian.org> Tue, 19 Feb 2002 23:57:11 +0200
+
+easytag (0.15-2) unstable; urgency=low
+
+ * Added libid3-dev to Build-Deps
+ * Added a manpage (Closes: bug#87080)
+
+ -- Baruch Even <baruch@debian.org> Sat, 2 Feb 2002 04:16:05 +0200
+
+easytag (0.15-1) unstable; urgency=low
+
+ * New maintainer (Closes: bug#130821)
+ * New upstream release (Closes: bug#98387)
+
+ -- Baruch Even <baruch@debian.org> Thu, 31 Jan 2002 01:58:55 +0200
+
+easytag (0.13-2) unstable; urgency=low
+
+ * Orphaned this package.
+
+ -- Adrian Bunk <bunk@fs.tum.de> Fri, 25 Jan 2002 12:47:39 +0100
+
+easytag (0.13-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Adrian Bunk <bunk@fs.tum.de> Thu, 4 Jan 2001 17:52:42 +0100
+
+easytag (0.12-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Adrian Bunk <bunk@fs.tum.de> Wed, 22 Nov 2000 19:09:39 +0100
+
+easytag (0.11-1) unstable; urgency=low
+
+ * New upstream release.
+ * Added THANKS and USERS-GUIDE.
+ * Upload sponsored by Tony Mancill <tmancill@debian.org>.
+
+ -- Adrian Bunk <bunk@fs.tum.de> Fri, 27 Oct 2000 00:38:24 +0200
+
+easytag (0.10.2-1) unstable; urgency=low
+
+ * New upstream release.
+ * Upload sponsored by Tony Mancill <tmancill@debian.org>.
+
+ -- Adrian Bunk <bunk@fs.tum.de> Sun, 22 Oct 2000 21:33:44 +0200
+
+easytag (0.10.1-1) unstable; urgency=low
+
+ * Initial Release. (closes: #74068)
+ * Upload sponsored by Oliver M. Bolzer <oliver@debian.org>.
+
+ -- Adrian Bunk <bunk@fs.tum.de> Sun, 8 Oct 2000 20:40:42 +0200
+
+Local variables:
+mode: debian-changelog
+End:
diff --git a/debian/compat b/debian/compat
new file mode 100755
index 0000000..b8626c4
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+4
diff --git a/debian/control b/debian/control
new file mode 100755
index 0000000..a344382
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,39 @@
+Source: easytag
+Section: sound
+Priority: optional
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Build-Depends: cdbs, debhelper (>= 4.0), libglib2.0-dev (>= 2.8), libgtk2.0-dev (>= 2.4), gettext, libvorbis-dev, libogg-dev, zlib1g-dev, libid3-3.8.3-dev, libflac-dev (>= 1.1.2)
+Standards-Version: 3.6.2
+
+Package: easytag
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: viewing, editing and writing ID3 tags
+ EasyTAG is an utility for viewing, editing and writing
+ the ID3 tags of differents audio files, using a GTK+ interface.
+ .
+ Currently EasyTAG supports the following:
+ - View, edit, write tags of MP3, MP2 files (ID3 tag), FLAC files (FLAC Vorbis
+ tag), Ogg Vorbis files (Ogg Vorbis tag), and MusePack, Monkey's Audio files
+ (APE tag),
+ - Auto tagging: parse filename and directory to complete automatically the
+ fields (using masks),
+ - Ability to rename files from the tag (using masks) or by loading
+ a text file,
+ - Process selected files of the selected directory,
+ - Ability to browse subdirectories,
+ - Recursion for tagging, removing, renaming, saving...,
+ - Can set a field (artist, title,...) to all other selected files,
+ - Read file header informations (bitrate, time, ...) and display them,
+ - Undo and redo last changes,
+ - Ability to process fields of tag and file name (convert letters into
+ uppercase, downcase, ...),
+ - Ability to open a directory or a file with an external program,
+ - CDDB support (from http protocol),
+ - A tree based browser,
+ - A list to select files,
+ - A playlist generator window,
+ - A file searching window,
+ - Simple and explicit interface!,
+ - French, German, Russian, Dutch, Hungarian, Swedish, Italian, Japanese,
+ Ukrainian, Czech, Spanish, Polish and Romanian translation language,
diff --git a/debian/copyright b/debian/copyright
new file mode 100755
index 0000000..77d3792
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,11 @@
+This package was debianized by Adrian Bunk <bunk@fs.tum.de> on
+Sun, 8 Oct 2000 20:40:42 +0200.
+
+It was downloaded from http://easytag.sourceforge.net/
+
+Upstream Author: Jerome Couderc <easytag@gmail.com>
+
+Copyright:
+
+This program is copyright under the GNU Public License (GPL), a copy
+of which may be found in /usr/share/common-licenses/GPL
diff --git a/debian/dirs b/debian/dirs
new file mode 100755
index 0000000..ac23cd5
--- /dev/null
+++ b/debian/dirs
@@ -0,0 +1,3 @@
+usr/bin
+usr/share/gnome/apps/Multimedia
+usr/share/pixmaps
diff --git a/debian/docs b/debian/docs
new file mode 100755
index 0000000..31a4b61
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,3 @@
+TODO
+THANKS
+USERS-GUIDE
diff --git a/debian/easytag.1 b/debian/easytag.1
new file mode 100755
index 0000000..6406808
--- /dev/null
+++ b/debian/easytag.1
@@ -0,0 +1,49 @@
+.TH "easytag" "1" "0.15" "Baruch Even" "System General Commands Manual"
+.SH "NAME"
+.LP
+easytag \- Edit and View ID3 tags on MP3 files
+.SH "SYNTAX"
+.LP
+easytag
+
+.SH "DESCRIPTION"
+.LP
+EasyTAG is an utility for viewing, editing and writing the ID3 tags of MP3 files, using a GTK+ interface.
+
+.LP
+EasyTAG is controlled only from a GUI and thus has no command line options.
+
+.LP
+Currently EasyTAG supports the following features:
+
+.IP * 2
+Viewing, editing, writing ID3 TAGs of MP3 files,
+
+.IP * 2
+Process all MP3 files of the selected directory,
+.IP * 2
+Ability to browse subdirectories,
+.IP * 2
+Recursion for tagging, removing, renaming, saving...,
+.IP * 2
+Easy directory selection with a tree browser,
+.IP * 2
+Supports ID3v1, ID3v1.1 tags,
+.IP * 2
+Scan file for automatic tagging (using masks),
+.IP * 2
+Scan tag for automatic renaming file (using masks),
+.IP * 2
+Rename mp3 file,
+.IP * 2
+Can apply a field (artist, title,...) to all other files,
+.IP * 2
+Display MP3 header informations,
+.IP * 2
+Can load a character translation file.
+.SH "AUTHORS"
+.LP
+Baruch Even <baruch@debian.org> wrote this manpage for Debian, it may be used freely with no limitation in any other packaging or otherwise.
+
+.LP
+Jerome Couderc <easytag@gmail.com> is the author of easytag.
diff --git a/debian/easytag.xpm b/debian/easytag.xpm
new file mode 100755
index 0000000..ca769fe
--- /dev/null
+++ b/debian/easytag.xpm
@@ -0,0 +1,360 @@
+/* XPM */
+static char * easytag_32x32_xpm[] = {
+"32 32 325 2",
+" c #FFFFFF",
+". c #FFFFFE",
+"+ c #FFFDF4",
+"@ c #FFFBE9",
+"# c #FFF8DD",
+"$ c #FFF6D1",
+"% c #FFF4C6",
+"& c #FFF1BA",
+"* c #FFEEA6",
+"= c #FFF6D0",
+"- c #FFFEFC",
+"; c #FFFCEF",
+"> c #FFF9E2",
+", c #FFF7D7",
+"' c #FFF5CB",
+") c #FFF2BF",
+"! c #FFF0B0",
+"~ c #FEED9E",
+"{ c #FEEA8E",
+"] c #FEE87F",
+"^ c #FEE674",
+"/ c #FEE369",
+"( c #FEE161",
+"_ c #FDE15D",
+": c #FEE25F",
+"< c #FDE15B",
+"[ c #FEE35B",
+"} c #FEE45A",
+"| c #FDE557",
+"1 c #FDE652",
+"2 c #FEE64D",
+"3 c #FDE547",
+"4 c #FEE745",
+"5 c #FEE676",
+"6 c #FFF8DA",
+"7 c #FDE465",
+"8 c #FEE463",
+"9 c #FDE360",
+"0 c #FEE45E",
+"a c #FDE660",
+"b c #FCE256",
+"c c #FCE558",
+"d c #FCEB59",
+"e c #FCEB53",
+"f c #FCED52",
+"g c #FCEE52",
+"h c #FCF052",
+"i c #FCF152",
+"j c #FBF251",
+"k c #FCF350",
+"l c #FDEC4D",
+"m c #FDE74C",
+"n c #FCF14D",
+"o c #FCF14B",
+"p c #FDF04A",
+"q c #FDF049",
+"r c #FDEF48",
+"s c #FDEF46",
+"t c #FDEE45",
+"u c #FEED44",
+"v c #FEED43",
+"w c #FEE15C",
+"x c #FFF2BC",
+"y c #FAEE5C",
+"z c #F9FB62",
+"A c #F9FA61",
+"B c #F9FA60",
+"C c #FAF95F",
+"D c #FAF85D",
+"E c #FCED55",
+"F c #FCED54",
+"G c #FAF75A",
+"H c #FBF658",
+"I c #FBF657",
+"J c #FBF556",
+"K c #FBF555",
+"L c #FBF453",
+"M c #FBF452",
+"N c #FCF351",
+"O c #FCEF4E",
+"P c #FEE44B",
+"Q c #FCF14C",
+"R c #FDEF47",
+"S c #FEE551",
+"T c #FFF4C7",
+"U c #FEED99",
+"V c #FAF35D",
+"W c #FBF258",
+"X c #FDE851",
+"Y c #FCF24F",
+"Z c #FEE54B",
+"` c #FEEA43",
+" . c #FFE46D",
+".. c #FEE469",
+"+. c #F9FA63",
+"@. c #F9FB63",
+"#. c #FAF85E",
+"$. c #FAF85C",
+"%. c #FBF056",
+"&. c #FBF659",
+"*. c #FBF454",
+"=. c #FCF250",
+"-. c #FCF14E",
+";. c #FDF04B",
+">. c #FDEF49",
+",. c #FDEE46",
+"'. c #FEED45",
+"). c #FEEC42",
+"!. c #FEE258",
+"~. c #FFFBEA",
+"{. c #FDE561",
+"]. c #F9FB64",
+"^. c #FAF75B",
+"/. c #FAF559",
+"(. c #FCF14F",
+"_. c #F9E944",
+":. c #FDE546",
+"<. c #FFF0B2",
+"[. c #FFF3C4",
+"}. c #FBED5D",
+"|. c #FDE54F",
+"1. c #E8E250",
+"2. c #C7C343",
+"3. c #C7C143",
+"4. c #CAC443",
+"5. c #E5DD4A",
+"6. c #D1C842",
+"7. c #D2CA42",
+"8. c #DAC13F",
+"9. c #A39A31",
+"0. c #FAED4A",
+"a. c #A9A132",
+"b. c #CEC23C",
+"c. c #A39A2E",
+"d. c #A89E2E",
+"e. c #A79C2E",
+"f. c #DBCC3B",
+"g. c #FEE942",
+"h. c #FEE884",
+"i. c #FEEEA4",
+"j. c #FBF35D",
+"k. c #FCF256",
+"l. c #EBE550",
+"m. c #B8B33E",
+"n. c #BBB63F",
+"o. c #CDC744",
+"p. c #DED647",
+"q. c #C9C140",
+"r. c #C4BC3D",
+"s. c #DACF43",
+"t. c #CFB83C",
+"u. c #F5E948",
+"v. c #DCD140",
+"w. c #E5D842",
+"x. c #EEE142",
+"y. c #DED13E",
+"z. c #ECDD40",
+"A. c #FEE943",
+"B. c #FEEA8F",
+"C. c #FEEC96",
+"D. c #FAF55F",
+"E. c #FEE34E",
+"F. c #EFE94F",
+"G. c #989231",
+"H. c #85802A",
+"I. c #E8DE48",
+"J. c #ECD445",
+"K. c #67601F",
+"L. c #F3E546",
+"M. c #766F21",
+"N. c #C5B936",
+"O. c #625B1B",
+"P. c #FEE546",
+"Q. c #FFF0B1",
+"R. c #FFF3BF",
+"S. c #FBEE5F",
+"T. c #F9FB65",
+"U. c #D7D956",
+"V. c #7A7B30",
+"W. c #9D9E3D",
+"X. c #77772E",
+"Y. c #F0EE5A",
+"Z. c #F6F45B",
+"`. c #F0ED58",
+" + c #E7D349",
+".+ c #C1BB42",
+"++ c #C7C244",
+"@+ c #AFAB3C",
+"#+ c #C5C042",
+"$+ c #9E9935",
+"%+ c #ADA738",
+"&+ c #7A7627",
+"*+ c #D3CB42",
+"=+ c #DAD144",
+"-+ c #9B932F",
+";+ c #9C942E",
+">+ c #C1B738",
+",+ c #BDB337",
+"'+ c #B3A933",
+")+ c #E5D73F",
+"!+ c #827923",
+"~+ c #BBAE32",
+"{+ c #FEEC43",
+"]+ c #FEE357",
+"^+ c #FFFAE7",
+"/+ c #FFFCF0",
+"(+ c #808132",
+"_+ c #A0A13E",
+":+ c #9B9A3B",
+"<+ c #E5E356",
+"[+ c #71702A",
+"}+ c #6D6C28",
+"|+ c #EEEB57",
+"1+ c #79772B",
+"2+ c #B5B13F",
+"3+ c #CAC546",
+"4+ c #817E2C",
+"5+ c #BFB940",
+"6+ c #CCC643",
+"7+ c #FCF352",
+"8+ c #7B7627",
+"9+ c #6F6A22",
+"0+ c #B0A534",
+"a+ c #716B21",
+"b+ c #E1D441",
+"c+ c #837C25",
+"d+ c #887F25",
+"e+ c #D6C739",
+"f+ c #FEE15F",
+"g+ c #FEE778",
+"h+ c #FAF762",
+"i+ c #8B8C37",
+"j+ c #D0D151",
+"k+ c #B1B044",
+"l+ c #BCBB48",
+"m+ c #8D8C34",
+"n+ c #78782C",
+"o+ c #ACAA3F",
+"p+ c #A2A03A",
+"q+ c #B4A63A",
+"r+ c #939033",
+"s+ c #D3CD48",
+"t+ c #56531D",
+"u+ c #D5CD45",
+"v+ c #57541C",
+"w+ c #B1AA38",
+"x+ c #B9B13A",
+"y+ c #D2BF3E",
+"z+ c #7F7525",
+"A+ c #B6AD35",
+"B+ c #C4B938",
+"C+ c #9E952C",
+"D+ c #BFB335",
+"E+ c #EBDC40",
+"F+ c #FEEA44",
+"G+ c #FCEA60",
+"H+ c #E8EB5D",
+"I+ c #6E6F2B",
+"J+ c #9A9B3C",
+"K+ c #96963A",
+"L+ c #C0C049",
+"M+ c #949437",
+"N+ c #A2A03B",
+"O+ c #9F9E3A",
+"P+ c #B1AE3F",
+"Q+ c #A99B35",
+"R+ c #B6AE3D",
+"S+ c #B3AF3D",
+"T+ c #9D9935",
+"U+ c #FBF554",
+"V+ c #FBF352",
+"W+ c #FCF24D",
+"X+ c #FEEB4B",
+"Y+ c #FEE74A",
+"Z+ c #FDF048",
+"`+ c #FEEE46",
+" @ c #FEEE45",
+".@ c #FEE845",
+"+@ c #FFEEA7",
+"@@ c #FEE260",
+"#@ c #F9FC64",
+"$@ c #F9FB61",
+"%@ c #FAF95D",
+"&@ c #FAF85B",
+"*@ c #FCEC52",
+"=@ c #F5E650",
+"-@ c #D2CE48",
+";@ c #FBF353",
+">@ c #FBF151",
+",@ c #FCEE4F",
+"'@ c #FCED4E",
+")@ c #FDEB4D",
+"!@ c #FCE84C",
+"~@ c #FDE550",
+"{@ c #FDE151",
+"]@ c #FDE559",
+"^@ c #FDE35A",
+"/@ c #FEE25B",
+"(@ c #FEE15B",
+"_@ c #FEE160",
+":@ c #FFF5CC",
+"<@ c #FEE983",
+"[@ c #FBF15B",
+"}@ c #FBF25B",
+"|@ c #FBF059",
+"1@ c #FBED5B",
+"2@ c #FBE95D",
+"3@ c #FCE95F",
+"4@ c #FCE760",
+"5@ c #FEE55E",
+"6@ c #FDE25E",
+"7@ c #FEE15D",
+"8@ c #FEE366",
+"9@ c #FEE673",
+"0@ c #FEED9D",
+"a@ c #FFEFAE",
+"b@ c #FFF7D6",
+"c@ c #FFFCEE",
+"d@ c #FFFEFB",
+"e@ c #FFF6D2",
+"f@ c #FEEC97",
+"g@ c #FFEFA7",
+"h@ c #FFF1B9",
+"i@ c #FFF4C5",
+"j@ c #FFFAE8",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . + @ # $ % & * = ",
+" - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 ",
+" 6 / 7 8 9 0 a b c d e f g h i j k l m n o p q r s t u v w . ",
+" x y z A B C D E F G H I J K L M N O P n Q p q r R t u v S T ",
+" U V z A B C D W X G H I J K L M N Y Z n Q p q r R t u v ` . ",
+" ..+.@.A B C #.$.%.G &.I J K *.L N =.Y -.Q ;.p >.R ,.'.u ).!.~.",
+"+ {.].@.A B C #.$.^./.&.I J K *.L N =.(.Z Q ;.p >.R ,._.u ).:.<.",
+"[.}.].@.A B C #.$.W |.&.I 1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.).g.h.",
+"i.j.].@.A B C #.$.^.|.k.I l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.u ).A.B.",
+"C.D.].@.A B C #.$.^./.E.I J K *.F.G.H.H.I.J.K.p L.M.N.O.u ).P.Q.",
+"R.S.T.U.V.W.X.Y.Z.`.^. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+",
+"/+{.T.@.(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+Y -.9+0+a+b+c+,.d+e+{+f+ ",
+" g+h+].i+j+k+l+m+n+o+p+q+r+s+t+*.u+v+w+x+9+y+z+A+B+C+D+E+F+h. ",
+" = G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+N k Y W+X+Y+p Z+R `+ @.@+@ ",
+" @@#@z $@B C %@$.&@G *@=@-@K ;@>@,@'@)@!@~@{@]@^@/@(@f+_@:@ ",
+" <@[@}@|@1@2@3@4@5@6@/@7@8@/ 9@] { 0@a@) ' b@> c@d@ ",
+" e@f@g@h@i@$ # j@+ . ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/debian/menu b/debian/menu
new file mode 100755
index 0000000..4059daa
--- /dev/null
+++ b/debian/menu
@@ -0,0 +1,5 @@
+?package(easytag):needs="X11" \
+ section="Apps/Sound" \
+ title="easytag" \
+ command="/usr/bin/easytag" \
+ icon="/usr/share/pixmaps/easytag.xpm"
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..8a20d2b
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+# -*- mode: makefile; coding: utf-8 -*-
+
+include /usr/share/cdbs/1/class/autotools.mk
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/simple-patchsys.mk
+
+DEB_MAKE_INVOKE := $(DEB_MAKE_ENVVARS) make -C $(DEB_BUILDDIR)
+
+DEB_INSTALL_MANPAGES_easytag := debian/easytag.1
+
+binary-install/easytag::
+ cp debian/easytag.xpm debian/easytag/usr/share/pixmaps/
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..3480ce4
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,436 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+ base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+ dir=`echo "$object" | sed 's,/.*$,/,'`
+ if test "$dir" = "$object"; then
+ dir=
+ fi
+ # FIXME: should be _deps on DOS.
+ depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+ "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. This file always lives in the current directory.
+ # Also, the AIX compiler puts `$object:' at the start of each line;
+ # $object doesn't have directory information.
+ stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+ tmpdepfile="$stripped.u"
+ outname="$stripped.o"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-M
+ else
+ "$@" -M
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+ sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+
+ base=`echo "$object" | sed -e 's/\.o$//' -e 's/\.lo$//'`
+ tmpdepfile1="$base.o.d"
+ tmpdepfile2="$base.d"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-MD
+ else
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile1"; then
+ tmpdepfile="$tmpdepfile1"
+ else
+ tmpdepfile="$tmpdepfile2"
+ fi
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a space and a tab in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the proprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ test -z "$dashmflag" && dashmflag=-M
+ ( IFS=" "
+ case " $* " in
+ *" --mode=compile "*) # this is libtool, let us make it quiet
+ for arg
+ do # cycle over the arguments
+ case "$arg" in
+ "--mode=compile")
+ # insert --quiet before "--mode=compile"
+ set fnord "$@" --quiet
+ shift # fnord
+ ;;
+ esac
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # "$arg"
+ done
+ ;;
+ esac
+ "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ ) &
+ proc=$!
+ "$@"
+ stat=$?
+ wait "$proc"
+ if test "$stat" != 0; then exit $stat; fi
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ # X makedepend
+ (
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in no)
+ set ""; shift
+ cleared=yes
+ esac
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift;;
+ -*)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift;;
+ esac
+ done
+ obj_suffix="`echo $object | sed 's/^.*\././'`"
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ ) &
+ proc=$!
+ "$@"
+ stat=$?
+ wait "$proc"
+ if test "$stat" != 0; then exit $stat; fi
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the proprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ ( IFS=" "
+ case " $* " in
+ *" --mode=compile "*)
+ for arg
+ do # cycle over the arguments
+ case $arg in
+ "--mode=compile")
+ # insert --quiet before "--mode=compile"
+ set fnord "$@" --quiet
+ shift # fnord
+ ;;
+ esac
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # "$arg"
+ done
+ ;;
+ esac
+ "$@" -E |
+ sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ ) &
+ proc=$!
+ "$@"
+ stat=$?
+ wait "$proc"
+ if test "$stat" != 0; then exit $stat; fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the proprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ ( IFS=" "
+ case " $* " in
+ *" --mode=compile "*)
+ for arg
+ do # cycle over the arguments
+ case $arg in
+ "--mode=compile")
+ # insert --quiet before "--mode=compile"
+ set fnord "$@" --quiet
+ shift # fnord
+ ;;
+ esac
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # "$arg"
+ done
+ ;;
+ esac
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ ) &
+ proc=$!
+ "$@"
+ stat=$?
+ wait "$proc"
+ if test "$stat" != 0; then exit $stat; fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/doc/EasyTAG_Documentation.html b/doc/EasyTAG_Documentation.html
new file mode 100755
index 0000000..300421b
--- /dev/null
+++ b/doc/EasyTAG_Documentation.html
@@ -0,0 +1,612 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>Documentation for EasyTAG</title>
+ <style>
+ <!--
+ body {
+ font-family: Arial, Helvetica, sans-serif;
+ margin: 10;
+ padding: 0;
+ color: #000000;
+ background-color: #FDFDE7;
+ font-size: 1em;
+ }
+ p {
+ text-align: justify;
+ text-indent: 2em;
+ }
+ #contents {
+ font-size: 1.5em;
+ color: blue;
+ }
+
+ h1 {
+ text-align: center;
+ border-top: 1px solid #CCCCCC;
+ border-bottom: 1px solid #CCCCCC;
+ border-left: 1px solid #CCCCCC;
+ border-right: 1px solid #CCCCCC;
+ color: blue;
+ }
+ h2 {
+ font-size: 2em;
+ text-decoration: underline;
+ text-indent: 0pt;
+ margin-top: 1em;
+ color: blue;
+ }
+ h3, h4 {
+ text-decoration: underline;
+ margin-top: 1em;
+ color: blue;
+ }
+ li {
+ list-style-type: circle;
+ text-indent: 2em;
+ }
+ .example-text {
+ font-family: "Courier New", Courier, mono;
+ }
+ .question-text {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-style: italic;
+ padding-top: 1em;
+ color: #666666;
+ }
+ table {
+ border: 1px solid #666666;
+ margin: 0px;
+ padding: 0px;
+ }
+ th {
+ background-color: #CCCCCC;
+ border: 1px solid;
+ }
+
+ -->
+ </style>
+</head>
+<body>
+<h1>EasyTAG</h1>
+ <p id="contents">Contents:</p>
+ <ul>
+ <li><a href="#ch_1">1. Presentation and steps:</a></li>
+ <ul>
+ <li><a href="#ch_1_1">1.1. Description (based on the last version
+ 1.99.9 for GTK2):</a></li>
+ <li><a href="#ch_1_2">1.2. Basics steps of tagging/correcting tags:</a></li>
+ <ul>
+ <li><a href="#ch_1_2_1">1.2.1. Manually:</a></li>
+ <li><a href="#vh_1_2_2">1.2.2. Automatically with &#8220;Fill Tag&#8221; scanner:</a></li>
+ <li><a href="#ch_1_2_3">1.2.3. Automatically with CDDB:</a></li>
+ <li><a href="#ch_1_2_4">1.2.4. Correct tags fields with &#8220;Process Fields&#8221;
+ scanner:</a></li>
+ <li><a href="#ch_1_2_5">1.2.5. Automatic corrections:</a></li>
+ </ul>
+ <li><a href="#ch_1_3">1.3. Basics steps of renaming files and directories:</a></li>
+ <ul>
+ <li><a href="#ch_1_3_1">1.3.1. Manually:</a></li>
+ <li><a href="#ch_1_3_2">1.3.2. Automatically with scanner:</a></li>
+ <li><a href="#ch_1_3_3">1.3.3. Automatically with CDDB:</a></li>
+ <li><a href="#ch_1_3_4">1.3.4. Automatically from a TXT file:</a></li>
+ </ul>
+ </ul>
+ <li><a href="#ch_2">2. Tips:</a></li>
+</ul>
+<p><br /></p>
+<h2><a name="ch_1" id="ch_1"></a>1. Presentation and steps:</h2>
+<h3><a name="ch_1_1" id="ch_1"></a>1.1. Description (based on the last version
+ 1.99.9 for GTK2):</h3>
+<p> EasyTAG is a utility for viewing and editing tags for MP3, MP2,
+FLAC, Ogg Vorbis, MusePack and Monkey's Audio files, and based on a
+simple and nice GTK+ interface making tagging easier.</p>
+<p> With the tree browser, select quickly the directory to search for
+supported files (with or without including sub-directories). All files
+found are displayed in a main with a variable background colour to
+show, in one glance, the files in the same directory.</p>
+<p> A second useful view mode, organizes the files by artist and by
+album to have a quick look to all the artists of your collection, and
+all albums for each artist.</p>
+<p> The interface displays basic file informations taken from the file
+header, like bitrate or duration. With the interface, you can as well
+edit common tag fields as : title, artist, album, year, track number,
+genre and comment which were available into ID3v1.1 and ID3v2.3 tag.
+But you can also edit specials ID3v2.3 fields like : disc album,
+composer, original artist/performer, copyright, URL, encoder name and
+attached pictures.</p>
+<p> Three differents scanners allow you to tag automatically from the
+filename, rename the file and directory from the tag, and process
+fields (for example to change the case). The first two scanners use a
+preview to avoid any mistakes and help you when using or creating yours
+own patterns.</p>
+<p> If necessary you can use one of the both CDDB modes to fill yours
+tags with FreeDB servers. First, the automatic way tries to identify
+the selected files with the correct CDDB album. Else, a manual search
+lets you to search any word in the CDDB database to identify yourself
+the right album.</p>
+<p> Also, you can load the content of a simple TXT file (containing
+filenames) to set name of each file.</p>
+<p> Mass tagging is available with the scanners, but also with buttons
+to apply a field to all other selected files (small button on the right
+of each field).</p>
+<p> To prevent mistakes, the undo and redo functions assist the user to
+recover the last changes.</p>
+<p> The files collection can be export to a play list for Winamp or
+XMMS.</p>
+<p> With the search window, look for the requested files.</p>
+<p> After the various operations over the files, those who were changed
+and need to be saved are displayed in red in the list of files.<br>
+</p>
+<br>
+<p>The program depends on the following libraries:</p>
+<ul>
+ <li> GTK 2.4,</li>
+ <li> id3lib to handle MP3 files,</li>
+ <li> libogg,</li>
+ <li> libvorbis for Ogg Vorbis files,</li>
+ <li> libFLAC (with libogg and libvorbis) for FLAC Vorbis files,</li>
+ <li> mpeg4ip for MP4 files.</li>
+</ul>
+<h3><a name="ch_1_2" id="ch_1"></a>1.2. Basics steps of tagging/correcting tags:</h3>
+<p> EasyTAG offers three different &#8220;main&#8221; ways to tag or rename yours
+files: manually, automatically with the scanner or automatically with
+CDDB. Below is a description of each one.<br>
+But note that for better tagging (when tags are empty for example), the
+program prefers files classed by albums, than all the files in a same
+directory.<br>
+Also, it is important to know that the program works only with the
+selected files in the list. So when saving, using the scanner, using
+the &#8220;small buttons&#8221; and so on, only the selected files are affected,
+except when typing manually in one field. </p>
+<h4><a name="ch_1_2_1" id="ch_1"></a>1.2.1. Manually:</h4>
+<p> Some conditions to use this mode:</p>
+<ul>
+ <li> files mixed</li>
+ <li> not much files</li>
+ <li> little changes to do,</li>
+ <li> adding pictures to the MP3 tag</li>
+</ul>
+<p> If you have only some albums to tag, this mode is very easy to use.
+Indeed, you have to type directly and manually the strings into each
+field.<br>
+Of course, when working by albums, some values as the album name, the
+year and the genre are the same for all files. So for fastest tagging,
+use the &#8220;small buttons&#8221; on the right of each field, to set this value
+to all others selected files in one click.<br>
+The genre can be selected from the list (list of ID3 genres), but you
+can also type your own one.<br>
+The year field, offers also a little improvement, because you need to
+type only the last numbers. The other part will be filled automatically
+according the current century and decade. For example, typing only &#8216;4&#8217;
+will display &#8216;2004&#8217;, and &#8216;94&#8217; will display &#8216;1994&#8217;.<br>
+To number tracks quickly with the format xx/xx, use the first &#8220;small
+button&#8221; with a sharp to renumber automatically the file according its
+position in the list (so the order of files is important). Then the
+second &#8220;small button&#8221; set automatically the number of files.<br>
+For an efficient handling, to pass from one field to the next one, just
+press the enter key. The tab key gives focus to the &#8220;small button&#8221;
+corresponding to the field. The keys PageUp and PageDown permit to jump
+respectively to the previous and next file.<br>
+To attach a picture to the file, just select the image file (JPG or
+PNG) with the &#8220;+&#8221; button (in the picture tab), or Drag&amp;Drop
+directly the picture file in the zone. </p>
+<h4><a name="ch_1_2_2" id="ch_1"></a>1.2.2. Automatically with &#8220;Fill Tag&#8221;
+ scanner:</h4>
+<p> Some conditions to use this mode:</p>
+<ul>
+ <li> files sorted by albums</li>
+ <li> filenames or parent directory contain tag information (artist,
+album, title, &#8230;)</li>
+ <li> empty or not correct tags</li>
+</ul>
+<p> The &#8220;Fill Tag&#8221; scanner uses a pattern to associate words in the
+filename and directories with the tag entries. By this way, the tag
+fields can be completed automatically by pressing the &#8220;green&#8221; button in
+the scanner window or the toolbar. If the tag is partially completed,
+use the option &#8220;Overwrite fields when scanning tag&#8221; in the &#8220;Scanner&#8221;
+tab of the &#8220;Preferences&#8221; window, to replace all fields by the new
+values.<br>
+<br>
+Each code correspond to a field, following theses rules :</p>
+<p>
+<table>
+ <tbody>
+ <tr>
+ <th>
+ <div align="center">Strings associated with code:</div>
+ </th>
+ <th>Will fill the field:</th>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%a</div>
+ </td>
+ <td>Artist</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%b</div>
+ </td>
+ <td>Album</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%c</div>
+ </td>
+ <td>Comment</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%p</div>
+ </td>
+ <td>Composer</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%r</div>
+ </td>
+ <td>Copyright</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%e</div>
+ </td>
+ <td>Encoded by</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%g</div>
+ </td>
+ <td>Genre</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%i</div>
+ </td>
+ <td>None! (used to ignore a string)</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%l</div>
+ </td>
+ <td>Number of tracks</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%o</div>
+ </td>
+ <td>Original artist</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%n</div>
+ </td>
+ <td>Track</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%t</div>
+ </td>
+ <td>Title</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%u</div>
+ </td>
+ <td>URL</td>
+ </tr>
+ <tr>
+ <td>
+ <div align="center">%y</div>
+ </td>
+ <td>Year</td>
+ </tr>
+ </tbody>
+</table>
+<p></p>
+<p><br>
+<br>
+Note : to avoid mistakes, it is recommended to use a code only one time
+in the pattern.
+Of course, like when tagging manually, only the selected files are
+processed by the scanner.<br>
+You can use the defined patterns in the list, or write yours own
+patterns to correspond to the format of yours file names and
+directories.<br>
+To avoid mistakes when selecting the right pattern, or writing it, a
+preview shows immediately the results before to apply the pattern.<br>
+If you need some help with the different codes, press the &#8220;Help&#8221; button
+(the lifebuoy) to display the legend of each code.<br>
+Also, if you want to save yours own patterns, edit or sort then, by
+pressing the &#8220;Mask&#8221; button an little editor will be shown on the
+scanner window.<br>
+<br>
+Below an example of use of patterns :
+</p>
+<blockquote>
+ <p> a) the following filename :</p>
+ <p class="example-text"> &#8220;/mnt/MP3/EVANESCENCE &#8211; Fallen (2003) &#8211;
+Rock/01. Going Under.mp3&#8221;</p>
+ <p> b) with the pattern :</p>
+ <p class="example-text"> &#8220;%a - %b (%y) - %g/%n. %t&#8221;</p>
+ <p> c) you will fill the tag with theses strings :</p>
+ <ul>
+ <li> Artist (%a) =&gt; EVANESCENCE</li>
+ <li> Album (%b) =&gt; Fallen</li>
+ <li> Year (%y) =&gt; 2003</li>
+ <li> Genre (%g) =&gt; Rock</li>
+ <li> Track (%n) =&gt; 01</li>
+ <li> Title (%t) =&gt; Going Under</li>
+ </ul>
+</blockquote>
+<h4><a name="ch_1_2_3" id="ch_1"></a>1.2.3. Automatically with CDDB:</h4>
+<p> Some conditions to use this mode:</p>
+<ul>
+ <li> files sorted by album</li>
+ <li> file audio data must correspond to the original CD (to use the
+Automatic Search)</li>
+ <li> album found in CD database</li>
+</ul>
+<p> To use tagging with the CD database, two modes are available.
+First, privilege the automatic search, but if it fails to identify the
+album, try with the manual search.</p>
+<p> Automatic Search</p>
+<p> This mode generates the CddbID from the audio files to request the
+database. So select all files of the album (and only them) in the right
+order (same order of the CD) and press the &#8220;Search&#8221; button.<br>
+All the corresponding albums found in the CD database are listed below.
+Select a line to display the tracks of this album on the right.<br>
+Finally, to fill the tag, select the interesting lines in the last list
+and press the &#8220;Apply&#8221; button.</p>
+<p> Manual Search</p>
+<p> If none album was found with the previous method, your last chance
+is to try a search using words (words supposed to by in the artist
+name, album name or track name). This search returns the same results
+of the search service on the freedb.org site. And may return lot of
+lines&#8230;<br>
+While browsing the albums list, those which have been already displayed
+are shown in red. Press the &#8220;red line button&#8221; to keep only these lines
+and remove all other.<br>
+When the right album was identified, follow the same method as the
+&#8220;automatic search&#8221; to select and apply the album to yours files. </p>
+<h4><a name="ch_1_2_4" id="ch_1"></a>1.2.4. Correct tags fields with &#8220;Process
+ Fields&#8221; scanner:</h4>
+<p> Some conditions to use this mode:</p>
+<ul>
+ <li> filename or tag fields filled</li>
+ <li> want to correct the case</li>
+ <li> want to change some characters</li>
+</ul>
+<p> This feature is interesting to normalize quickly yours filenames or
+tags. For example to fix the case or convert some characters (filename
+to lower case and words separated with spaces).<br>
+On the top of the window, select the push-down buttons corresponding to
+each field to process. And then, press again the &#8220;green&#8221; button to run
+the scanner on the selected fields. </p>
+<h4><a name="ch_1_2_5" id="ch_1"></a>1.2.5. Automatic corrections:</h4>
+<p> Sometimes when loading files, you will note that some files are displayed to
+red. This will be due to useless spaces which are automatically stripped in the
+fields.<br>
+So it displays the file in red to let you to save the file. Note that you can't
+disable this feature). </p>
+<h3><a name="ch_1_3" id="ch_1"></a>1.3. Basics steps of renaming files and directories:
+</h3>
+<h4><a name="ch_1_3_1" id="ch_1"></a>1.3.1. Manually:</h4>
+<p> Some conditions to use this mode:</p>
+<ul>
+ <li> little changes to do&#8230; </li>
+</ul>
+<p>To rename the filenames one by one (as only the selected file can be
+changed) enter the new file name, in the field of the &#8216;File&#8217; frame in
+the right top of the main window.<br>
+The last name remains in the file list up to saving the file. But the
+new name is displayed in the file field.<br>
+The invalid characters typed (for windows partitions like: &#8216;/&#8217;, &#8217;+&#8217;,
+and so on) will be automatically replaced, except if you disable the
+option &#8220;Replace illegal characters in filename (for Windows and
+CD-Rom)&#8221; in the &#8220;Misc&#8221; tab of the preferences window.<br>
+</p>
+<p>To rename the directory directly in the browser, use the popup menu
+to open the &#8216;Rename Directory&#8217; window and to edit the new name for the
+directory. The change takes effect immediately and you can&#8217;t undo it.<br>
+The version 1.99.9 adds the ability to rename the directory from tag
+with a pattern.<br>
+</p>
+<p>Note : Unlike the scanner, when renaming manually the directory, the
+files aren&#8217;t moved. As the directory is renamed all files (even files
+not supported in EasyTAG like jpeg) stay in the directory. </p>
+<h4><a name="ch_1_3_2" id="ch_1"></a>1.3.2. Automatically with scanner:</h4>
+<p> Some conditions to use this mode:</p>
+<ul>
+ <li> tags filled</li>
+</ul>
+<p> With the scanner mode &#8220;Rename File and Directory&#8221;, you can easily
+fix names of lot of files and move them into new directories. As the
+new file names will be based on the tag values, it is important to have
+correct tags.<br>
+Like in the &#8220;Fill Tag&#8221; scanner, it uses the same codes to build the
+filename structure from the tag entries, following theses rules:</p>
+<p>
+<table>
+ <tbody>
+ <tr>
+ <th>
+ <div align="center">To use the field:</div>
+ </th>
+ <th>
+ <div align="center">Use the code:</div>
+ </th>
+ </tr>
+ <tr>
+ <td>Artist</td>
+ <td>
+ <div align="center">%a</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Album</td>
+ <td>
+ <div align="center">%b</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Comment</td>
+ <td>
+ <div align="center">%c</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Composer</td>
+ <td>
+ <div align="center">%p</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Copyright</td>
+ <td>
+ <div align="center">%r</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Encoded by</td>
+ <td>
+ <div align="center">%e</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Genre</td>
+ <td>
+ <div align="center">%g</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Number of tracks</td>
+ <td>
+ <div align="center">%l</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Original artist</td>
+ <td>
+ <div align="center">%o</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Track</td>
+ <td>
+ <div align="center">%n</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Title</td>
+ <td>
+ <div align="center">%t</div>
+ </td>
+ </tr>
+ <tr>
+ <td>URL</td>
+ <td>
+ <div align="center">%u</div>
+ </td>
+ </tr>
+ <tr>
+ <td>Year</td>
+ <td>
+ <div align="center">%y</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<p></p>
+<p>Note : a code can be used several times Of course, like when
+renaming manually, only the selected files are processed by the
+scanner. The new files name are only visible in the &#8216;File&#8217; frame up to
+saving the files.<br>
+This scanner also offers the ability to move the files in new or
+existing directories, using an absolute or relative path.</p>
+<p>Relative path:</p>
+<p>By using a relative path, the files will be moved into a
+subdirectory of the current directory.<br>
+For example,<br>
+- the file &#8220;/mp3/evanescence/01. Going Under.mp3&#8221;<br>
+- with the pattern &#8220;%a - %b/%n - %t&#8221;<br>
+- will be moved to &#8220;/mp3/evanescence/EVANESCENCE &#8211; Fallen/01 - Going
+Under.mp3&#8221;<br>
+- if tag contains the values %a = EVANESCENCE, %b = Fallen, %n = 01 and
+%t = Going Under</p>
+<p> Absolute path:</p>
+<p> By using an absolute path, the files can be moved in any directory.
+The current path of the file can be added to the pattern by pressing
+the icon on the left of the field (a directory with a green &#8216;+&#8217;). With
+this feature, it is easier to change the current path of the file.<br>
+For example:<br>
+- the file &#8220;/mp3/evanescence/01. Going Under.mp3&#8221;<br>
+- with the pattern &#8220;/mp3/%a - %b/%n - %t&#8221;<br>
+- will be moved to &#8220;/mp3/EVANESCENCE &#8211; Fallen/01 - Going Under.mp3&#8221;<br>
+- if tag contains the values %a = EVANESCENCE, %b = Fallen, %n = 01and
+%t = Going Under</p>
+<p> Note: Unlike when renaming manually the directory, the scanner
+moves the files to the new destination. So it is important to know that
+the files not recognized by EasyTAG will not be moved to the new
+directory and will stay in the current location. The files are moved
+when only when saving files, so you can use undo if needed. </p>
+<h4><a name="ch_1_3_3" id="ch_1"></a>1.3.3. Automatically with CDDB:</h4>
+<p> Like for the tag fields, you can use the CDDB results to apply the
+new name to the file. But by this way you can rename only the file
+name, and not the path. So you can use the second method. Activate the
+&#8216;Rename file&#8217; scanner which will be ran after applying the results. </p>
+<h4><a name="ch_1_3_4" id="ch_1"></a>1.3.4. Automatically from a TXT file:</h4>
+<p> Some conditions to use this mode:</p>
+<ul>
+ <li> to have a text file with track names</li>
+ <li> files sorted by album</li>
+</ul>
+<p> With this feature, you can rename files, but not the directories. A
+simple text file containing the list of track names will be loaded to
+associate each line with a file.</p>
+<h2> <a name="ch_2" id="ch_1"></a>2. Tips:</h2>
+<p class="question-text">How to see in one glance all tags of each file?</p>
+<p> Open the search window and run it without typing any parameter
+(field &#8220;Search :&#8221; empty). As result you will display content of all
+files.</p>
+<p class="question-text">How to play files?</p>
+<p> You can play directly the selected files or those placed in a
+directory by using an external application like XMMS. Over the selected
+files on the files list, or a directory in the tree, use the popup menu
+an press &#8220;Run Audio Player&#8221;. But default, as set in the preference
+window, the command ran is &#8220;xmms &#8211;p&#8221; to play only this files. But if
+you want to enqueue files, type the command &#8220;xmms &#8211;e&#8221; when using the
+popup menu entries &#8220;Open file(s) with &#8230;&#8221; or &#8220;Browse directory with&#8230;&#8221;</p>
+<p class="question-text">Files can be organized by artist and album?</p>
+<p>The &#8220;Artist + Album&#8221; view is for you. To activate it press the
+pushbutton in the toolbar with &#8220;a head + a disc&#8221;. This mode allows to
+browser easier the albums of an artist. It is also a good way to
+identify files with a wrong tag.</p>
+<p class="question-text">How to run the program directly from a
+directory?</p>
+<p>For example to run EasyTAG loading files from the current directory,
+use the command &#8220;easytag . &amp;&#8221;. In the same way, to load an other
+directory, use the command line: &#8220;easytag /file-audio-dir&#8221;.</p>
+<p class="question-text">Tags and filenames changed, but how to save
+only tags?</p>
+<p>After renaming the files or correcting the tags you may want to save
+only tag data. When saving a file it will ask you confirmation before
+to save the tag and then to rename the file.<br>
+To do the same with several files at one time, answer like this to the
+confirmation dialog boxes:<br>
+- Confirmation to tag write: Check &#8220;Do the same for all files&#8221; and
+press &#8220;Yes&#8221;<br>
+- Confirmation to rename file: Check &#8220;Do the same for all files&#8221; and
+press &#8220;No&#8221;</p>
+<p class="question-text">How to see if a field haven&#8217;t been filled?</p>
+<p>Two ways are available:<br>
+- You can sort the list of files using the corresponding criteria.
+Empty fields appear on the top of the list. (Example: &#8220;sort by
+ascending artist name&#8221;).<br>
+- Use the search window to display all files and identify the &#8220;empty&#8221;
+cell. </p>
+<p>&nbsp;</p>
+</body>
+</html>
diff --git a/doc/EasyTAG_Documentation_fr.html b/doc/EasyTAG_Documentation_fr.html
new file mode 100755
index 0000000..4c13669
--- /dev/null
+++ b/doc/EasyTAG_Documentation_fr.html
@@ -0,0 +1,448 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Documentation du logiciel EasyTAG</title>
+ <style>
+ body {
+ font-family: Arial, Helvetica, sans-serif;
+ margin: 10;
+ padding: 0;
+ background-color: #FDFDE7;
+ font-size: 1em;
+ }
+ p {
+ text-align: justify;
+ text-indent: 2em;
+ }
+
+ .sans-retrait {
+ text-align: justify;
+ text-indent: 0em;
+ }
+ .txt_autre {
+ font-family: "Arial", sans-serif;
+ }
+
+ #tab_matiere {
+ font-size: 1.5em;
+ color: blue;
+ }
+
+ .souligne {
+ text-decoration: underline;
+ }
+
+ h1 {
+ text-align: center;
+ border-top: 1px solid #CCCCCC;
+ border-bottom: 1px solid #CCCCCC;
+ border-left: 1px solid #CCCCCC;
+ border-right: 1px solid #CCCCCC;
+ color: blue;
+ }
+ h2 {
+ font-size: 1.5em;
+ text-decoration: underline;
+ text-indent: 0pt;
+ margin-top: 1em;
+ color: blue;
+ }
+ h3, h4 {
+ text-decoration: underline;
+ margin-top: 1em;
+ color: blue;
+ }
+ li {
+ margin-left: 2em;
+ list-style-type: circle;
+ text-indent: 0em;
+ }
+
+ .example-text {
+ font-family: "Courier New", Courier, mono;
+ }
+
+ .question-text {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-style: italic;
+ padding-top: 1em;
+ color: #666666;
+ }
+ table {
+ border: 1px solid #666666;
+ margin: 0px;
+ padding: 0px;
+ }
+ th {
+ background-color: #CCCCCC;
+ border: 1px solid;
+ }
+
+ </style>
+</head>
+<body>
+ <h1>EasyTAG</h1>
+ <p id="tab_matiere">Table des matières.</p>
+ <ul>
+ <li><a href="#ch_1">1. Présentation générale</a></li>
+ <ul>
+ <li><a href="#ch_1_1">1.1. Vue d'ensemble des fonctionnalités du logiciel.</a></li>
+ <li><a href="#ch_1_2">1.2. Editer/corriger les tags.</a></li>
+ <ul>
+ <li><a href="#ch_1_2_1">1.2.1. Mode manuel.</a></li>
+ <li><a href="#ch_1_2_2">1.2.2. Mode automatique via le scanner "Compléter le(s) Tag(s)".</a></li>
+ <li><a href="#ch_1_2_3">1.2.3. Mode automatique via la base de données CDDB.</a></li>
+ <li><a href="#ch_1_2_4">1.2.4. Correction des tags via le scanner "Traiter les Champs".</a></li>
+ </ul>
+ <li><a href="#ch_1_3">1.3. Renommer les fichiers/les répertoires.</a></li>
+ <ul>
+ <li><a href="#ch_1_3_1">1.3.1. Mode manuel.</a></li>
+ <li><a href="#ch_1_3_2">1.3.2. Mode automatique via le scanner.</a></li>
+ <li><a href="#ch_1_3_3">1.3.3. Mode automatique via la base de données CDDB.</a></li>
+ <li><a href="#ch_1_3_4">1.3.4. Mode automatique via la lecture d'un fichier texte.</a></li>
+ </ul>
+ </ul>
+ <li><a href="#ch_2">2. Astuces.</a></li>
+ </ul>
+ <p><br/><br/></p>
+
+ <h2><a name="ch_1" id="ch_1">1. Présentation générale.</a></h2>
+ <h3><a name="ch_1_1" id="ch_1_1">1.1. Vue d'ensemble des fonctionnalités du logiciel (version 1.99.9 développée avec GTK2).</a></h3>
+ <p>EasyTAG est un utilitaire permettant l'édition et la modification des tags des fichiers audio de type MP3, MP2, FLAC, Ogg Vorbis, MusePack et Monkey. Il s'appuie sur une interface, simple et intuitive, développée en GTK+. Cette interface est organisée autour de trois fenêtres.</p>
+ <p>Une première fenêtre, nommée Sélecteur, permet de choisir rapidement le répertoire particulier contenant les fichiers audio que vous voulez traiter (une option permet d'étendre cette recherche aux sous répertoires). EasyTAG dispose de deux modes de visualisation du contenu du répertoire (et/ou sous répertoires) :
+ <ul>
+ <li>Un premier mode de type arborescence qui permet de naviguer dans les différents répertoires du support de stockage et de sélectionner rapidement un répertoire particulier. L'ensemble des fichiers trouvés dans ce répertoire sont alors affichés sous forme d'une liste. Dans cette liste, seule une alternance de couleur permet de distinguer les fichiers appartenant à des artistes/albums différents.</li>
+ <li>Le deuxième mode, complémentaire du précédent, affiche le contenu du répertoire sélectionné sous la forme d'une arborescence de type artistes/albums qui permet d'accéder rapidement à un artiste donné et aux fichiers audio d'un album particulier de ce dernier.</li>
+ </ul>
+ <p>Une deuxième fenêtre, nommée Fichier, affiche certaines informations de base contenues dans l'en-tête du fichier audio comme, par exemple, le bitrate ou la durée du morceau.</p>
+ <p>La troisième fenêtre, nommée Tag, permet d'afficher et de modifier le contenu des tags disponibles dans les normes ID3v1.1 et ID3v2.3 comme : titre, artiste, album, année, numéro de piste, genre et commentaire. Mais vous pouvez avoir aussi accès à certains tags particuliers disponibles dans la norme ID3v2.3 comme : album, compositeur, premier artiste/interprète, copyright, URL, type d'encodeur et images.</p>
+
+ <p>EasyTAG offre la possibilité de traitement automatique des tags des fichiers par l'utilisation de scanners. Trois scanners sont disponibles qui permettent :
+ <ul>
+ <li>soit de renseigner automatiquement les différents tags à partir des informations contenues dans le nom du fichier,</li>
+ <li>soit de renommer automatiquement les fichiers et le répertoire les contenant à partir des informations contenues dans leurs tags,</li>
+ <li>soit d'effectuer différentes opérations de mise en forme sur les différents tags et noms de fichiers (par exemple, changer la casse).</li>
+ </ul>
+
+ <p class="sans-retrait">Dans le cas des deux premiers scanners, les opérations sont effectuées sur la base d'un masque (voir <a href="#ch_1_2_2">paragraphe 1.2.2</a>). Une pré-visualisation de l'effet d'un masque particulier est disponible ce qui :</p>
+ <ul>
+ <li>permet d'éviter toute erreur de traitement,</li>
+ <li>constitue une aide précieuse pour réaliser votre propre modèle de masque et ainsi adapter au mieux l'outil à vos propres besoins.</li>
+ </ul>
+ <p> EasyTAG offre aussi la possibilité de traitement automatique via une connexion internet. En effet, vous pouvez, en interrogeant la base de données CDDB disponible sur les serveurs FreeDB, rechercher le bon album correspondant aux fichiers sélectionnés et renseigner alors directement les différents tags de vos fichiers.<br/>Deux modes d'interrogation sont possibles : un mode automatique et un mode manuel. Dans le mode automatique, le programme essaie de trouver automatiquement, dans la base de données CDDB, le bon album correspondant aux fichiers sélectionnés. Dans le mode manuel, vous effectuez vous même la recherche dans la base de données CDDB sur la base de mots clé.</p>
+
+ <p> EasyTAG offre enfin la possibilité de renommer chaque fichier grâce à la lecture d'un simple fichier texte contenant la liste exhaustive des noms des fichiers sélectionnés.</p>
+
+ <p> EasyTAG vous permet aussi de modifier simultanément les tags de plusieurs fichiers. Pour cela, il faut, après avoir sélectionné un ensemble de fichiers, soit utiliser un scanner (voir <a href="#ch_1_2_2">paragraphe 1.2.2</a>), soit cliquer sur le petit bouton rond situé à droite de chaque tag pour appliquer la modification à l'ensemble des fichiers.</p>
+ <p> Pour bien contrôler les opérations réalisées sur les fichiers et éviter toute modification involontaire, le programme dispose de deux touches : une touche "Annuler Modif. des fichier(s)" qui permet de revenir à l'état existant avant les modifications envisagées sur les fichiers et une touche "Refaire les modifications des fichiers" qui permet de réaliser l'opération inverse de la précédente.</p>
+
+ <p> Par ailleurs, le programme dispose des fonctionnalités suivantes :</p>
+ <ul>
+ <li>création d'une playlist de différents fichiers pour les logiciels Winamp ou XMMS,</li>
+ <li>possibilité de rechercher dans votre collection les fichiers par mots clé (sur le nom du fichier, le titre ...).</li>
+ </ul>
+
+ <p> Au final, les fichiers ayant subi des modifications (et qui, par conséquent, doivent être sauvegardés) sont clairement identifiables car ils apparaissent en rouge dans la liste des fichiers affichés.<br/></p>
+
+ <p>Pour fonctionner, EasyTAG doit disposer des librairies suivantes :</p>
+ <ul>
+ <li>GTK 2.4,</li>
+ <li>id3lib pour les fichiers MP3,</li>
+ <li>libogg,</li>
+ <li>libvorbis pour les fichiers Ogg Vorbis,</li>
+ <li>libFLAC (en complément de libogg and libvorbis) pour les fichiers FLAC Vorbis,</li>
+ <li>mpeg4ip pour les fichiers MP4.</li>
+ </ul>
+
+ <h3><a name="ch_1_2" id="ch_1_2">1.2. Editer/corriger les tags.</a></h3>
+ <p>Nous avons vu que EasyTAG offre trois différents modes de traitement pour renommer ou bien encore pour modifier les tags de vos fichiers : un mode manuel, un mode automatique utilisant un scanner et un mode automatique utilisant une base de données CDDB. Dans la suite, nous allons décrire la mise en oeuvre de chacun d'entre eux.</p>
+ <p>Avant toute chose, il est bon de noter que le traitement des tags sera grandement facilité si les fichiers sont regroupés par album plutôt que d'être tous stockés dans un même répertoire.</p>
+ <p>De plus, il est important de garder à l'esprit que chaque traitement ne s'applique que sur les fichiers sélectionnés dans la liste. De même, la procédure de sauvegarde ne s'applique aussi que sur ces fichiers.</p>
+
+ <h4><a name="ch_1_2_1" id="ch_1_2_1">1.2.1. Mode manuel.</a></h4>
+ <p>Ce mode peut être utilisé dans les conditions suivantes :</p>
+ <ul>
+ <li>les fichiers sont mélangés et non pas classés album par album,</li>
+ <li>les fichiers ne sont pas trop nombreux,</li>
+ <li>le nombre de traitements à effectuer est faible,</li>
+ <li>vous voulez ajouter des images aux tags MP3 des fichiers.</li>
+ </ul>
+ <p>Si vous n'avez à modifier les tags que de quelques albums, ce mode répond bien à votre besoin puisqu'il suffit alors de taper dans chaque tag que vous voulez renseigner la valeur correspondante.</p>
+ <p>Bien évidemment, lorsque vous travaillez sur des albums entiers, certains paramètres comme le nom de l'album, l'année et le genre sont communs à tous les fichiers. Dans ce cas, il est conseillé d'utiliser le petit bouton rond situé à droite de chaque tag. En effet, en cliquant sur ce bouton, on affecte, pour un tag donné, la même valeur à l'ensemble des fichiers sélectionnés.</p>
+ <p>Le genre peut être choisi dans une liste prédéfinie (liste des genres ID3), mais vous pouvez très bien définir un genre qui vous est personnel.</p>
+ <p>La saisie de la valeur du tag année a été simplifiée au maximum. En effet, vous pouvez seulement saisir les deux derniers digits (dizaines et unités) de l'année et EasyTAG completera alors les digits manquants. Par exemple :</p>
+ <ul>
+ <li>si vous entrez "4", EasyTAG affichera "2004",</li>
+ <li>si vous entrez "94", EasyTAG affichera "1994".</li>
+ </ul>
+
+ <p>La numérotation des différentes pistes au format "numéro de piste/nombre total de pistes" peut se faire rapidement en utilisant le petit bouton situé à gauche du mot Piste et le petit bouton situé à gauche du tag "Nombre de pistes". Le premier bouton permet d'affecter au tag Piste une valeur correpondant à la position du fichier considéré dans la liste des fichiers présents dans le répertoire (l'ordre des fichiers est donc essentiel). Le deuxième petit bouton permet d'affecter au tag "Nombre de pistes" une valeur correspondant au nombre de fichiers présents dans le répertoire.
+ <p>La connaissance de certaines touches permettent d'être plus efficace. Ainsi, la touche "Entrée" permet de se déplacer rapidement d'un tag au suivant. De même, pour un tag particulier, la touche Tab permet d'activer directement le petit bouton rond situé à droite de celui-ci (valeur du tag donnée à l'ensemble des fichiers sélectionnés). Enfin, les touches PageUp et PageDown permettent respectivement de passer au fichier précédent ou au fichier suivant.</p>
+
+ <p>Enfin, il est possible d'attacher une image (couverture de l'album, par exemple) à un fichier mp3. Pour cela, il suffit de sélectionner le fichier image (JPG ou PNG) avec le bouton &#8220;+&#8221; présent dans le menu "Images". On peut aussi effectuer un &laquo;Drag and Drop&raquo; du fichier image directement dans la zone "Images" du menu du même nom.</p>
+
+ <h4><a name="ch_1_2_2" id="ch_1_2_2">1.2.2. Mode automatique via le scanner "Compléter le(s) Tag(s)".</a></h4>
+ <p>Ce mode peut être utilisé dans les conditions suivantes :</p>
+ <ul>
+ <li>les fichiers sont classés par album,</li>
+ <li>les noms des fichiers ou le répertoire de ces fichiers contiennent les informations pertinentes (artiste, album, titre, &#8230;),</li>
+ <li>les tags sont vides ou bien encore partiellement renseignés.</li>
+ </ul>
+ <p> Le scanner "Compléter le(s) Tag(s)" utilise un modèle de masque pour associer les différents mots constituant le nom du fichier ou le répertoire avec les différents tags correspondants. De cette façon, il est alors possible de renseigner automatiquement les tags en cliquant sur le bouton "vert" de la barre des tâches de la fenêtre Scanner. Si les tags sont déjà partiellement renseignés, vous pouvez remplacer tous les anciens tags par les nouveaux tags à la condition d'avoir coché la case "Ecraser les champs lors d'un Scan du tag" de l'onglet Scanner du menu Préférences.</p>
+ <p class="sans-retrait"><br/>Le tableau suivant présente, pour le modèle de masque du scanner, la correspondance entre code et tag :</p>
+ <div align="center"><table>
+ <tbody>
+ <tr>
+ <th><div align="center">Cette valeur de code :</div></th>
+ <th>va renseigner le tag :</th></tr>
+ <tr>
+ <td><div align="center">%a</div></td>
+ <td>Artiste</td></tr>
+ <tr>
+ <td><div align="center">%b</div></td>
+ <td>Album</td></tr>
+ <tr>
+ <td><div align="center">%c</div></td>
+ <td>Commentaire</td></tr>
+ <tr>
+ <td><div align="center">%p</div></td>
+ <td>Compositeur</td></tr>
+ <tr>
+ <td><div align="center">%r</div></td>
+ <td>Copyright</td></tr>
+ <tr>
+ <td><div align="center">%e</div></td>
+ <td>Encodeur</td></tr>
+ <tr>
+ <td><div align="center">%g</div></td>
+ <td>Genre</td></tr>
+ <tr>
+ <td><div align="center">%i</div></td>
+ <td>Rien! (utilisé pour ignorer un mot particulier)</td></tr>
+ <tr>
+ <td><div align="center">%l</div></td>
+ <td>Nombre de pistes</td></tr>
+ <tr>
+ <td><div align="center">%o</div></td>
+ <td>Artiste Orig.</td></tr>
+ <tr>
+ <td><div align="center">%n</div></td>
+ <td>Piste</td></tr>
+ <tr>
+ <td><div align="center">%t</div></td>
+ <td>Titre</td></tr>
+ <tr>
+ <td><div align="center">%u</div></td>
+ <td>URL</td></tr>
+ <tr>
+ <td><div align="center">%y</div></td>
+ <td>Année</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <p class="sans-retrait"><br/><br/>Note : Pour éviter toute erreur, il est recommandé de n'utiliser un code particulier qu'une seule fois dans un modèle de masque. Bien évidemment, comme dans le cas de l'édition/modification manuelle des tags, seuls les fichiers sélectionnés seront modifiés par le scanner.</p>
+ <p>Dans EasyTAG, vous disposez d'une liste de modèles de masque pré-définis mais vous pouvez aussi créer votre propre modèle de masque pour correspondre au mieux au format des noms et des répertoires de vos fichiers audio. Pour éviter toute erreur lors de la définition du modèle de masque, EasyTAG intègre une fonction de pré-visualisation qui vous permet de vous rendre immédiatement compte du résultat du masque avant de l'appliquer effectivement sur les fichiers.</p>
+ <p>Si vous avez besoin d'aide quant à la signication des différents codes, vous pouvez presser le bouton "?" qui ouvre la fenêtre Légende décrivant toutes les correspondances possibles (code/tag). De plus, pour créer votre propre modèle de masque, le modifier ou le sauvegarder, vous avez à votre disposition l'outil "Editeur de masque" accessible en cliquant sur le bouton "masque" de la barre des tâches.</p>
+
+ <p class="sans-retrait"><br/>Voici un exemple d'utilisation d'un modèle de masque :</p>
+ <blockquote>
+ <p>a) si le fichier audio se nomme : </p>
+ <p class="example-text">&#8220;/mnt/MP3/EVANESCENCE &#8211; Fallen (2003) &#8211;Rock/01. Going Under.mp3&#8221;</p>
+ <p>b) avec ce masque particulier : <span class="example-text">&#8220;%a - %b (%y) - %g/%n. %t&#8221;</span></p>
+ <p>c) les tags vont être renseignés avec les valeurs suivantes :</p>
+ <ul>
+ <li>Artiste (%a) =&gt; EVANESCENCE</li>
+ <li>Album (%b) =&gt; Fallen</li>
+ <li>Année (%y) =&gt; 2003</li>
+ <li>Genre (%g) =&gt; Rock</li>
+ <li>Piste (%n) =&gt; 01</li>
+ <li>Titre (%t) =&gt; Going Under</li>
+ </ul>
+ </blockquote>
+
+ <h4><a name="ch_1_2_3" id="ch_1_2_3">1.2.3. Mode automatique via la base de données CDDB.</a></h4>
+ <p>Ce mode peut être utilisé dans les conditions suivantes :</p>
+ <ul>
+ <li>les fichiers sont classés par album,</li>
+ <li>les données du fichier audio doivent correspondre à celles du CD d'origine (condition nécessaire pour utiliser la recherche automatique),</li>
+ <li>l'album doit être répertorié dans la base de données CDDB.</li>
+ </ul>
+ <p>Pour renseigner les tags via la base de données, deux modes de recherche sont disponibles (un mode automatique et un mode manuel). Une bonne stratégie est d'utiliser, dans un premier temps, le mode automatique. Si ce dernier s'avère incapable d'identifier correctement l'album, vous pouvez vous rabattre sur le mode manuel et utiliser alors des mots clé pour guider la recherche.</p>
+
+ <p class="souligne">Recherche automatique.</p>
+ <p>La recherche se fait par l'envoi à la base de données CDDB d'un paramètre nommé CddbID identifiant normalement le CD audio. Ce paramètre est calculé par EasyTAG à partir des caractéristiques des différentes plages du CD audio (durée totale du CD, nombre de plages, durée de chaque plage). De ce fait, il est nécessaire de sélectionner tous les fichiers de l'album (et seulement ceux-ci) et il est aussi nécessaire que ces derniers soient classés exactement comme dans le CD d'origine. Pour lancer l'interrogation de la base de données, cliquez sur le bouton "Rechercher".</p>
+ <p>La liste des différents albums possibles trouvés dans la base de données (le cddbid n'étant pas unique) apparait alors. Sélectionnez une des lignes de cette liste pour visualiser à droite les différentes pistes de cet album.</p>
+ <p>Finalement, Il suffit alors de cliquer sur le bouton "Appliquer" pour renseigner les différents tags. Si aucune piste de l'album n'est sélectionnée, les tags de l'ensemble des pistes seront modifiés. Par contre, si une piste est sélectionnée, seuls les tags de cette piste seront modifiés.</p>
+
+ <p class="souligne">Recherche manuelle.</p>
+ <p>Si aucun album n'a pu être identifié par la recherche automatique, vous pouvez toujours essayer une recherche manuelle en utilisant des mots clé (ces mots doivent être présents dans le nom de l'artiste, le nom de l'album ou bien encore dans le nom de la piste). La liste de résultats obtenue dans ce mode est identique à celle obtenue via l'outil de recherche du site freedb.org. Cette recherche peut s'avérer peu sélective et conduire à une liste de taille importante.</p>
+ <p>Dans la liste d'albums obtenue, tous les albums déjà consultés sont affichés en rouge. Cliquez sur le bouton caractérisé par des lignes rouges pour ne conserver que ces lignes et éliminer toutes les autres de la liste. Dès que vous avez réussi à identifier le bon album, il suffit alors, pour renseigner les tags de vos fichiers, de procéder exactement comme dans le mode automatique.</p>
+
+ <h4><a name="ch_1_2_4" id="ch_1_2_4">1.2.4. Correction des tags via le scanner "Traiter les Champs".</a></h4>
+ <p>Ce mode peut être utilisé dans les conditions suivantes :</p>
+ <ul>
+ <li>les noms des fichiers ou les différents tags sont déjà renseignés,</li>
+ <li>vous voulez corriger la casse,</li>
+ <li>vous voulez éliminer certains caractères de certains tags.</li>
+ </ul>
+ <p>Cette fonctionnalité est très utile lorsque vous voulez rapidement uniformiser les noms des fichiers ou bien encore les tags. Par exemple, il est très facile de modifier la casse (passage du titre en minuscules &#8230;) ou bien encore de remplacer certains caractères par d'autres (mots du nom de fichier séparés par des blancs et non plus par des %20 &#8230;).</p>
+ <p>Dans le haut de la fenêtre scanner, sélectionnez les boutons des tags sur lesquels vous souhaitez effectuer le traitement (ces boutons passent alors en grisé) puis, cliquez sur le bouton "vert" pour appliquer alors les modifications sur les différents fichiers et tags sélectionnés.</p>
+
+ <h3><a name="ch_1_3" id="ch_1_3">1.3. Renommer les fichiers/les répertoires. </a></h3>
+ <p>EasyTAG offre différents modes pour renommer les fichiers et/ou les répertoires : un mode manuel, un mode automatique via le scanner, un mode automatique via la base de données CDDB et enfin un mode basé sur la lecture d'un fichier texte. Dans la suite, nous allons décrire la mise en oeuvre de chacun d'entre eux.</p>
+
+ <h4><a name="ch_1_3_1" id="ch_1_3_1">1.3.1. Mode manuel.</a></h4>
+ <p>Ce mode peut être utilisé si vous avez peu de modifications à réaliser (sinon, cela s'avererait vite fastidieux)</p>
+
+ <p>Pour renommer manuellement un fichier, il suffit de sélectionner ce dernier dans la liste puis de modifier son nom dans la fenêtre Fichier située en haut, à droite de la fenêtre principale. Toutefois, ce nouveau nom de fichier ne sera effectif qu'après avoir sauvegardé le fichier. Les caractères illégaux (comme, pour les partitions Windows : &#8216;/&#8217;, &#8217;+&#8217; &#8230;) seront automatiquement remplacés à moins que vous n'ayez décoché l'option "Remplacer les caractères illégaux des noms de fichiers (pour Windows et les CD-Rom)" de l'onglet "Paramètres du nom des fichiers" du menu "Préférences".</p>
+ <p>Pour renommer manuellement un répertoire, il vous suffit de cliquer sur l'entrée "Renommer le répertoire ..." du menu Sélecteur puis de saisir alors le nouveau nom du répertoire. Le fait de cliquer sur "Appliquer" rend cette modification immédiate et définitive.</p>
+
+ <p>Note : Contrairement au mode automatique via le scanner (voir <a href="#ch_1_3_2">paragraphe 1.3.2</a>), lorsque le répertoire est renommé manuellement, les différents fichiers restent physiquement dans celui-ci. Il contient donc tous les fichiers présents dans l'ancien répertoire (y compris les fichiers qui ne sont pas supportés par EasyTAG tels que les fichiers jpeg).</p>
+
+ <h4><a name="ch_1_3_2" id="ch_1_3_2">1.3.2. Mode automatique via le scanner.</a></h4>
+ <p>A partir de la version 1.99.9, EasyTAG permet de renommer un répertoire à partir des tags des fichiers grâce à l'utilisation d'un modèle de masque. Pour utiliser ce mode, les tags doivent être préalablement renseignés.</p>
+
+ <p>Dans le mode "Renommer le(s) Fichier(s) et Répertoire(s)" du scanner, vous pouvez très facilement modifier les noms des fichiers et les déplacer dans un nouveau répertoire. Comme les nouveaux noms des fichiers sont basés sur les valeurs des tags, il est impératif que ceux-ci soient correctement renseignés.</p>
+ <p>Pour construire le nouveau nom de fichier à partir des valeurs de certains tags, EasyTAG utilise un modèle de masque similaire à celui utilisé dans le mode scanner "Compléter le(s) Tag(s)" (voir <a href="#ch_1_2_2">paragraphe 1.2.2</a>). La correspondance entre code et tag est donnée dans le tableau suivant :</p>
+
+ <div align="center">
+ <table>
+ <tbody>
+ <tr>
+ <th><div align="center">Ce tag correspond :</div></th>
+ <th><div align="center">à ce code :</div></th>
+ </tr>
+ <tr>
+ <td>Artiste</td>
+ <td><div align="center">%a</div></td>
+ </tr>
+ <tr>
+ <td>Album</td>
+ <td><div align="center">%b</div></td>
+ </tr>
+ <tr>
+ <td>Commentaire</td>
+ <td><div align="center">%c</div></td>
+ </tr>
+ <tr>
+ <td>Compositeur</td>
+ <td><div align="center">%p</div></td>
+ </tr>
+ <tr>
+ <td>Copyright</td>
+ <td><div align="center">%r</div></td>
+ </tr>
+ <tr>
+ <td>Encodeur</td>
+ <td><div align="center">%e</div></td>
+ </tr>
+ <tr>
+ <td>Genre</td>
+ <td><div align="center">%g</div></td>
+ </tr>
+ <tr>
+ <td>Nombre de pistes</td>
+ <td><div align="center">%l</div></td>
+ </tr>
+ <tr>
+ <td>Artiste Orig.</td>
+ <td><div align="center">%o</div></td>
+ </tr>
+ <tr>
+ <td>Piste</td>
+ <td><div align="center">%n</div></td>
+ </tr>
+ <tr>
+ <td>Titre</td>
+ <td><div align="center">%t</div></td>
+ </tr>
+ <tr>
+ <td>URL</td>
+ <td><div align="center">%u</div></td>
+ </tr>
+ <tr>
+ <td>Année</td>
+ <td><div align="center">%y</div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <p class="sans-retrait">Note : Un même code peut être utilisé plusieurs fois. Bien évidemment, comme dans le mode manuel, seuls seront modifiés les fichiers que vous aurez préalablement sélectionnés. De plus, les nouveaux noms de fichiers visibles dans la fenêtre "Fichier" ne seront pris en compte qu'après avoir effectuer la sauvegarde de ces fichiers.</p>
+ <p>Ce mode scanner offre aussi la possibilité de déplacer simultanément les fichiers dans un répertoire existant ou dans un nouveau répertoire. Ce déplacement peut prendre en compte soit un chemin absolu, soit un chemin relatif.</p>
+ <p class="souligne">Utilisation d'un chemin relatif :</p>
+ <p>Dans ce cas, les fichiers vont être déplacés dans un sous-répertoire du répertoire courant (ce sous-répertoire étant crée s'il n'existe pas).</p>
+ <p>Par exemple :</p>
+ <ul>
+ <li>le fichier mp3 : &#8220;/mp3/evanescence/01. Going Under.mp3&#8221;,</li>
+ <li>possédant les tags : artiste = EVANESCENCE, album = Fallen, piste = 01 et titre = Going Under,</li>
+ <li>avec le masque : &#8220;%a - %b/%n - %t&#8221;</li>
+ <li>sera déplacé dans le répertoire : &#8220;/mp3/evanescence/EVANESCENCE &#8211; Fallen/01 - Going Under.mp3&#8221;.</li>
+ </ul>
+
+ <p class="souligne">Utilisation d'un chemin absolu :</li>
+ <p>L'utilisation d'un chemin absolu permet de déplacer les fichiers dans n'importe quel répertoire. Dans la fenêtre Scanner, il suffit d'ajouter le chemin du répertoire de destination au début du modèle de masque (le chemin du répertoire courant peut être ajouté en cliquant sur le répertoire marqué par une croix verte situé immédiatement à gauche du masque). De cette façon, il est très facile de modifier le répertoire courant des fichiers.</p>
+
+ <p>Par exemple :</p>
+ <ul>
+ <li>le fichier mp3 : &#8220;/mp3/evanescence/01. Going Under.mp3&#8221;,</li>
+ <li>possédant les tags : artiste = EVANESCENCE, album = Fallen, piste = 01 et titre = Going Under,</li>
+ <li>avec le masque : &#8220;/mp3/%a - %b/%n - %t&#8221;</li>
+ <li>sera renommé et déplacé dans le répertoire : &#8220;/mp3/EVANESCENCE &#8211; Fallen/01 - Going Under.mp3&#8221;.</li>
+ </ul>
+
+ <p class="sans-retrait"> Note: Contrairement au mode manuel, les fichiers sont physiquement déplacés vers leur nouveau répertoire. Les fichiers qui ne sont pas supportés par EasyTAG tels que les fichiers jpeg ne seront pas eux déplacés et resteront donc dans le répertoire d'origine.<br/>Enfin, le déplacement effectif des fichiers n'intervient que lorsque vous les sauvegardez. De ce fait, tant que vous n'avez pas effectuer la sauvegarde, vous pouvez toujours, en cas d'erreur, revenir en arrière en utilisant la touche "Annuler Modif. des fichier(s)".</p>
+
+ <h4><a name="ch_1_3_3" id="ch_1_3_3">1.3.3. Mode automatique via la base de données CDDB.</a></h4>
+ <p>Dans le <a href="#ch_1_2_3">paragraphe 1.2.3</a>, nous avons vu comment rechercher, dans la base de données CDDB, l'album CD audio correspondant à un ensemble de fichiers. Ce résultat permet non seulement de renseigner les différents tags mais aussi les noms des fichiers. Par contre, il ne permet pas de mettre directement à jour le nom du répertoire. Pour arriver à ce résultat, il faut alors procéder en deux étapes :</p>
+ <ul>
+ <li>étape 1 : renseigner les noms des fichiers par la méthode décrite au <a href="#ch_1_2_3">paragraphe 1.2.3</a>,</li>
+ <li>étape 2 : modifier le nom du répertoire par la méthode décrite au <a href="#ch_1_3_2">paragraphe 1.3.2.</a></li>
+ </ul>
+
+ <h4><a name="ch_1_3_4" id="ch_1_3_4">1.3.4. Mode automatique via la lecture d'un fichier texte.</a></h4>
+ <p>Ce mode peut être utilisé dans les conditions suivantes :</p>
+ <ul>
+ <li>il faut disposer d'un fichier texte contenant la liste des noms des fichiers,</li>
+ <li>les fichiers doivent être triés par album et ordonnés comme dans le fichier texte.</li>
+ </ul>
+ <p>Dans ce cas, vous pouvez renommer les différents fichiers mais pas le répertoire. Le traitement consiste alors à renommer le premier fichier avec la valeur de la première ligne du fichier texte. On procède alors de proche en proche jusqu'à la dernière ligne du fichier texte.</p>
+
+ <h2><a name="ch_2" id="ch_2">2. Astuces.</a></h2>
+ <p class="question-text">Comment voir en une fois tous les tags de chaque fichier ?</p>
+ <p>Il suffit d'ouvrir la fenêtre "Rechercher un fichier" et d'effectuer la recherche en laissant le champ "Rechercher" vide. L'ensemble des tags des différents fichiers seront alors affichés.</p>
+
+ <p class="question-text">Comment faire pour écouter les fichiers audio ?</p>
+ <p>Vous pouvez écouter directement les fichiers sélectionnés ou bien tous les fichiers d'un répertoire particulier en faisant appel à une application externe (XMMS &#8230;).
+ Après avoir sélectionné un ensemble de fichiers ou bien un répertoire, cliquez sur l'entrée "Lancer Lecteur Audio" du menu "Divers" pour lancer alors le lecteur audio. Par défaut, le lecteur utilisé est XMMS lancé par l'intermédiaire de la commande "xmms -p" (voir l'onglet "Divers" du menu "Préférences"). Si vous désirez ajouter d'autres fichiers à la playlist courante, il faut alors cliquer sur l'entrée :
+ <ul>
+ <li>"Ouvrir le(s) Fichier(s) avec ..." du menu "Fichier",</li>
+ <li>"Parcourir le Répertoire avec ..." du menu "Sélecteur".</li>
+ </ul>
+ et taper la commande "xmms -e" dans la boite qui s'affiche alors.</p>
+
+ <p class="question-text">Les fichiers peuvent-ils être organisés par artiste et album ?</p>
+ <p>Le mode de visualisation "Artiste + Album" est fait pour vous. Pour activer ce mode, il suffit de cliquer sur le bouton caractérisé par "une tête et un disque" présent dans la barre des tâches. Ce mode permet de naviguer très rapidement dans les albums d'un artiste donné. Ce mode permet aussi de localiser très vite les fichiers possédant des mauvais tags.</p>
+
+ <p class="question-text">Comment spécifier le répertoire au lancement du programme ?</p>
+ <p>Par exemple, pour lancer EasyTAG avec préchargement des fichiers présents dans le répertoire courant, il suffit de lancer le programme avec la commande <span class="txt_autre">"easytag . &amp;"</span>. Par ailleurs, pour spécifier un répertoire donné (par exemple, /file-audio-dir), il faut utiliser la commande : &#8220;easytag /file-audio-dir&#8221;.</p>
+
+ <p class="question-text">A la suite d'une modification des tags et des noms des fichiers, comment ne sauvegarder que les modifications effectuées sur les tags ?</p>
+ <p>Le processus de sauvegarde d'un fichier fait appel à deux écrans de confirmation distincts : le premier concernant les tags du fichier, le deuxième le nom du fichier. Si, à la suite d'une modification des tags et des noms des fichiers, vous ne voulez que sauvegarder les modifications effectuées sur les tags, il suffit alors de :
+ <ul>
+ <li>répondre "OUI" dans l'écran de confirmation d'écriture des tags du fichier,</li>
+ <li>répondre "NON" dans l'écran de confirmation d'écriture du nom du fichier.</li>
+ </ul>
+ <p>Pour effectuer en une passe la même chose sur l'ensemble des fichiers sélectionnés, il suffit alors, avant de confirmer ou non la sauvegarde, de cocher la case "Répéter la même action pour les autres fichiers".<p>
+
+ <p class="question-text">Comment savoir si un tag n'est pas renseigné (champ vide) ?</p>
+ <p>Pour le savoir, deux façons de procéder sont possibles :</p>
+ <ul>
+ <li>Vous pouvez effectuer un tri sur la liste des fichiers avec le critère adapté au tag qui vous intéresse (Par exemple, "Classer par ordre croissant des artistes"). Les fichiers ne possédant aucune valeur du tag considéré sont affichés dans le haut de la liste.</li>
+ <li>Vous pouvez utiliser la fenêtre spécifique de "Rechercher Fichiers" pour afficher tous les fichiers et identifier alors toutes les cellules vides du tag qui vous intéresse.</li>
+ </ul>
+ <p>&nbsp;</p>
+</body>
+</html>
+
diff --git a/doc/easytag.1.in b/doc/easytag.1.in
new file mode 100755
index 0000000..fc9dcf2
--- /dev/null
+++ b/doc/easytag.1.in
@@ -0,0 +1,63 @@
+.TH EasyTAG 1
+.SH NAME
+EasyTAG @VERSION@ \- Tag editor for MP3 and Ogg Vorbis files
+.SH SYNOPSIS
+.na
+.nh
+.B easytag
+.RI [options]
+.br
+.B easytag
+.RI [directory]
+
+.SH DESCRIPTION
+.B EasyTAG
+is an utility for viewing and editing tags for MP3, MP2, FLAC, Ogg Vorbis,
+MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice GTK2 interface
+makes tagging easier under GNU/Linux.
+
+.SH OPTIONS
+.TP
+.B \-\-help
+Display a short help
+.TP
+.B \-\-version
+Display version information
+.TP
+.B [directory]
+Choose the directory to open at startup. It can be either
+an absolute path or a relative path.
+
+.SH AVAILABILITY
+.PP
+EasyTAG is licensed under the
+GNU Public License(GPL). A copy of that license should
+have come with the package in the file COPYING. You are
+encouraged to distribute copies of the Samba suite, but
+please obey the terms of this license.
+.PP
+The latest version of EasyTAG can be
+obtained via the project's webpage
+<URL: \fIhttp://easytag.sourceforge.net/\fR>
+
+.SH FILES
+.PP
+EasyTAG will create a directory named .easytag in your home
+directory where it stores its configuration file and history files.
+.br
+\fI@prefix@/bin/easytag\fR: \fBEasyTAG\fR's location.
+.br
+\fI~/.easytag/easytagrc\fR: \fBEasyTAG\fR's configuration file.
+.br
+
+.SH VERSION
+.PP
+This man page is done for the version @VERSION@ of EasyTAG.
+
+.SH AUTHOR
+.PP
+The author of this software is Jerome COUDERC.
+.PP
+You can mail him about EasyTAG at <\fIeasytag@gmail.com\fR>
+.PP
+This man page was originally written by Pauliuc George <\fIpauliuc@gmx.net\fR>
diff --git a/doc/id3/easy.html b/doc/id3/easy.html
new file mode 100755
index 0000000..d6bce99
--- /dev/null
+++ b/doc/id3/easy.html
@@ -0,0 +1,52 @@
+<HTML><head><title>ID3v2 made easy</title>
+<style type="text/css">
+td.h1 {font: 43px Arial, Helvetica}
+td.h2 {font: 27px Arial, Helvetica}
+div.h5 {font: 14px Arial, Helvetica}
+td.t {font: 14px Arial, Helvetica}
+a {color: #DD6600; text-decoration: none}
+b {font-weight: bold}
+</style>
+<META name="description" content="Information about a new ID3 format, ID3v2.">
+<META name="keywords" content="ID3v2, ID3, MP3">
+</head>
+<body bgcolor=white text=black><center>
+
+<table border=0><tr><td class=h1>&nbsp;ID3v2 made easy&nbsp;</td></tr><tr><td bgcolor="#FF7700"><img src="fillpx.gif" width=1 height=1 alt=""></td></tr></table>
+
+<br>&nbsp;
+
+<table border=0 width="90%"><tr><td class=h2>What is ID3v2?</td></tr></table>
+
+<table border=0 width="80%"><tr valign=top><td class=t>
+<p>ID3v2 is a new tagging system that lets you put enriching and relevant information about your audio files within them. In more down to earth terms, ID3v2 is a chunk of data prepended to the binary audio data. Each ID3v2 tag holds one or more smaller chunks of information, called frames. These frames can contain any kind of information and data you could think of such as title, album, performer, website, lyrics, equalizer presets, pictures etc. The block scheme to the right is an example of how the layout of a typical ID3v2 tagged audio file may look like.</p>
+<p>One of the design goals were that the ID3v2 should be very flexible and expandable. It is very easy to add new functions to the ID3v2 tag, because, just like in HTML, all parsers will ignore any information they don't recognize. Since each frame can be 16MB and the entire tag can be 256MB you'll probably never again be in the same situation as when you tried to write a useful comment in the old ID3 being limited to 30 characters.</p>
+<p>Speaking of characters, the ID3v2 supports Unicode so even if you use the Bopomofo character set you'll be able to write in your native language. You can also include in which language you're writing so that one file might contain e.g. the same lyrics but in different languages.</p>
+<p>Even though the tag supports a lot of byte consuming capabilities like inline pictures and even the possibility to include any other file, ID3v2 still tries to use the bytes as efficient as possibly. If you convert an ID3v1 tag to an ID3v2 tag it is even likely that the new tag will be smaller. If you convert an ID3v1 tag where all fields are full (that is, all 30 characters are used in every field) to an ID3v2 tag it will be 56 bytes bigger. This is the worst case scenario for ID3v1 to ID3v2 conversion.</p>
+<p>Since it's so easy to implement new functionality into ID3v2, one can hope that we'll see a lot of creative uses for ID3v2 in the future. E.g. there is a built-in system for rating the music and counting how often you listen to a file, just to mention some brainstorm results that are included. This feature can be used to build playlists that play your favourite songs more often than others.</p>
+</td><td align=center class=t> <br><img src="id3v2_blocks.gif" width=229 height=354 alt="Internal layout of an ID3v2 tagged file."><br><i>Example of the internal layout<br>of an ID3v2 tagged file.</i></td></tr></table>
+
+<br>&nbsp;
+
+<table border=0 width="90%"><tr><td class=h2>Some main features</td></tr></table>
+
+<table border=0 width="80%"><tr><td class=t><ul>
+ <li>The ID3v2 tag is a container format, just like IFF or PNG files, allowing new frames (chunks) as evolution proceeds.</li>
+ <li>Residing in the beginning of the audio file makes it suitable for streaming.</li>
+ <li>Has an 'unsynchronization scheme' to prevent ID3v2-incompatible players to attempt to play the tag.</li>
+ <li>Maximum tag size is 256 megabytes and maximum frame size is 16 megabytes.</li>
+ <li>Byte conservative and with the capability to compress data it keeps the files small.</li>
+ <li>The tag supports Unicode.</li>
+ <li>Isn't entirely focused on musical audio, but also other types of audio.</li>
+ <li>Has several new text fields such as composer, conductor, media type, BPM, copyright message, etc. and the possibility to design your own as you see fit.</li>
+ <li>Can contain lyrics as well as music-synced lyrics (karaoke) in almost any language.</li>
+ <li>Is able to contain volume, balance, equalizer and reverb settings.</li>
+ <li>Could be linked to CD-databases such as <a href="http://www.cddb.com">CDDB</a>.</li>
+ <li>Is able to contain images and just about any file you want to include.</li>
+ <li>Supports enciphered information, linked information and weblinks.</li>
+ <li>and more... (a complete list of all frames and their functions can be found <a href="frames.html"><b>here</b></a>)</li>
+</ul></td></tr></table>
+
+<br>&nbsp;
+
+</center></body></html>
diff --git a/doc/id3/id3v2.3.0.html b/doc/id3/id3v2.3.0.html
new file mode 100755
index 0000000..2aee39d
--- /dev/null
+++ b/doc/id3/id3v2.3.0.html
@@ -0,0 +1,2257 @@
+<html><head><title>ID3v2 - Informal standard</title>
+<style type="text/css">
+body {font: 16px times}
+h1 {font: 34px times}
+h3 {font: 20px times; margin-left: 5%}
+div.h5 {font: 16px times; font-weight: bold; margin-left: 8%}
+div.t {margin-left: 10%; margin-right: 10%}
+p.t {margin-left: 10%; margin-right: 10%}
+p.ind {margin-left: 15%; margin-right: 15%}
+pre {font: 16px times}
+pre {margin-left: 40px}
+a {font: 15px arial, helvetica; color: #CC5500; text-decoration: none}
+</style>
+<META name="description" content="ID3v2 informal standard.">
+<META name="keywords" content="ID3v2">
+</head><body bgcolor=white text=black>
+
+<a name="top"> </a>
+
+<br>&nbsp;
+<p><table border=0 width=100%><tr><td>Informal standard<br>Document: id3v2.3.0.html</td><td align=right>
+M. Nilsson<br>3rd February 1999</td></tr></table></p>
+
+<h1 align=center>ID3 tag version 2.3.0</h1>
+
+<a name="status"> </a>
+<h3>Status of this document</h3>
+<p class=t>
+This document is an informal standard and replaces the <a href="#ID3v2">ID3v2.2.0</a>
+standard. The informal standard is released so that
+implementors could have a set standard before a formal standard is
+set. The formal standard will use another version or revision number
+if not identical to what is described in this document. The contents
+in this document may change for clarifications but never for added or
+altered functionallity.
+</p><p class=t>
+Distribution of this document is unlimited.
+</p>
+
+<a name="abstract"> </a>
+<h3>Abstract</h3>
+<p class=t>
+This document describes the <a href="#ID3v2">ID3v2.3.0</a>, which is a more developed
+version of the ID3v2 informal standard (version 2.2.0),
+evolved from the ID3 tagging system. The ID3v2 offers a flexible way
+of storing information about an audio file within itself to determine
+its origin and contents. The information may be technical
+information, such as equalisation curves, as well as related meta
+information, such as title, performer, copyright etc.
+</p>
+
+<a name="sec1"> </a>
+<h3>1.Table of contents</h3>
+
+<p><center><table border=0 width="80%"><tr><td>
+<dl>
+<dt>2. <a href="#sec2">Conventions in this document</a></dt>
+<dt>3. <a href="#sec3">ID3v2 overview</a>
+ <dd> 3.1. <a href="#sec3.1">ID3v2 header</a></dd>
+ <dd> 3.2. <a href="#sec3.2">ID3v2 extended header</a></dd>
+ <dd> 3.3. <a href="#sec3.3">ID3v2 frames overview</a></dd>
+ <dl><dd> 3.3.1. <a href="#sec3.3.1">Frame header flags</a></dd>
+ <dd> 3.3.2. <a href="#sec3.3.2">Default flags</a></dd></dl></dt>
+<dt>4. <a href="#sec4">Declared ID3v2 frames</a>
+ <dd> 4.1. <a href="#sec4.1">Unique file identifier</a></dd>
+ <dd> 4.2. <a href="#sec4.2">Text information frames</a>
+ <dl><dd> 4.2.1. <a href="#sec4.2.1">Text information frames - details</a></dd>
+ <dd> 4.2.2. <a href="#sec4.2.2">User defined text information frame</a></dd></dl></dd>
+ <dd> 4.3. <a href="#sec4.3">URL link frames</a>
+ <dl><dd>4.3.1. <a href="#sec4.3.1">URL link frames - details</a></dd>
+ <dd>4.3.2. <a href="#sec4.3.2">User defined URL link frame</a></dd></dl></dd>
+ <dd> 4.4. <a href="#sec4.4">Involved people list</a></dd>
+ <dd> 4.5. <a href="#sec4.5">Music CD Identifier</a></dd>
+ <dd> 4.6. <a href="#sec4.6">Event timing codes</a></dd>
+ <dd> 4.7. <a href="#sec4.7">MPEG location lookup table</a></dd>
+ <dd> 4.8. <a href="#sec4.8">Synced tempo codes</a></dd>
+ <dd> 4.9. <a href="#sec4.9">Unsychronised lyrics/text transcription</a></dd>
+ <dd> 4.10. <a href="#sec4.10">Synchronised lyrics/text</a></dd>
+ <dd> 4.11. <a href="#sec4.11">Comments</a></dd>
+ <dd> 4.12. <a href="#sec4.12">Relative volume adjustment</a></dd>
+ <dd> 4.13. <a href="#sec4.13">Equalisation</a></dd>
+ <dd> 4.14. <a href="#sec4.14">Reverb</a></dd>
+ <dd> 4.15. <a href="#sec4.15">Attached picture</a></dd>
+ <dd> 4.16. <a href="#sec4.16">General encapsulated object</a></dd>
+ <dd> 4.17. <a href="#sec4.17">Play counter</a></dd>
+ <dd> 4.18. <a href="#sec4.18">Popularimeter</a></dd>
+ <dd> 4.19. <a href="#sec4.19">Recommended buffer size</a></dd>
+ <dd> 4.20. <a href="#sec4.20">Audio encryption</a></dd>
+ <dd> 4.21. <a href="#sec4.21">Linked information</a></dd>
+ <dd> 4.22. <a href="#sec4.22">Position synchronisation frame</a></dd>
+ <dd> 4.23. <a href="#sec4.23">Terms of use</a></dd>
+ <dd> 4.24. <a href="#sec4.24">Ownership frame</a></dd>
+ <dd> 4.25. <a href="#sec4.25">Commercial frame</a></dd>
+ <dd> 4.26. <a href="#sec4.26">Encryption method registration</a></dd>
+ <dd> 4.27. <a href="#sec4.27">Group identification registration</a></dd>
+ <dd> 4.28. <a href="#sec4.28">Private frame</a></dd></dt>
+<dt>5. <a href="#sec5">The 'unsynchronisation scheme'</a></dt>
+<dt>6. <a href="#sec6">Copyright</a></dt>
+<dt>7. <a href="#sec7">References</a></dt>
+<dt>8. <a href="#sec8">Appendix</a>
+ <dd> A. <a href="#secA">Appendix A - Genre List from ID3v1</a></dd></dt>
+<dt>9. <a href="#sec9">Author's Address</a></dt>
+</dl>
+</td></tr></table></center></p>
+
+<a name="sec2"> </a>
+<h3>2.Conventions in this document</h3>
+<p class=t>
+In the examples, text within "" is a text string exactly as it
+appears in a file. Numbers preceded with $ are hexadecimal and
+numbers preceded with % are binary. $xx is used to indicate a byte
+with unknown content. %x is used to indicate a bit with unknown
+content. The most significant bit (MSB) of a byte is called 'bit 7'
+and the least significant bit (LSB) is called 'bit 0'.
+</p><p class=t>
+A tag is the whole tag described in this document. A frame is a block
+of information in the tag. The tag consists of a header, frames and
+optional padding. A field is a piece of information; one value, a
+string etc. A numeric string is a string that consists of the
+characters 0-9 only.
+</p>
+
+<a name="sec3"> </a>
+<h3>3.ID3v2 overview</h3>
+<p class=t>
+The two biggest design goals were to be able to implement ID3v2
+without disturbing old software too much and that ID3v2 should be
+as flexible and expandable as possible.
+</p><p class=t>
+The first criterion is met by the simple fact that the <a href="#MPEG">MPEG</a>
+decoding software uses a syncsignal, embedded in the audiostream, to
+'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid
+syncsignal, no software will attempt to play the tag. If, for any
+reason, coincidence make a syncsignal appear within the tag it will
+be taken care of by the 'unsynchronisation scheme' described in
+<a href="#sec5">section 5</a>.
+</p><p class=t>
+The second criterion has made a more noticeable impact on the design
+of the ID3v2 tag. It is constructed as a container for several
+information blocks, called frames, whose format need not be known to
+the software that encounters them. At the start of every frame there
+is an identifier that explains the frames' format and content, and a
+size descriptor that allows software to skip unknown frames.
+</p><p class=t>
+If a total revision of the ID3v2 tag should be needed, there is a
+version number and a size descriptor in the ID3v2 header.
+</p><p class=t>
+The ID3 tag described in this document is mainly targeted at files
+encoded with <a href="#MPEG">MPEG</a>-1/2 layer I, <a href="#MPEG">MPEG</a>-1/2 layer II, <a href="#MPEG">MPEG</a>-1/2 layer III
+and MPEG-2.5, but may work with other types of encoded audio.
+</p><p class=t>
+The bitorder in ID3v2 is most significant bit first (MSB). The
+byteorder in multibyte numbers is most significant byte first (e.g.
+$12345678 would be encoded $12 34 56 78).
+</p><p class=t>
+It is permitted to include padding after all the final frame (at the
+end of the ID3 tag), making the size of all the frames together
+smaller than the size given in the head of the tag. A possible
+purpose of this padding is to allow for adding a few additional
+frames or enlarge existing frames within the tag without having to
+rewrite the entire file. The value of the padding bytes must be $00.
+</p>
+
+<a name="sec3.1"> </a>
+<h3>3.1.ID3v2 header</h3>
+<p class=t>
+The ID3v2 tag header, which should be the first information in the
+file, is 10 bytes as follows:
+</p>
+<p><center><table border=0 width="70%">
+<tr><td nowrap>ID3v2/file identifier</td><td rowspan=4>&nbsp;</td><td width="100%">"ID3"</td></tr>
+<tr><td>ID3v2 version</td><td>$03 00</td></tr>
+<tr><td>ID3v2 flags</td><td>%abc00000</td></tr>
+<tr><td>ID3v2 size</td><td>4 * %0xxxxxxx</td></tr>
+</table></center></p>
+<p class=t>
+The first three bytes of the tag are always "ID3" to indicate that
+this is an ID3v2 tag, directly followed by the two version bytes. The
+first byte of ID3v2 version is it's major version, while the second
+byte is its revision number. In this case this is ID3v2.3.0. All
+revisions are backwards compatible while major versions are not. If
+software with ID3v2.2.0 and below support should encounter version
+three or higher it should simply ignore the whole tag. Version and
+revision will never be $FF.
+</p><p class=t>
+The version is followed by one the ID3v2 flags field, of which
+currently only three flags are used.
+</p>
+<p class=t>
+a - Unsynchronisation
+</p><p class=ind>
+Bit 7 in the 'ID3v2 flags' indicates whether or not unsynchronisation is used (see <a href="#sec5">section 5</a> for details); a set bit indicates usage.</p>
+<p class=t>
+b - Extended header
+</p><p class=ind>
+ The second bit (bit 6) indicates whether or not the header is
+ followed by an extended header. The extended header is described in
+ <a href="#sec3.2">section 3.2</a>.
+</p>
+<p class=t>
+c - Experimental indicator
+</p><p class=ind>
+ The third bit (bit 5) should be used as an 'experimental
+ indicator'. This flag should always be set when the tag is in an
+ experimental stage.
+</p><p class=t>
+All the other flags should be cleared. If one of these undefined
+flags are set that might mean that the tag is not readable for a
+parser that does not know the flags function.
+</p><p class=t>
+The ID3v2 tag size is encoded with four bytes where the most
+significant bit (bit 7) is set to zero in every byte, making a total
+of 28 bits. The zeroed bits are ignored, so a 257 bytes long tag is
+represented as $00 00 02 01.
+</p><p class=t>
+The ID3v2 tag size is the size of the complete tag after
+unsychronisation, including padding, excluding the header but not
+excluding the extended header (total tag size - 10). Only 28 bits
+(representing up to 256MB) are used in the size description to avoid
+the introducuction of 'false syncsignals'.
+</p><p class=t>
+An ID3v2 tag can be detected with the following pattern:<br>
+ $49 44 33 yy yy xx zz zz zz zz<br>
+Where yy is less than $FF, xx is the 'flags' byte and zz is less than
+$80.
+</p>
+
+<a name="sec3.2"> </a>
+<h3>3.2.ID3v2 extended header</h3>
+<p class=t>
+The extended header contains information that is not vital to the
+correct parsing of the tag information, hence the extended header is
+optional.
+</p>
+<p><center><table border=0 width="70%">
+<tr><td nowrap> Extended header size</td><td rowspan=3>&nbsp;</td><td width=100%>$xx xx xx xx</td></tr>
+<tr><td>Extended Flags</td><td>$xx xx</td></tr>
+<tr><td>Size of padding</td><td>$xx xx xx xx</tr>
+</table></center></p>
+<p class=t>
+Where the 'Extended header size', currently 6 or 10 bytes, excludes
+itself. The 'Size of padding' is simply the total tag size excluding
+the frames and the headers, in other words the padding. The extended
+header is considered separate from the header proper, and as such is
+subject to unsynchronisation.
+</p><p class=t>
+The extended flags are a secondary flag set which describes further
+attributes of the tag. These attributes are currently defined as
+follows
+</p><p class=ind>
+ %x0000000 00000000
+</p>
+<p class=t>
+x - CRC data present
+</p><p class=ind>
+ If this flag is set four bytes of CRC-32 data is appended to the
+ extended header. The CRC should be calculated before
+ unsynchronisation on the data between the extended header and the
+ padding, i.e. the frames and only the frames.
+</p>
+<p><center><table border=0 width="70%">
+<tr><td nowrap> Total frame CRC</td><td>&nbsp;</td><td>$xx xx xx xx</td></tr>
+</table></center></p>
+
+
+<a name="sec3.3"> </a>
+<h3>3.3.ID3v2 frame overview</h3>
+<p class=t>
+As the tag consists of a tag header and a tag body with one or more
+frames, all the frames consists of a frame header followed by one or
+more fields containing the actual information. The layout of the
+frame header:
+</p>
+<p><center><table border=0 width="70%">
+<tr><td nowrap> Frame ID</td><td rowspan=3>&nbsp;</td><td width="100%">$xx xx xx xx (four characters)</td></tr>
+<tr><td>Size</td><td>$xx xx xx xx</td></tr>
+<tr><td>Flags</td><td>$xx xx</td></tr>
+</table></center></p>
+<p class=t>
+The frame ID made out of the characters capital A-Z and 0-9.
+Identifiers beginning with "X", "Y" and "Z" are for experimental use
+and free for everyone to use, without the need to set the
+experimental bit in the tag header. Have in mind that someone else
+might have used the same identifier as you. All other identifiers are
+either used or reserved for future use.
+</p><p class=t>
+The frame ID is followed by a size descriptor, making a total header
+size of ten bytes in every frame. The size is calculated as frame
+size excluding frame header (frame size - 10).
+</p><p class=t>
+In the frame header the size descriptor is followed by two flags
+bytes. These flags are described in <a href="#sec3.3.1">section 3.3.1.</a>
+</p><p class=t>
+There is no fixed order of the frames' appearance in the tag,
+although it is desired that the frames are arranged in order of
+significance concerning the recognition of the file. An example of
+such order: <a href="#sec4.1">UFID</a>, <a href="#TIT2">TIT2</a>, <a href="#sec4.5">MCDI</a>, <a href="#TRCK">TRCK</a> ...
+</p><p class=t>
+A tag must contain at least one frame. A frame must be at least 1
+byte big, excluding the header.
+</p><p class=t>
+If nothing else is said a string is represented as
+<a href="#ISO-8859-1">ISO-8859-1</a> characters in the range $20 - $FF. Such strings are
+represented as &lt;text string&gt;, or &lt;full text string&gt; if newlines are
+allowed, in the frame descriptions. All <a href="#UNICODE">Unicode</a> strings use
+16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings
+must begin with the Unicode BOM ($FF FE or $FE FF) to identify the
+byte order.
+</p><p class=t>
+All numeric strings and <a href="#URL">URLs</a> are always encoded as <a href="#ISO-8859-1">ISO-8859-1</a>.
+Terminated strings are terminated with $00 if encoded with <a href="#ISO-8859-1">ISO-8859-1</a>
+and $00 00 if encoded as unicode. If nothing else is said newline
+character is forbidden. In <a href="#ISO-8859-1">ISO-8859-1</a> a new line is represented, when
+allowed, with $0A only. Frames that allow different types of text
+encoding have a text encoding description byte directly after the
+frame size. If <a href="#ISO-8859-1">ISO-8859-1</a> is used this byte should be $00, if Unicode
+is used it should be $01. Strings dependent on encoding is
+represented as &lt;text string according to encoding&gt;, or &lt;full text
+string according to encoding&gt; if newlines are allowed. Any empty
+<a href="#UNICODE">Unicode</a> strings which are NULL-terminated may have the Unicode BOM
+followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00).
+</p><p class=t>
+The three byte language field is used to describe the language of the
+frame's content, according to <a href="#ISO-639-2">ISO-639-2</a>.
+</p><p class=t>
+All <a href="#URL">URLs</a> may be relative, e.g. "picture.png", "../doc.txt".
+</p><p class=t>
+If a frame is longer than it should be, e.g. having more fields than
+specified in this document, that indicates that additions to the
+frame have been made in a later version of the ID3v2 standard. This
+is reflected by the revision number in the header of the tag.
+</p>
+
+<a name="sec3.3.1"> </a>
+<h3>3.3.1.Frame header flags</h3>
+<p class=t>
+In the frame header the size descriptor is followed by two flags
+bytes. All unused flags must be cleared. The first byte is for
+'status messages' and the second byte is for encoding purposes. If an
+unknown flag is set in the first byte the frame may not be changed
+without the bit cleared. If an unknown flag is set in the second byte
+it is likely to not be readable. The flags field is defined as
+follows.
+</p><p class=ind>
+ %abc00000 %ijk00000
+</p>
+<p class=t>
+a - Tag alter preservation
+</p><p class=ind>
+ This flag tells the software what to do with this frame if it is
+ unknown and the tag is altered in any way. This applies to all
+ kinds of alterations, including adding more padding and reordering
+ the frames.</p>
+<p><center><table border=0 width="70%">
+<tr><td>0&nbsp;</td><td>Frame should be preserved.</td></tr>
+<tr><td>1</td><td>Frame should be discarded.</td></tr>
+</table></center>
+</p>
+<p class=t>
+b - File alter preservation
+</p><p class=ind>
+ This flag tells the software what to do with this frame if it is
+ unknown and the file, excluding the tag, is altered. This does not
+ apply when the audio is completely replaced with other audio data.</p>
+<p><center><table border=0 width="70%">
+<tr><td>0&nbsp;</td><td>Frame should be preserved.</td></tr>
+<tr><td>1</td><td>Frame should be discarded.</td></tr>
+</table></center>
+</p>
+<p class=t>
+c - Read only
+</p><p class=ind>
+This flag, if set, tells the software that the contents of this
+frame is intended to be read only. Changing the contents might
+break something, e.g. a signature. If the contents are changed,
+without knowledge in why the frame was flagged read only and
+without taking the proper means to compensate, e.g. recalculating
+the signature, the bit should be cleared.
+</p>
+<p class=t>
+i - Compression
+</p>
+<p class=ind>This flag indicates whether or not the frame is compressed.</p>
+<p><center><table border=0 width="70%">
+<tr><td>0&nbsp;</td><td>Frame is not compressed.</td></tr>
+<tr><td>1</td><td>Frame is compressed using <a href="#ZLIB">zlib</a> with 4 bytes for 'decompressed size' appended to the frame header.</td></tr>
+</table></center>
+</p>
+<p class=t>
+j - Encryption
+</p><p class=ind>
+This flag indicates wether or not the frame is enrypted. If set
+one byte indicating with which method it was encrypted will be
+appended to the frame header. See <a href="#sec4.26">section 4.26.</a> for more
+information about encryption method registration.
+</p><p><center><table border=0 width="70%">
+<tr><td>0&nbsp;</td><td>Frame is not encrypted.</td></tr>
+<tr><td>1</td><td>Frame is encrypted.</td></tr>
+</table></center>
+</p>
+<p class=t>
+k - Grouping identity
+</p><p class=ind>
+This flag indicates whether or not this frame belongs in a group
+with other frames. If set a group identifier byte is added to the
+frame header. Every frame with the same group identifier belongs
+to the same group.
+</p><p><center><table border=0 width="70%">
+<tr><td>0&nbsp;</td><td>Frame does not contain group information</td></tr>
+<tr><td>1</td><td>Frame contains group information</td></tr>
+</table></center>
+</p>
+<p class=t>
+Some flags indicates that the frame header is extended with
+additional information. This information will be added to the frame
+header in the same order as the flags indicating the additions. I.e.
+the four bytes of decompressed size will preceed the encryption
+method byte. These additions to the frame header, while not included
+in the frame header size but are included in the 'frame size' field,
+are not subject to encryption or compression.
+</p>
+
+<a name="sec3.3.2"> </a>
+<h3>3.3.2.Default flags</h3>
+<p class=t>
+The default settings for the frames described in this document can be
+divided into the following classes. The flags may be set differently
+if found more suitable by the software.
+</p><p class=t>
+ 1. Discarded if tag is altered, discarded if file is altered.
+</p><p class=ind>
+ None.
+</p><p class=t>
+ 2. Discarded if tag is altered, preserved if file is altered.
+</p><p class=ind>
+ None.
+</p><p class=t>
+ 3. Preserved if tag is altered, discarded if file is altered.
+</p><p class=ind>
+ <a href="#sec4.21>AENC</a>, <a href="#sec4.6">ETCO</a>, <a href="#sec4.13">EQUA</a>, <a href="#sec4.7">MLLT</a>, <a href="#sec4.22">POSS</a>, <a href="#4.10">SYLT</a>, <a href="#sec4.8">SYTC</a>, <a href="#4.12">RVAD</a>, <a href="#TENC">TENC</a>, <a href="#TLEN">TLEN</a>, <a href="#TSIZ">TSIZ</a>
+</p><p class=t>
+ 4. Preserved if tag is altered, preserved if file is altered.
+</p><p class=ind>
+ The rest of the frames.
+</p>
+
+<a name="sec4"> </a>
+<h3>4.Declared ID3v2 frames</h3>
+</p><p class=t>
+The following frames are declared in this draft.
+</p><p><center><table border=0 width="70%">
+<tr><td>4.20</td><td>AENC</td><td width="100%"><a href="#sec4.20"> Audio encryption</a></td></tr>
+<tr><td>4.15</td><td>APIC</td><td><a href="#sec4.15">Attached picture</a></td></tr>
+
+<tr><td>4.11</td><td>COMM</td><td><a href="#sec4.11">Comments</a></td></tr>
+<tr><td>4.25</td><td>COMR</td><td><a href="#sec4.25">Commercial frame</a></td></tr>
+
+<tr><td>4.26</td><td>ENCR</td><td><a href="#sec4.26">Encryption method registration</a></td></tr>
+<tr><td>4.13</td><td>EQUA</td><td><a href="#sec4.13">Equalization</a></td></tr>
+<tr><td>4.6 </td><td>ETCO</td><td><a href="#sec4.6">Event timing codes</a></td></tr>
+
+<tr><td>4.16</td><td>GEOB</td><td><a href="#sec4.16">General encapsulated object</a></td></tr>
+<tr><td>4.27</td><td>GRID</td><td><a href="#sec4.27">Group identification registration</a></td></tr>
+
+<tr><td>4.4 </td><td>IPLS</td><td><a href="#sec4.4">Involved people list</a></td></tr>
+
+<tr><td>4.21</td><td>LINK</td><td><a href="#sec4.21">Linked information</a></td></tr>
+
+<tr><td>4.5 </td><td>MCDI</td><td><a href="#sec4.5">Music CD identifier</a></td></tr>
+<tr><td>4.7 </td><td>MLLT</td><td><a href="#sec4.7">MPEG location lookup table</a></td></tr>
+
+<tr><td>4.24</td><td>OWNE</td><td><a href="#sec4.24">Ownership frame</a></td></tr>
+
+<tr><td>4.28</td><td>PRIV</td><td><a href="#sec4.28">Private frame</a></td></tr>
+<tr><td>4.17</td><td>PCNT</td><td><a href="#sec4.17">Play counter</a></td></tr>
+<tr><td>4.18</td><td>POPM</td><td><a href="#sec4.18">Popularimeter</a></td></tr>
+<tr><td>4.22</td><td>POSS</td><td><a href="#sec4.22">Position synchronisation frame</a></td></tr>
+
+<tr><td>4.19</td><td>RBUF</td><td><a href="#sec4.19">Recommended buffer size</a></td></tr>
+<tr><td>4.12</td><td>RVAD</td><td><a href="#sec4.12">Relative volume adjustment</a></td></tr>
+<tr><td>4.14</td><td>RVRB</td><td><a href="#sec4.14">Reverb</a></td></tr>
+
+<tr><td>4.10</td><td>SYLT</td><td><a href="#sec4.10">Synchronized lyric/text</a></td></tr>
+<tr><td>4.8 </td><td>SYTC</td><td><a href="#sec4.8">Synchronized tempo codes</a></td></tr>
+
+<tr><td>4.2.1</td><td>TALB</td><td><a href="#TALB">Album/Movie/Show title</a></td></tr>
+<tr><td>4.2.1</td><td>TBPM</td><td><a href="#TBPM">BPM (beats per minute)</a></td></tr>
+<tr><td>4.2.1</td><td>TCOM</td><td><a href="#TCOM">Composer</a></td></tr>
+<tr><td>4.2.1</td><td>TCON</td><td><a href="#TCON">Content type</a></td></tr>
+<tr><td>4.2.1</td><td>TCOP</td><td><a href="#TCOP">Copyright message</a></td></tr>
+<tr><td>4.2.1</td><td>TDAT</td><td><a href="#TDAT">Date</a></td></tr>
+<tr><td>4.2.1</td><td>TDLY</td><td><a href="#TDLY">Playlist delay</a></td></tr>
+<tr><td>4.2.1</td><td>TENC</td><td><a href="#TENC">Encoded by</a></td></tr>
+<tr><td>4.2.1</td><td>TEXT</td><td><a href="#TEXT">Lyricist/Text writer</a></td></tr>
+<tr><td>4.2.1</td><td>TFLT</td><td><a href="#TFLT">File type</a></td></tr>
+<tr><td>4.2.1</td><td>TIME</td><td><a href="#TIME">Time</a></td></tr>
+<tr><td>4.2.1</td><td>TIT1</td><td><a href="#TIT1">Content group description</a></td></tr>
+<tr><td>4.2.1</td><td>TIT2</td><td><a href="#TIT2">Title/songname/content description</a></td></tr>
+<tr><td>4.2.1</td><td>TIT3</td><td><a href="#TIT3">Subtitle/Description refinement</a></td></tr>
+<tr><td>4.2.1</td><td>TKEY</td><td><a href="#TKEY">Initial key</a></td></tr>
+<tr><td>4.2.1</td><td>TLAN</td><td><a href="#TLAN">Language(s)</a></td></tr>
+<tr><td>4.2.1</td><td>TLEN</td><td><a href="#TLEN">Length</a></td></tr>
+<tr><td>4.2.1</td><td>TMED</td><td><a href="#TMED">Media type</a></td></tr>
+<tr><td>4.2.1</td><td>TOAL</td><td><a href="#TOAL">Original album/movie/show title</a></td></tr>
+<tr><td>4.2.1</td><td>TOFN</td><td><a href="#TOFN">Original filename</a></td></tr>
+<tr><td>4.2.1</td><td>TOLY</td><td><a href="#TOLY">Original lyricist(s)/text writer(s)</a></td></tr>
+<tr><td>4.2.1</td><td>TOPE</td><td><a href="#TOPE">Original artist(s)/performer(s)</a></td></tr>
+<tr><td>4.2.1</td><td>TORY</td><td><a href="#TORY">Original release year</a></td></tr>
+<tr><td>4.2.1</td><td>TOWN</td><td><a href="#TOWN">File owner/licensee</a></td></tr>
+<tr><td>4.2.1</td><td>TPE1</td><td><a href="#TPE1">Lead performer(s)/Soloist(s)</a></td></tr>
+<tr><td>4.2.1</td><td>TPE2</td><td><a href="#TPE2">Band/orchestra/accompaniment</a></td></tr>
+<tr><td>4.2.1</td><td>TPE3</td><td><a href="#TPE3">Conductor/performer refinement</a></td></tr>
+<tr><td>4.2.1</td><td>TPE4</td><td><a href="#TPE4">Interpreted, remixed, or otherwise modified by</a></td></tr>
+<tr><td>4.2.1</td><td>TPOS</td><td><a href="#TPOS">Part of a set</a></td></tr>
+<tr><td>4.2.1</td><td>TPUB</td><td><a href="#TPUB">Publisher</a></td></tr>
+<tr><td>4.2.1</td><td>TRCK</td><td><a href="#TRCK">Track number/Position in set</a></td></tr>
+<tr><td>4.2.1</td><td>TRDA</td><td><a href="#TRDA">Recording dates</a></td></tr>
+<tr><td>4.2.1</td><td>TRSN</td><td><a href="#TRSN">Internet radio station name</a></td></tr>
+<tr><td>4.2.1</td><td>TRSO</td><td><a href="#TRSO">Internet radio station owner</a></td></tr>
+<tr><td>4.2.1</td><td>TSIZ</td><td><a href="#TSIZ">Size</a></td></tr>
+<tr><td>4.2.1</td><td>TSRC</td><td><a href="#TSRC">ISRC (international standard recording code)</a></td></tr>
+<tr><td>4.2.1</td><td>TSSE</td><td><a href="#TSSE">Software/Hardware and settings used for encoding</a></td></tr>
+<tr><td>4.2.1</td><td>TYER</td><td><a href="#TYER">Year</a></td></tr>
+<tr><td>4.2.2</td><td>TXXX</td><td><a href="#TXXX">User defined text information frame</a></td></tr>
+
+<tr><td>4.1 </td><td>UFID</td><td><a href="#sec4.1">Unique file identifier</td></tr>
+<tr><td>4.23</td><td>USER</td><td><a href="#sec4.23">Terms of use</td></tr>
+<tr><td>4.9 </td><td>USLT</td><td><a href="#sec4.9">Unsychronized lyric/text transcription</td></tr>
+
+<tr><td>4.3.1</td><td>WCOM</td><td><a href="#WCOM">Commercial information</a></td></tr>
+<tr><td>4.3.1</td><td>WCOP</td><td><a href="#WCOP">Copyright/Legal information</a></td></tr>
+<tr><td>4.3.1</td><td>WOAF</td><td><a href="#WOAF">Official audio file webpage</a></td></tr>
+<tr><td>4.3.1</td><td>WOAR</td><td><a href="#WOAR">Official artist/performer webpage</a></td></tr>
+<tr><td>4.3.1</td><td>WOAS</td><td><a href="#WOAS">Official audio source webpage</a></td></tr>
+<tr><td>4.3.1</td><td>WORS</td><td><a href="#WORS">Official internet radio station homepage</a></td></tr>
+<tr><td>4.3.1</td><td>WPAY</td><td><a href="#WPAY">Payment</a></td></tr>
+<tr><td>4.3.1</td><td>WPUB</td><td><a href="#WPUB">Publishers official webpage</a></td></tr>
+<tr><td>4.3.2</td><td>WXXX</td><td><a href="#WXXX">User defined URL link frame</a></td></tr>
+</table></center>
+</p>
+
+<a name="sec4.1"> </a>
+<h3>4.1.Unique file identifier</h3>
+<p class=t>
+This frame's purpose is to be able to identify the audio file in a
+database that may contain more information relevant to the content.
+Since standardisation of such a database is beyond this document, all
+frames begin with a null-terminated string with a <a href="#URL">URL</a>
+containing an email address, or a link to a location where an email
+address can be found, that belongs to the organisation responsible
+for this specific database implementation. Questions regarding the
+database should be sent to the indicated email address. The <a href="#URL">URL</a>
+should not be used for the actual database queries. The string
+"http://www.id3.org/dummy/ufid.html" should be used for tests.
+Software that isn't told otherwise may safely remove such frames. The
+'Owner identifier' must be non-empty (more than just a termination).
+The 'Owner identifier' is then followed by the actual identifier,
+which may be up to 64 bytes. There may be more than one "UFID" frame
+in a tag, but only one with the same 'Owner identifier'.
+</p>
+<p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Unique file identifier', ID: "UFID"&gt;</td></tr>
+<tr><td>Owner identifier</td><td width="80%">&lt;text string&gt; $00</td></tr>
+<tr><td>Identifier</td><td>&lt;up to 64 bytes binary data&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.2"> </a>
+<h3>4.2.Text information frames</h3>
+<p class=t>
+The text information frames are the most important frames, containing
+information like artist, album and more. There may only be one text
+information frame of its kind in an tag. If the textstring is
+followed by a termination ($00 (00)) all the following information
+should be ignored and not be displayed. All text frame identifiers
+begin with "T". Only text frame identifiers begin with "T", with the
+exception of the "<a href="#sec4.2.2">TXXX</a>" frame. All the text information frames have
+the following format:
+</p>
+<p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Text information frame', ID: "T000" - "TZZZ", excluding "TXXX" described in 4.2.2.&gt;</td></tr>
+<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
+<tr><td>Information </td><td>&lt;text string according to encoding&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.2.1"> </a>
+<h3>4.2.1.Text information frames - details</h3>
+<p>
+<a name="TALB"> </a>
+<div class=h5>TALB</div>
+<div class=t>
+The 'Album/Movie/Show title' frame is intended for the title of the
+recording(/source of sound) which the audio in the file is taken
+from.
+</div>
+</p>
+
+<p>
+<a name="TBPM"> </a>
+<div class=h5>TBPM</div>
+<div class=t>The 'BPM' frame contains the number of beats per minute in the
+mainpart of the audio. The BPM is an integer and represented as a
+numerical string.</div>
+</p>
+
+<p>
+<a name="TCOM"> </a>
+<div class=h5>TCOM</div>
+<div class=t>The 'Composer(s)' frame is intended for the name of the composer(s).
+They are seperated with the "/" character.</div>
+</p>
+
+<p>
+<a name="TCON"> </a>
+<div class=h5>TCON</div>
+<div class=t>The 'Content type', which previously was
+stored as a one byte numeric value only, is now a numeric string. You
+may use one or several of the types as ID3v1.1 did or, since the
+category list would be impossible to maintain with accurate and up to
+date categories, define your own.
+</div></p>
+<p><div class=t>
+References to the ID3v1 genres can be made by, as first byte, enter
+"(" followed by a number from the genres list (<a href="#secA">appendix A</a>) and
+ended with a ")" character. This is optionally followed by a
+refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be
+made in the same frame, e.g. "(51)(39)". If the refinement should
+begin with a "(" character it should be replaced with "((", e.g. "((I
+can figure out any genre)" or "(55)((I think...)". The following new
+content types is defined in ID3v2 and is implemented in the same way
+as the numerig content types, e.g. "(RX)".</div>
+</p>
+<p><center><table border=0 width="70%">
+<tr><td>RX</td><td width="100%">Remix</td></tr>
+<tr><td>CR</td><td>Cover</td></tr>
+</table></center>
+</p>
+
+<p>
+<a name="TCOP"> </a>
+<div class=h5>TCOP</div>
+<div class=t>The 'Copyright message' frame, which must begin with a year and a
+space character (making five characters), is intended for the
+copyright holder of the original sound, not the audio file itself.
+The absence of this frame means only that the copyright information
+is unavailable or has been removed, and must not be interpreted to
+mean that the sound is public domain. Every time this field is
+displayed the field must be preceded with "Copyright &copy; ".</div>
+</p>
+
+<p>
+<a name="TDAT"> </a>
+<div class=h5>TDAT</div>
+<div class=t>The 'Date' frame is a numeric string in the DDMM format containing
+the date for the recording. This field is always four characters
+long.</div>
+</p>
+
+<p>
+<a name="TDLY"> </a>
+<div class=h5>TDLY</div>
+<div class=t>The 'Playlist delay' defines the numbers of milliseconds of silence
+between every song in a playlist. The player should use the "ETC"
+frame, if present, to skip initial silence and silence at the end of
+the audio to match the 'Playlist delay' time. The time is represented
+as a numeric string.</div>
+</p>
+
+<p>
+<a name="TENC"> </a>
+<div class=h5>TENC</div>
+<div class=t>The 'Encoded by' frame contains the name of the person or
+organisation that encoded the audio file. This field may contain a
+copyright message, if the audio file also is copyrighted by the
+encoder.</div>
+</p>
+
+<p>
+<a name="TEXT"> </a>
+<div class=h5>TEXT</div>
+<div class=t>The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s)
+of the text or lyrics in the recording. They are seperated with the
+"/" character.</div>
+</p>
+
+<p>
+<a name="TFLT"> </a>
+<div class=h5>TFLT</div>
+<div class=t>The 'File type' frame indicates which type of audio this tag defines.
+The following type and refinements are defined:
+</div></p>
+<p><center><table border=0 width="70%">
+<tr><td>MPG</td><td rowspan=8>&nbsp;</td><td width="100%">MPEG Audio</td></tr>
+<tr><td align=right>/1</td><td>MPEG 1/2 layer I</td></tr>
+<tr><td align=right>/2</td><td>MPEG 1/2 layer II</td></tr>
+<tr><td align=right>/3</td><td>MPEG 1/2 layer III</td></tr>
+<tr><td align=right>/2.5</td><td>MPEG 2.5</td></tr>
+<tr><td align=right>&nbsp;/AAC</td><td>Advanced audio compression</td></tr>
+<tr><td>VQF</td><td>Transform-domain Weighted Interleave Vector Quantization</td></tr>
+<tr><td>PCM</td><td>Pulse Code Modulated audio</td></tr>
+</table></center></p>
+<p><div class=t>
+but other types may be used, not for these types though. This is used
+in a similar way to the predefined types in the "TMED" frame, but
+without parentheses. If this frame is not present audio type is
+assumed to be "MPG".</div>
+</p>
+
+<p>
+<a name="TIME"> </a>
+<div class=h5>TIME</div>
+<div class=t>The 'Time' frame is a numeric string in the HHMM format containing
+the time for the recording. This field is always four characters
+long.</div>
+</p>
+
+<p>
+<a name="TIT1"> </a>
+<div class=h5>TIT1</div>
+<div class=t>The 'Content group description' frame is used if the sound belongs to
+a larger category of sounds/music. For example, classical music is
+often sorted in different musical sections (e.g. "Piano Concerto",
+"Weather - Hurricane").</div>
+</p>
+
+<p>
+<a name="TIT2"> </a>
+<div class=h5>TIT2</div>
+<div class=t>The 'Title/Songname/Content description' frame is the actual name of
+the piece (e.g. "Adagio", "Hurricane Donna").</div>
+</p>
+
+<p>
+<a name="TIT3"> </a>
+<div class=h5>TIT3</div>
+<div class=t>The 'Subtitle/Description refinement' frame is used for information
+directly related to the contents title (e.g. "Op. 16" or "Performed
+live at Wembley").</div>
+</p>
+
+<p>
+<a name="TKEY"> </a>
+<div class=h5>TKEY</div>
+<div class=t>The 'Initial key' frame contains the musical key in which the sound
+starts. It is represented as a string with a maximum length of three
+characters. The ground keys are represented with "A","B","C","D","E",
+"F" and "G" and halfkeys represented with "b" and "#". Minor is
+represented as "m". Example "Cbm". Off key is represented with an "o"
+only.</div>
+</p>
+
+<p>
+<a name="TLAN"> </a>
+<div class=h5>TLAN</div>
+<div class=t>The 'Language(s)' frame should contain the languages of the text or
+lyrics spoken or sung in the audio. The language is represented with
+three characters according to <a href="#ISO-639-2">ISO-639-2</a>. If more than one language is
+used in the text their language codes should follow according to
+their usage.</div>
+</p>
+
+<p>
+<a name="TLEN"> </a>
+<div class=h5>TLEN</div>
+<div class=t>The 'Length' frame contains the length of the audiofile in
+milliseconds, represented as a numeric string.</div>
+</p>
+
+<p>
+<a name="TMED"> </a>
+<div class=h5>TMED</div>
+<div class=t>The 'Media type' frame describes from which media the sound
+originated. This may be a text string or a reference to the
+predefined media types found in the list below. References are made
+within "(" and ")" and are optionally followed by a text refinement,
+e.g. "(MC) with four channels". If a text refinement should begin
+with a "(" character it should be replaced with "((" in the same way
+as in the "TCO" frame. Predefined refinements is appended after the
+media type, e.g. "(CD/A)" or "(VID/PAL/VHS)".</div>
+</p>
+<p><center><table border=0 width="70%">
+<tr><td>DIG</td><td rowspan=67>&nbsp;</td><td width="100%">Other digital media</td></tr>
+<tr valign=top><td align=right>/A<br>&nbsp;</td><td>Analog transfer from media</td></tr>
+
+<tr><td>ANA</td><td>Other analog media</td></tr>
+<tr><td align=right>/WAC</td><td>Wax cylinder</td></tr>
+<tr valign=top><td align=right>/8CA<br>&nbsp;</td><td>8-track tape cassette</td></tr>
+
+<tr><td>CD</td><td>CD</td></tr>
+<tr><td align=right>/A</td><td>Analog transfer from media</td></tr>
+<tr><td align=right>/DD</td><td>DDD</td></tr>
+<tr><td align=right>/AD</td><td>ADD</td></tr>
+<tr valign=top><td align=right>/AA<br>&nbsp;</td><td>AAD</td></tr>
+
+<tr><td>LD</td><td>Laserdisc</td></tr>
+<tr valign=top><td align=right>/A<br>&nbsp;</td><td>Analog transfer from media</td></tr>
+
+<tr><td>TT</td><td>Turntable records</td></tr>
+<tr><td align=right>/33</td><td>33.33 rpm</td></tr>
+<tr><td align=right>/45</td><td>45 rpm</td></tr>
+<tr><td align=right>/71</td><td>71.29 rpm</td></tr>
+<tr><td align=right>/76</td><td>76.59 rpm</td></tr>
+<tr><td align=right>/78</td><td>78.26 rpm</td></tr>
+<tr valign=top><td align=right>/80<br>&nbsp;</td><td>80 rpm</td></tr>
+
+<tr><td>MD</td><td>MiniDisc</td></tr>
+<tr valign=top><td align=right>/A<br>&nbsp;</td><td>Analog transfer from media</td></tr>
+
+<tr><td>DAT</td><td>DAT</td></tr>
+<tr><td align=right>/A</td><td>Analog transfer from media</td></tr>
+<tr><td align=right>/1</td><td>standard, 48 kHz/16 bits, linear</td></tr>
+<tr><td align=right>/2</td><td>mode 2, 32 kHz/16 bits, linear</td></tr>
+<tr><td align=right>/3</td><td>mode 3, 32 kHz/12 bits, nonlinear, low speed</td></tr>
+<tr><td align=right>/4</td><td>mode 4, 32 kHz/12 bits, 4 channels</td></tr>
+<tr><td align=right>/5</td><td>mode 5, 44.1 kHz/16 bits, linear</td></tr>
+<tr valign=top><td align=right>/6<br>&nbsp;</td><td>mode 6, 44.1 kHz/16 bits, 'wide track' play</td></tr>
+
+<tr><td>DCC</td><td>DCC</td></tr>
+<tr valign=top><td align=right>/A<br>&nbsp;</td><td>Analog transfer from media</td></tr>
+
+<tr><td>DVD</td><td>DVD</td></tr>
+<tr valign=top><td align=right>/A<br>&nbsp;</td><td>Analog transfer from media</td></tr>
+
+<tr><td>TV</td><td>Television</td></tr>
+<tr><td align=right>/PAL</td><td>PAL</td></tr>
+<tr><td align=right>/NTSC</td><td>NTSC</td></tr>
+<tr valign=top><td align=right>&nbsp;/SECAM<br>&nbsp;</td><td>SECAM</td></tr>
+
+<tr><td>VID</td><td>Video</td></tr>
+<tr><td align=right>/PAL</td><td>PAL</td></tr>
+<tr><td align=right>/NTSC</td><td>NTSC</td></tr>
+<tr><td align=right>/SECAM</td><td>SECAM</td></tr>
+<tr><td align=right>/VHS</td><td>VHS</td></tr>
+<tr><td align=right>/SVHS</td><td>S-VHS</td></tr>
+<tr valign=top><td align=right>/BETA<br>&nbsp;</td><td>BETAMAX</td></tr>
+
+<tr><td>RAD</td><td>Radio</td></tr>
+<tr><td align=right>/FM</td><td>FM</td></tr>
+<tr><td align=right>/AM</td><td>AM</td></tr>
+<tr><td align=right>/LW</td><td>LW</td></tr>
+<tr valign=top><td align=right>/MW<br>&nbsp;</td><td>MW</td></tr>
+
+<tr><td>TEL</td><td>Telephone</td></tr>
+<tr valign=top><td align=right>/I<br>&nbsp;</td><td>ISDN</td></tr>
+
+<tr><td>MC</td><td>MC (normal cassette)</td></tr>
+<tr><td align=right>/4</td><td>4.75 cm/s (normal speed for a two sided cassette)</td></tr>
+<tr><td align=right>/9</td><td>9.5 cm/s</td></tr>
+<tr><td align=right>/I</td><td>Type I cassette (ferric/normal)</td></tr>
+<tr><td align=right>/II</td><td>Type II cassette (chrome)</td></tr>
+<tr><td align=right>/III</td><td>Type III cassette (ferric chrome)</td></tr>
+<tr valign=top><td align=right>/IV<br>&nbsp;</td><td>Type IV cassette (metal)</td></tr>
+
+<tr><td>REE</td><td>Reel</td></tr>
+<tr><td align=right>/9</td><td>9.5 cm/s</td></tr>
+<tr><td align=right>/19</td><td>19 cm/s</td></tr>
+<tr><td align=right>/38</td><td>38 cm/s</td></tr>
+<tr><td align=right>/76</td><td>76 cm/s</td></tr>
+<tr><td align=right>/I</td><td>Type I cassette (ferric/normal)</td></tr>
+<tr><td align=right>/II</td><td>Type II cassette (chrome)</td></tr>
+<tr><td align=right>/III</td><td>Type III cassette (ferric chrome)</td></tr>
+<tr><td align=right>/IV<br>&nbsp;</td><td>Type IV cassette (metal)</td></tr>
+</table></center>
+</p>
+
+<p>
+<a name="TOAL"> </a>
+<div class=h5>TOAL</div>
+<div class=t>The 'Original album/movie/show title' frame is intended for the title
+of the original recording (or source of sound), if for example the
+music in the file should be a cover of a previously released song.
+</p></div>
+
+<p>
+<a name="TOFN"> </a>
+<div class=h5>TOFN</div>
+<div class=t>The 'Original filename' frame contains the preferred filename for the
+file, since some media doesn't allow the desired length of the
+filename. The filename is case sensitive and includes its suffix.</div>
+</p>
+
+<p>
+<a name="TOLY"> </a>
+<div class=h5>TOLY</div>
+<div class=t>The 'Original lyricist(s)/text writer(s)' frame is intended for the
+text writer(s) of the original recording, if for example the music in
+the file should be a cover of a previously released song. The text
+writers are seperated with the "/" character.</div>
+</p>
+
+<p>
+<a name="TOPE"> </a>
+<div class=h5>TOPE</div>
+<div class=t>The 'Original artist(s)/performer(s)' frame is intended for the
+performer(s) of the original recording, if for example the music in
+the file should be a cover of a previously released song. The
+performers are seperated with the "/" character.</div>
+</p>
+
+<p>
+<a name="TORY"> </a>
+<div class=h5>TORY</div>
+<div class=t>The 'Original release year' frame is intended for the year when the
+original recording, if for example the music in the file should be a
+cover of a previously released song, was released. The field is
+formatted as in the "TYER" frame.</div>
+</p>
+
+<p>
+<a name="TOWN"> </a>
+<div class=h5>TOWN</div>
+<div class=t>The 'File owner/licensee' frame contains the name of the owner or
+licensee of the file and it's contents.</div>
+</p>
+
+<p>
+<a name="TPE1"> </a>
+<div class=h5>TPE1</div>
+<div class=t>The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is
+used for the main artist(s). They are seperated with the "/"
+character.</div>
+</p>
+
+<p>
+<a name="TPE2"> </a>
+<div class=h5>TPE2</div>
+<div class=t>The 'Band/Orchestra/Accompaniment' frame is used for additional
+information about the performers in the recording.</div>
+</p>
+
+<p>
+<a name="TPE3"> </a>
+<div class=h5>TPE3</div>
+<div class=t>The 'Conductor' frame is used for the name of the conductor.</div>
+</p>
+
+<p>
+<a name="TPE4"> </a>
+<div class=h5>TPE4</div>
+<div class=t>The 'Interpreted, remixed, or otherwise modified by' frame contains
+more information about the people behind a remix and similar
+interpretations of another existing piece.</div>
+</p>
+
+<p>
+<a name="TPOS"> </a>
+<div class=h5>TPOS</div>
+<div class=t>The 'Part of a set' frame is a numeric string that describes which
+part of a set the audio came from. This frame is used if the source
+described in the "<a href="#TALB">TALB</a>" frame is divided into several mediums, e.g. a
+double CD. The value may be extended with a "/" character and a
+numeric string containing the total number of parts in the set. E.g.
+"1/2".</div>
+</p>
+
+<p>
+<a name="TPUB"> </a>
+<div class=h5>TPUB</div>
+<div class=t>The 'Publisher' frame simply contains the name of the label or
+publisher.</div>
+</p>
+
+<p>
+<a name="TRCK"> </a>
+<div class=h5>TRCK</div>
+<div class=t>The 'Track number/Position in set' frame is a numeric string
+containing the order number of the audio-file on its original
+recording. This may be extended with a "/" character and a numeric
+string containing the total numer of tracks/elements on the original
+recording. E.g. "4/9".</div>
+</p>
+
+<p>
+<a name="TRDA"> </a>
+<div class=h5>TRDA</div>
+<div class=t>The 'Recording dates' frame is a intended to be used as complement to
+the "<a href="#TYER">TYER</a>", "<a href="#TDAT">TDAT</a>" and "<a href="#TIME">TIME</a>" frames. E.g. "4th-7th June, 12th June"
+in combination with the "<a href="#TYER">TYER</a>" frame.</div>
+</p>
+
+<p>
+<a name="TRSN"> </a>
+<div class=h5>TRSN</div>
+<div class=t>The 'Internet radio station name' frame contains the name of the
+internet radio station from which the audio is streamed.</div>
+</p>
+
+<p>
+<a name="TRSO"> </a>
+<div class=h5>TRSO</div>
+<div class=t>The 'Internet radio station owner' frame contains the name of the
+owner of the internet radio station from which the audio is
+streamed.</div>
+</p>
+
+<p>
+<a name="TSIZ"> </a>
+<div class=h5>TSIZ</div>
+<div class=t>The 'Size' frame contains the size of the audiofile in bytes,
+excluding the ID3v2 tag, represented as a numeric string.</div>
+</p>
+
+<p>
+<a name="TSRC"> </a>
+<div class=h5>TSRC</div>
+<div class=t>The 'ISRC' frame should contain the International Standard Recording
+Code (<a href="#ISRC">ISRC</a>) (12 characters).</div>
+</p>
+
+<p>
+<a name="TSSE"> </a>
+<div class=h5>TSSE</div>
+<div class=t>The 'Software/Hardware and settings used for encoding' frame
+includes the used audio encoder and its settings when the file was
+encoded. Hardware refers to hardware encoders, not the computer on
+which a program was run.</div>
+</p>
+
+<p>
+<a name="TYER"> </a>
+<div class=h5>TYER</div>
+<div class=t>The 'Year' frame is a numeric string with a year of the recording.
+This frames is always four characters long (until the year 10000).</div>
+</p>
+
+<h3>4.2.2.User defined text information frame</h3>
+<p class=t>
+<div class=t>This frame is intended for one-string text information concerning the
+audiofile in a similar way to the other "T"-frames. The frame body
+consists of a description of the string, represented as a terminated
+string, followed by the actual string. There may be more than one
+"TXXX" frame in each tag, but only one with the same description.
+</p>
+<p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'User defined text information frame', ID: "TXXX"&gt;
+<tr><td>Text encoding</td><td>$xx</td></tr>
+<tr><td>Description</td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+<tr><td>Value</td><td>&lt;text string according to encoding&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.3"> </a>
+<h3>4.3.URL link frames</h3>
+<p class=t>
+With these frames dynamic data such as webpages with touring
+information, price information or plain ordinary news can be added to
+the tag. There may only be one <a href="#URL">URL</a> link frame of its kind in an
+tag, except when stated otherwise in the frame description. If the
+textstring is followed by a termination ($00 (00)) all the following
+information should be ignored and not be displayed. All <a href="#URL">URL</a> link
+frame identifiers begins with "W". Only <a href="#URL">URL</a> link frame identifiers
+begins with "W". All <a href="#URL">URL</a> link frames have the following format:
+</p>
+<p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'URL link frame', ID: "W000" - "WZZZ", excluding "WXXX" described in 4.3.2.&gt;</td></tr>
+<tr><td>URL</td><td width="80%">&lt;text string&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.3.1"> </a>
+<h3>4.3.1.URL link frames - details</h3>
+<p>
+<a name="WCOM"> </a>
+<div class=h5>WCOM</div>
+<div class=t>The 'Commercial information' frame is a <a href="#URL">URL</a> pointing at a webpage
+with information such as where the album can be bought. There may be
+more than one "WCOM" frame in a tag, but not with the same content.</div>
+</p>
+
+<p>
+<a name="WCOP"> </a>
+<div class=h5>WCOP</div>
+<div class=t>The 'Copyright/Legal information' frame is a <a href="#URL">URL</a> pointing at a
+webpage where the terms of use and ownership of the file is
+described.</div>
+</p>
+
+<p>
+<a name="WOAF"> </a>
+<div class=h5>WOAF</div>
+<div class=t>The 'Official audio file webpage' frame is a <a href="#URL">URL</a> pointing at a file
+specific webpage.</div>
+</p>
+
+<p>
+<a name="WOAR"> </a>
+<div class=h5>WOAR</div>
+<div class=t>The 'Official artist/performer webpage' frame is a <a href="#URL">URL</a> pointing at
+the artists official webpage. There may be more than one "WOAR" frame
+in a tag if the audio contains more than one performer, but not with
+the same content.</div>
+</p>
+
+<p>
+<a name="WOAS"> </a>
+<div class=h5>WOAS</div>
+<div class=t>The 'Official audio source webpage' frame is a <a href="#URL">URL</a> pointing at the
+official webpage for the source of the audio file, e.g. a movie.</div>
+</p>
+
+<p>
+<a name="WORS"> </a>
+<div class=h5>WORS</div>
+<div class=t>The 'Official internet radio station homepage' contains a <a href="#URL">URL</a>
+pointing at the homepage of the internet radio station.</div>
+</p>
+
+<p>
+<a name="WPAY"> </a>
+<div class=h5>WPAY</div>
+<div class=t>The 'Payment' frame is a <a href="#URL">URL</a> pointing at a webpage that will handle
+the process of paying for this file.</div>
+</p>
+
+<p>
+<a name="WPUB"> </a>
+<div class=h5>WPUB</div>
+<div class=t>The 'Publishers official webpage' frame is a <a href="#URL">URL</a> pointing at the
+official wepage for the publisher.</div>
+</p>
+
+<a name="sec4.3.2"> </a>
+<h3>4.3.2.User defined URL link frame</h3>
+<p class=t>
+This frame is intended for <a href="#URL">URL</a> links concerning the audiofile
+in a similar way to the other "W"-frames. The frame body consists
+of a description of the string, represented as a terminated string,
+followed by the actual <a href="#URL">URL</a>. The <a href="#URL">URL</a> is always encoded with <a href="#ISO-8859-1">ISO-8859-1</a>. There may be more than one "WXXX" frame in each tag,
+but only one with the same description.
+</p>
+<p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'User defined URL link frame', ID: "WXXX"&gt;</td></tr>
+<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
+<tr><td>Description </td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+<tr><td>URL </td><td>&lt;text string&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.4"> </a>
+<h3>4.4.Involved people list</h3>
+<p class=t>
+Since there might be a lot of people contributing to an audio file in
+various ways, such as musicians and technicians, the 'Text
+information frames' are often insufficient to list everyone involved
+in a project. The 'Involved people list' is a frame containing the
+names of those involved, and how they were involved. The body simply
+contains a terminated string with the involvement directly followed
+by a terminated string with the involvee followed by a new
+involvement and so on. There may only be one "IPLS" frame in each
+tag.
+</p>
+<p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Involved people list', ID: "IPLS"&gt;</td></tr>
+<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
+<tr><td>People list strings</td><td>&lt;text strings according to encoding&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.5"> </a>
+<h3>4.5.Music CD identifier</h3>
+<p class=t>
+This frame is intended for music that comes from a CD, so that the CD
+can be identified in databases such as the <a href="#CDDB">CDDB</a>. The frame
+consists of a binary dump of the Table Of Contents, TOC, from the CD,
+which is a header of 4 bytes and then 8 bytes/track on the CD plus 8
+bytes for the 'lead out' making a maximum of 804 bytes. The offset to
+the beginning of every track on the CD should be described with a
+four bytes absolute CD-frame address per track, and not with absolute
+time. This frame requires a present and valid "<a href="#TRCK">TRCK</a>" frame, even if
+the CD's only got one track. There may only be one "MCDI" frame in
+each tag.
+</p>
+<p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Music CD identifier', ID: "MCDI"&gt;</td></tr>
+<tr><td>CD TOC</td><td>&lt;binary data&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.6"> </a>
+<h3>4.6.Event timing codes</h3>
+<p class=t>
+This frame allows synchronisation with key events in a song or sound.
+The header is:
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Event timing codes', ID: "ETCO"&gt;</td></tr>
+<tr><td>Time stamp format</td><td width="80%">$xx</td></tr>
+</table></center>
+</p><p class=t>
+Where time stamp format is:
+</p><p class=ind>
+ $01 Absolute time, 32 bit sized, using <a href="#MPEG">MPEG</a> frames as unit<br>
+ $02 Absolute time, 32 bit sized, using milliseconds as unit
+</p><p class=t>
+Abolute time means that every stamp contains the time from the
+beginning of the file.
+</p><p class=t>
+Followed by a list of key events in the following format:
+</p><p><center><table border=0 width="70%">
+<tr><td>Type of event</td><td width="80%">$xx</td></tr>
+<tr><td>Time stamp</td><td>$xx (xx ...)</td></tr>
+</table></center>
+</p><p class=t>
+The 'Time stamp' is set to zero if directly at the beginning of the
+sound or after the previous event. All events should be sorted in
+chronological order. The type of event is as follows:
+</p><p><center><table border=0 width="70%">
+<tr><td>$00</td><td width="80%">padding (has no meaning)</td></tr>
+<tr><td>$01</td><td>end of initial silence</td></tr>
+<tr><td>$02</td><td>intro start</td></tr>
+<tr><td>$03</td><td>mainpart start</td></tr>
+<tr><td>$04</td><td>outro start</td></tr>
+<tr><td>$05</td><td>outro end</td></tr>
+<tr><td>$06</td><td>verse start</td></tr>
+<tr><td>$07</td><td>refrain start</td></tr>
+<tr><td>$08</td><td>interlude start</td></tr>
+<tr><td>$09</td><td>theme start</td></tr>
+<tr><td>$0A</td><td>variation start</td></tr>
+<tr><td>$0B</td><td>key change</td></tr>
+<tr><td>$0C</td><td>time change</td></tr>
+<tr><td>$0D</td><td>momentary unwanted noise (Snap, Crackle & Pop)</td></tr>
+<tr><td>$0E</td><td>sustained noise</td></tr>
+<tr><td>$0F</td><td>sustained noise end</td></tr>
+<tr><td>$10</td><td>intro end</td></tr>
+<tr><td>$11</td><td>mainpart end</td></tr>
+<tr><td>$12</td><td>verse end</td></tr>
+<tr><td>$13</td><td>refrain end</td></tr>
+<tr><td>$14</td><td>theme end</td></tr>
+
+<tr><td>$15-$DF</td><td>reserved for future use</td></tr>
+
+<tr><td>$E0-$EF</td><td>not predefined sync 0-F</td></tr>
+
+<tr><td>$F0-$FC</td><td>reserved for future use</td></tr>
+
+<tr><td>$FD</td><td>audio end (start of silence)</td></tr>
+<tr><td>$FE</td><td>audio file ends</td></tr>
+<tr><td>$FF</td><td>one more byte of events follows (all the following bytes with the value $FF have the same function)</td></tr>
+</table></center>
+</p><p class=t>
+Terminating the start events such as "intro start" is not required.
+The 'Not predefined sync's ($E0-EF) are for user events. You might
+want to synchronise your music to something, like setting of an
+explosion on-stage, turning on your screensaver etc.
+</p>
+<p class=t>There may only be one "ETCO" frame in each tag.</p>
+
+<a name="sec4.7"> </a>
+<h3>4.7.MPEG location lookup table</h3>
+<p class=t>
+To increase performance and accuracy of jumps within a <a href="#MPEG">MPEG</a>
+audio file, frames with timecodes in different locations in the file
+might be useful. The ID3v2 frame includes references that the
+software can use to calculate positions in the file. After the frame
+header is a descriptor of how much the 'frame counter' should
+increase for every reference. If this value is two then the first
+reference points out the second frame, the 2nd reference the 4th
+frame, the 3rd reference the 6th frame etc. In a similar way the
+'bytes between reference' and 'milliseconds between reference' points
+out bytes and milliseconds respectively.
+</p><p class=t>
+Each reference consists of two parts; a certain number of bits, as
+defined in 'bits for bytes deviation', that describes the difference
+between what is said in 'bytes between reference' and the reality and
+a certain number of bits, as defined in 'bits for milliseconds
+deviation', that describes the difference between what is said in
+'milliseconds between reference' and the reality. The number of bits
+in every reference, i.e. 'bits for bytes deviation'+'bits for
+milliseconds deviation', must be a multiple of four. There may only
+be one "MLLT" frame in each tag.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Location lookup table', ID: "MLLT"&gt;</td></tr>
+<tr><td nowrap>MPEG frames between reference</td><td width="80%">$xx xx</td></tr>
+<tr><td>Bytes between reference</td><td>$xx xx xx</td></tr>
+<tr><td>Milliseconds between reference</td><td>$xx xx xx</td></tr>
+<tr><td>Bits for bytes deviation</td><td>$xx</td></tr>
+<tr><td>Bits for milliseconds dev.</td><td>$xx</td></tr>
+</table></center>
+</p><p class=t>
+Then for every reference the following data is included;
+</p><p><center><table border=0 width="70%">
+<tr><td>Deviation in bytes</td><td width="80%">%xxx....</td></tr>
+<tr><td>Deviation in milliseconds</td><td>%xxx....</td></tr>
+</table></center>
+</p>
+
+<a name="sec4.8"> </a>
+<h3>4.8.Synchronised tempo codes</h3>
+<p class=t>
+For a more accurate description of the tempo of a musical piece this
+frame might be used. After the header follows one byte describing
+which time stamp format should be used. Then follows one or more
+tempo codes. Each tempo code consists of one tempo part and one time
+part. The tempo is in BPM described with one or two bytes. If the
+first byte has the value $FF, one more byte follows, which is added
+to the first giving a range from 2 - 510 BPM, since $00 and $01 is
+reserved. $00 is used to describe a beat-free time period, which is
+not the same as a music-free time period. $01 is used to indicate one
+single beat-stroke followed by a beat-free period.
+</p><p class=t>
+The tempo descriptor is followed by a time stamp. Every time the
+tempo in the music changes, a tempo descriptor may indicate this for
+the player. All tempo descriptors should be sorted in chronological
+order. The first beat-stroke in a time-period is at the same time as
+the beat description occurs. There may only be one "SYTC" frame in
+each tag.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Synchronised tempo codes', ID: "SYTC"&gt;</td></tr>
+<tr><td>Time stamp format</td><td width="80%">$xx</td></tr>
+<tr><td>Tempo data </td><td>&lt;binary data&gt;</td></tr>
+</table></center>
+</p><p class=t>
+Where time stamp format is:
+</p><p class=ind>
+ $01 Absolute time, 32 bit sized, using <a href="#MPEG">MPEG</a> frames as unit<br>
+ $02 Absolute time, 32 bit sized, using milliseconds as unit
+</p><p class=t>
+Abolute time means that every stamp contains the time from the
+beginning of the file.
+</p>
+
+<a name="sec4.9"> </a>
+<h3>4.9.Unsychronised lyrics/text transcription</h3>
+<p class=t>
+This frame contains the lyrics of the song or a text transcription of
+other vocal activities. The head includes an encoding descriptor and
+a content descriptor. The body consists of the actual text. The
+'Content descriptor' is a terminated string. If no descriptor is
+entered, 'Content descriptor' is $00 (00) only. Newline characters
+are allowed in the text. There may be more than one 'Unsynchronised
+lyrics/text transcription' frame in each tag, but only one with the
+same language and content descriptor.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Unsynchronised lyrics/text transcription', ID: "USLT"&gt;</td></tr>
+<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
+<tr><td>Language</td><td>$xx xx xx</td></tr>
+<tr><td>Content descriptor</td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+<tr><td>Lyrics/text</td><td>&lt;full text string according to encoding&gt;</td></tr>
+</table></center>
+</p>
+
+<a name="sec4.10"> </a>
+<h3>4.10.Synchronised lyrics/text</h3>
+<p class=t>
+This is another way of incorporating the words, said or sung lyrics,
+in the audio file as text, this time, however, in sync with the
+audio. It might also be used to describing events e.g. occurring on a
+stage or on the screen in sync with the audio. The header includes a
+content descriptor, represented with as terminated textstring. If no
+descriptor is entered, 'Content descriptor' is $00 (00) only.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Synchronised lyrics/text', ID: "SYLT"&gt;</td></tr>
+<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
+<tr><td>Language</td><td>$xx xx xx</td></tr>
+<tr><td>Time stamp format</td><td>$xx</td></tr>
+<tr><td>Content type</td><td>$xx</td></tr>
+<tr><td>Content descriptor</td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+</table></center>
+</p>
+<p><center><table border=0 width="70%">
+<tr><td rowspan=2 valign=top>Encoding:</td><td>$00</td><td><a href="#ISO-8859-1">ISO-8859-1</a> character set is used => $00
+ is sync identifier.</td></tr>
+<tr><td>$01</td><td><a href="#UNICODE">Unicode</a> character set is used => $00 00 is
+ sync identifier.</td></tr>
+</table></center></p>
+
+<p><center><table border=0 width="70%">
+<tr><td rowspan=7 valign=top>Content type:</td><td>$00</td><td width="80%">is other</td></tr>
+<tr><td>$01</td><td>is lyrics</td></tr>
+<tr><td>$02</td><td>is text transcription</td></tr>
+<tr><td>$03</td><td>is movement/part name (e.g. "Adagio")</td></tr>
+<tr><td>$04</td><td>is events (e.g. "Don Quijote enters the stage")</td></tr>
+<tr><td>$05</td><td>is chord (e.g. "Bb F Fsus")</td></tr>
+<tr><td>$06</td><td>is trivia/'pop up' information</td></tr>
+</table></center></p>
+<p class=t>
+Time stamp format is:
+</p><p class=ind>
+ $01 Absolute time, 32 bit sized, using <a href="#MPEG">MPEG</a> frames as unit<br>
+ $02 Absolute time, 32 bit sized, using milliseconds as unit
+</p>
+<p class=t>
+Abolute time means that every stamp contains the time from the
+beginning of the file.
+</p><p class=t>
+The text that follows the frame header differs from that of the
+unsynchronised lyrics/text transcription in one major way. Each
+syllable (or whatever size of text is considered to be convenient by
+the encoder) is a null terminated string followed by a time stamp
+denoting where in the sound file it belongs. Each sync thus has the
+following structure:
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>Terminated text to be synced (typically a syllable)</td></tr>
+<tr><td nowrap>Sync identifier (terminator to above string)</td><td width="80%">$00 (00)</td></tr>
+<tr><td>Time stamp</td><td>$xx (xx ...)</td></tr>
+</table></center>
+<p class=t>
+The 'time stamp' is set to zero or the whole sync is omitted if
+located directly at the beginning of the sound. All time stamps
+should be sorted in chronological order. The sync can be considered
+as a validator of the subsequent string.
+</p><p class=t>
+Newline ($0A) characters are allowed in all "SYLT" frames and should
+be used after every entry (name, event etc.) in a frame with the
+content type $03 - $04.
+</p><p class=t>
+A few considerations regarding whitespace characters: Whitespace
+separating words should mark the beginning of a new word, thus
+occurring in front of the first syllable of a new word. This is also
+valid for new line characters. A syllable followed by a comma should
+not be broken apart with a sync (both the syllable and the comma
+should be before the sync).</p>
+<p class=t>An example: The "USLT" passage</p>
+<p class=ind>"Strangers in the night" $0A "Exchanging glances"</p>
+<p class=t>would be "SYLT" encoded as:</p>
+<p class=ind>
+ "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
+ " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
+ xx "glan" $00 xx xx "ces" $00 xx xx
+</p>
+<p class=t>There may be more than one "SYLT" frame in each tag, but only one
+with the same language and content descriptor.</p>
+
+<a name="sec4.11"> </a>
+<h3>4.11.Comments</h3>
+<p class=t>
+This frame is indended for any kind of full text information that
+does not fit in any other frame. It consists of a frame header
+followed by encoding, language and content descriptors and is ended
+with the actual comment as a text string. Newline characters are
+allowed in the comment text string. There may be more than one
+comment frame in each tag, but only one with the same language and
+content descriptor.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Comment', ID: "COMM"&gt;</td></tr>
+<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
+<tr><td>Language </td><td>$xx xx xx</td></tr>
+<tr><td>Short content descrip.</td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+<tr><td>The actual text </td><td>&lt;full text string according to encoding&gt;</td></tr>
+</table></center>
+</p>
+
+<a name="sec4.12"> </a>
+<h3>4.12.Relative volume adjustment</h3>
+<p class=t>
+This is a more subjective function than the previous ones. It allows
+the user to say how much he wants to increase/decrease the volume on
+each channel while the file is played. The purpose is to be able to
+align all files to a reference volume, so that you don't have to
+change the volume constantly. This frame may also be used to balance
+adjust the audio. If the volume peak levels are known then this could
+be described with the 'Peak volume right' and 'Peak volume left'
+field. If Peakvolume is not known these fields could be left zeroed
+or, if no other data follows, be completely omitted. There may only
+be one "RVAD" frame in each tag.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Relative volume adjustment', ID: "RVAD"&gt;</td></tr>
+<tr><td>Increment/decrement</td><td width="80%">%00xxxxxx</td></tr>
+<tr><td>Bits used for volume descr.</td><td>$xx</td></tr>
+<tr><td>Relative volume change, right</td><td>$xx xx (xx ...)</td></tr>
+<tr><td>Relative volume change, left</td><td>$xx xx (xx ...)</td></tr>
+<tr><td>Peak volume right</td><td>$xx xx (xx ...)</td></tr>
+<tr><td>Peak volume left</td><td>$xx xx (xx ...)</td></tr>
+</table></center></p>
+<p class=t>
+In the increment/decrement field bit 0 is used to indicate the right
+channel and bit 1 is used to indicate the left channel. 1 is
+increment and 0 is decrement.
+</p><p class=t>
+The 'bits used for volume description' field is normally $10 (16
+bits) for <a href="#MPEG">MPEG</a> 2 layer I, II and III and MPEG 2.5. This value
+may not be $00. The volume is always represented with whole bytes,
+padded in the beginning (highest bits) when 'bits used for volume
+description' is not a multiple of eight.
+</p><p class=t>
+This datablock is then optionally followed by a volume definition for
+the left and right back channels. If this information is appended to
+the frame the first two channels will be treated as front channels.
+In the increment/decrement field bit 2 is used to indicate the right
+back channel and bit 3 for the left back channel.
+</p><p><center><table border=0 width="70%">
+<tr><td nowrap>Relative volume change, right back</td><td width="80%">$xx xx (xx ...)</td></tr>
+<tr><td>Relative volume change, left back</td><td>$xx xx (xx ...)</td></tr>
+<tr><td>Peak volume right back</td><td>$xx xx (xx ...)</td></tr>
+<tr><td>Peak volume left back</td><td>$xx xx (xx ...)</td></tr>
+</table></center></p>
+<p class=t>
+If the center channel adjustment is present the following is appended
+to the existing frame, after the left and right back channels. The
+center channel is represented by bit 4 in the increase/decrease
+field.
+</p><p><center><table border=0 width="70%">
+<tr><td nowrap>Relative volume change, center</td><td width="80%">$xx xx (xx ...)</td></tr>
+<tr><td>Peak volume center</td><td>$xx xx (xx ...)</td></tr>
+</table></center></p>
+<p class=t>
+If the bass channel adjustment is present the following is appended
+to the existing frame, after the center channel. The bass channel is
+represented by bit 5 in the increase/decrease field.
+</p><p><center><table border=0 width="70%">
+<tr><td nowrap>Relative volume change, bass</td><td width="80%">$xx xx (xx ...)</td></tr>
+<tr><td>Peak volume bass</td><td>$xx xx (xx ...)</td></tr>
+</table></center></p>
+
+<a name="sec4.13"> </a>
+<h3>4.13.Equalisation</h3>
+<p class=t>
+This is another subjective, alignment frame. It allows the user to
+predefine an equalisation curve within the audio file. There may only
+be one "EQUA" frame in each tag.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header of 'Equalisation', ID: "EQUA"&gt;</td></tr>
+<tr><td>Adjustment bits</td><td width="80%">$xx</td></tr>
+</table></center></p>
+<p class=t>
+The 'adjustment bits' field defines the number of bits used for
+representation of the adjustment. This is normally $10 (16 bits) for
+<a href="#MPEG">MPEG</a> 2 layer I, II and III and MPEG 2.5. This value may not be
+$00.
+</p><p class=t>
+This is followed by 2 bytes + ('adjustment bits' rounded up to the
+nearest byte) for every equalisation band in the following format,
+giving a frequency range of 0 - 32767Hz:
+</p><p><center><table border=0 width="70%">
+<tr><td>Increment/decrement</td><td width="80%">%x (MSB of the Frequency)</td></tr>
+<tr><td>Frequency </td><td>(lower 15 bits)</td></tr>
+<tr><td>Adjustment</td><td>$xx (xx ...)</td></tr>
+</Table></center></p>
+<p class=t>
+The increment/decrement bit is 1 for increment and 0 for decrement.
+The equalisation bands should be ordered increasingly with reference
+to frequency. All frequencies don't have to be declared. The
+equalisation curve in the reading software should be interpolated
+between the values in this frame. Three equal adjustments for three
+subsequent frequencies. A frequency should only be described once in
+the frame.
+</p>
+
+<a name="sec4.14"> </a>
+<h3>4.14.Reverb</h3>
+<p class=t>
+Yet another subjective one. You may here adjust echoes of different
+kinds. Reverb left/right is the delay between every bounce in ms.
+Reverb bounces left/right is the number of bounces that should be
+made. $FF equals an infinite number of bounces. Feedback is the
+amount of volume that should be returned to the next echo bounce. $00
+is 0%, $FF is 100%. If this value were $7F, there would be 50% volume
+reduction on the first bounce, 50% of that on the second and so on.
+Left to left means the sound from the left bounce to be played in the
+left speaker, while left to right means sound from the left bounce to
+be played in the right speaker.
+</p><p class=t>
+'Premix left to right' is the amount of left sound to be mixed in the
+right before any reverb is applied, where $00 id 0% and $FF is 100%.
+'Premix right to left' does the same thing, but right to left.
+Setting both premix to $FF would result in a mono output (if the
+reverb is applied symmetric). There may only be one "RVRB" frame in
+each tag.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Reverb', ID: "RVRB"&gt;</td></tr>
+<tr><td>Reverb left (ms) </td><td>$xx xx</td></tr>
+<tr><td>Reverb right (ms) </td><td>$xx xx</td></tr>
+<tr><td>Reverb bounces, left </td><td>$xx</td></tr>
+<tr><td>Reverb bounces, right</td><td>$xx</td></tr>
+<tr><td>Reverb feedback, left to left </td><td>$xx</td></tr>
+<tr><td>Reverb feedback, left to right</td><td>$xx</td></tr>
+<tr><td>Reverb feedback, right to right </td><td>$xx</td></tr>
+<tr><td>Reverb feedback, right to left</td><td>$xx</td></tr>
+<tr><td>Premix left to right </td><td>$xx</td></tr>
+<tr><td>Premix right to left </td><td>$xx</td></tr>
+</table></center></p>
+
+<a name="sec4.15"> </a>
+<h3>4.15.Attached picture</h3>
+<p class=t>
+This frame contains a picture directly related to the audio file.
+Image format is the <a href="#MIME">MIME</a> type and subtype for the image. In
+the event that the <a href="#MIME">MIME</a> media type name is omitted, "image/" will be
+implied. The "<a href="#PNG">image/png</a>" or "<a href="#JFIF">image/jpeg</a>" picture format
+should be used when interoperability is wanted. Description is a
+short description of the picture, represented as a terminated
+textstring. The description has a maximum length of 64 characters,
+but may be empty. There may be several pictures attached to one file,
+each in their individual "APIC" frame, but only one with the same
+content descriptor. There may only be one picture with the picture
+type declared as picture type $01 and $02 respectively. There is the
+possibility to put only a link to the image file by using the '<a href="#MIME">MIME</a>
+type' "-->" and having a complete <a href="#URL">URL</a> instead of picture data.
+The use of linked files should however be used sparingly since there
+is the risk of separation of files.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Attached picture', ID: "APIC"&gt;</td></tr>
+<tr><td>Text encoding</td><td>$xx</td></tr>
+<tr><td>MIME type </td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>Picture type </td><td>$xx</td></tr>
+<tr><td>Description </td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+<tr><td>Picture data </td><td>&lt;binary data&gt;</td></tr>
+</table>
+</center></p>
+<p><center><table border=0 width="70%">
+<tr><td rowspan=21 valign=top>Picture type:</td><td>$00</td><td>Other</td></tr>
+<tr><td>$01</td><td>32x32 pixels 'file icon' (PNG only)</td></tr>
+<tr><td>$02</td><td>Other file icon</td></tr>
+<tr><td>$03</td><td>Cover (front)</td></tr>
+<tr><td>$04</td><td>Cover (back)</td></tr>
+<tr><td>$05</td><td>Leaflet page</td></tr>
+<tr><td>$06</td><td>Media (e.g. lable side of CD)</td></tr>
+<tr><td>$07</td><td>Lead artist/lead performer/soloist</td></tr>
+<tr><td>$08</td><td>Artist/performer</td></tr>
+<tr><td>$09</td><td>Conductor</td></tr>
+<tr><td>$0A</td><td>Band/Orchestra</td></tr>
+<tr><td>$0B</td><td>Composer</td></tr>
+<tr><td>$0C</td><td>Lyricist/text writer</td></tr>
+<tr><td>$0D</td><td>Recording Location</td></tr>
+<tr><td>$0E</td><td>During recording</td></tr>
+<tr><td>$0F</td><td>During performance</td></tr>
+<tr><td>$10</td><td>Movie/video screen capture</td></tr>
+<tr><td>$11</td><td>A bright coloured fish</td></tr>
+<tr><td>$12</td><td>Illustration</td></tr>
+<tr><td>$13</td><td>Band/artist logotype</td></tr>
+<tr><td>$14</td><td>Publisher/Studio logotype</td></tr>
+</table></center></p>
+
+<a name="sec4.16"> </a>
+<h3>4.16.General encapsulated object</h3>
+<p class=t>
+In this frame any type of file can be encapsulated. After the header,
+'Frame size' and 'Encoding' follows '<a href="#MIME">MIME</a> type' represented as
+as a terminated string encoded with <a href="#ISO-8859-1">ISO-8859-1</a>. The
+filename is case sensitive and is encoded as 'Encoding'. Then follows
+a content description as terminated string, encoded as 'Encoding'.
+The last thing in the frame is the actual object. The first two
+strings may be omitted, leaving only their terminations. There may be more than one "GEOB"
+frame in each tag, but only one with the same content descriptor.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'General encapsulated object', ID: "GEOB"&gt;</td></tr>
+<tr><td>Text encoding </td><td>$xx</td></tr>
+<tr><td>MIME type </td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>Filename</td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+<tr><td>Content description </td><td><text string according to encóding> $00 (00)</td></tr>
+<tr><td>Encapsulated object </td><td>&lt;binary data&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.17"> </a>
+<h3>4.17.Play counter</h3>
+<p class=t>
+This is simply a counter of the number of times a file has been
+played. The value is increased by one every time the file begins to
+play. There may only be one "PCNT" frame in each tag. When the
+counter reaches all one's, one byte is inserted in front of the
+counter thus making the counter eight bits bigger. The counter must
+be at least 32-bits long to begin with.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Play counter', ID: "PCNT"&gt;</td></tr>
+<tr><td>Counter </td><td>$xx xx xx xx (xx ...)</td></tr>
+</table></center></p>
+
+
+<a name="sec4.18"> </a>
+<h3>4.18.Popularimeter</h3>
+<p class=t>
+The purpose of this frame is to specify how good an audio file is.
+Many interesting applications could be found to this frame such as a
+playlist that features better audiofiles more often than others or it
+could be used to profile a person's taste and find other 'good' files
+by comparing people's profiles. The frame is very simple. It contains
+the email address to the user, one rating byte and a four byte play
+counter, intended to be increased with one for every time the file is
+played. The email is a terminated string. The rating is 1-255 where
+1 is worst and 255 is best. 0 is unknown. If no personal counter is
+wanted it may be omitted. When the counter reaches all one's, one
+byte is inserted in front of the counter thus making the counter
+eight bits bigger in the same away as the play counter ("PCNT").
+There may be more than one "POPM" frame in each tag, but only one
+with the same email address.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Popularimeter', ID: "POPM"&gt;</td></tr>
+<tr><td>Email to user</td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>Rating </td><td>$xx</td></tr>
+<tr><td>Counter</td><td>$xx xx xx xx (xx ...)</td></tr>
+</table></center></p>
+
+<a name="sec4.19"> </a>
+<h3>4.19.Recommended buffer size</h3>
+<p class=t>
+Sometimes the server from which a audio file is streamed is aware of
+transmission or coding problems resulting in interruptions in the
+audio stream. In these cases, the size of the buffer can be
+recommended by the server using this frame. If the 'embedded info
+flag' is true (1) then this indicates that an ID3 tag with the
+maximum size described in 'Buffer size' may occur in the audiostream.
+In such case the tag should reside between two <a href="#MPEG">MPEG</a> frames, if
+the audio is <a href="#MPEG">MPEG</a> encoded. If the position of the next tag is known,
+'offset to next tag' may be used. The offset is calculated from the
+end of tag in which this frame resides to the first byte of the
+header in the next. This field may be omitted. Embedded tags are
+generally not recommended since this could render unpredictable
+behaviour from present software/hardware.
+</p><p class=t>
+For applications like streaming audio it might be an idea to embed
+tags into the audio stream though. If the clients connects to
+individual connections like HTTP and there is a possibility to begin
+every transmission with a tag, then this tag should include a
+'recommended buffer size' frame. If the client is connected to a
+arbitrary point in the stream, such as radio or multicast, then the
+'recommended buffer size' frame should be included in every tag.
+Every tag that is picked up after the initial/first tag is to be
+considered as an update of the previous one. E.g. if there is a
+"<a href="#TIT2">TIT2</a>" frame in the first received tag and one in the second tag,
+then the first should be 'replaced' with the second.
+</p><p class=t>
+The 'Buffer size' should be kept to a minimum. There may only be one
+"RBUF" frame in each tag.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Recommended buffer size', ID: "RBUF"&gt;</td></tr>
+<tr><td>Buffer size</td><td>$xx xx xx</td></tr>
+<tr><td>Embedded info flag</td><td>%0000000x</td></tr>
+<tr><td>Offset to next tag</td><td>$xx xx xx xx</td></tr>
+</table></center></p>
+
+<a name="sec4.20"> </a>
+<h3>4.20.Audio encryption</h3>
+<p class=t>
+This frame indicates if the actual audio stream is encrypted, and by
+whom. Since standardisation of such encrypion scheme is beyond this
+document, all "AENC" frames begin with a terminated string with a
+URL containing an email address, or a link to a location where an
+email address can be found, that belongs to the organisation
+responsible for this specific encrypted audio file. Questions
+regarding the encrypted audio should be sent to the email address
+specified. If a $00 is found directly after the 'Frame size' and the
+audiofile indeed is encrypted, the whole file may be considered
+useless.
+</p><p class=t>
+After the 'Owner identifier', a pointer to an unencrypted part of the
+audio can be specified. The 'Preview start' and 'Preview length' is
+described in frames. If no part is unencrypted, these fields should
+be left zeroed. After the 'preview length' field follows optionally a
+datablock required for decryption of the audio. There may be more
+than one "AENC" frames in a tag, but only one with the same 'Owner
+identifier'.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Audio encryption', ID: "AENC"&gt;</td></tr>
+<tr><td>Owner identifier</td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>Preview start</td><td>$xx xx</td></tr>
+<tr><td>Preview length</td><td>$xx xx</td></tr>
+<tr><td>Encryption info</td><td>&lt;binary data&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.21"> </a>
+<h3>4.21.Linked information</h3>
+<p class=t>
+To keep space waste as low as possible this frame may be used to link
+information from another ID3v2 tag that might reside in another audio
+file or alone in a binary file. It is recommended that this method is
+only used when the files are stored on a CD-ROM or other
+circumstances when the risk of file seperation is low. The frame
+contains a frame identifier, which is the frame that should be linked
+into this tag, a <a href="#URL">URL</a> field, where a reference to the file where
+the frame is given, and additional ID data, if needed. Data should be
+retrieved from the first tag found in the file to which this link
+points. There may be more than one "LINK" frame in a tag, but only
+one with the same contents. A linked frame is to be considered as
+part of the tag and has the same restrictions as if it was a physical
+part of the tag (i.e. only one "RVRB" frame allowed, whether it's
+linked or not).
+</p><p><center><table border=0 width="70%">
+<tr><td>&lt;Header for 'Linked information', ID: "LINK"&gt;</td></tr>
+<tr><td>Frame identifier</td><td>$xx xx xx</td></tr>
+<tr><td>URL</td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>ID and additional data</td><td>&lt;text string(s)&gt;</td></tr>
+</table></center></p>
+<p class=t>
+Frames that may be linked and need no additional data are "IPLS",
+"MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the
+text information frames and the URL link frames.
+</p><p class=t>
+The "TXXX", "APIC", "GEOB" and "AENC" frames may be linked with
+the content descriptor as additional ID data.
+</p><p class=t>
+The "COMM", "SYLT" and "USLT" frames may be linked with three bytes
+of language descriptor directly followed by a content descriptor as
+additional ID data.
+</p>
+
+<a name="sec4.22"> </a>
+<h3>4.22.Position synchronisation frame</h3>
+<p class=t>
+This frame delivers information to the listener of how far into the
+audio stream he picked up; in effect, it states the time offset of
+the first frame in the stream. The frame layout is:
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Head for 'Position synchronisation', ID: "POSS"&gt;</td></tr>
+<tr><td>Time stamp format</td><td>$xx</td></tr>
+<tr><td>Position</td><td>$xx (xx ...)</td></tr>
+</table></center></p>
+<p class=t>
+Where time stamp format is:
+</p><p class=ind>
+$01 Absolute time, 32 bit sized, using <a href="#MPEG">MPEG</a> frames as unit<br>
+$02 Absolute time, 32 bit sized, using milliseconds as unit
+</p><p class=t>
+and position is where in the audio the listener starts to receive,
+i.e. the beginning of the next frame. If this frame is used in the
+beginning of a file the value is always 0. There may only be one
+"POSS" frame in each tag.
+</p>
+
+<a name="sec4.23"> </a>
+<h3>4.23.Terms of use frame</h3>
+<p class=t>
+This frame contains a brief description of the terms of use and
+ownership of the file. More detailed information concerning the legal
+terms might be available through the "WCOP" frame. Newlines are
+allowed in the text. There may only be one "USER" frame in a tag.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Terms of use frame', ID: "USER"&gt;</td></tr>
+<tr><td>Text encoding</td><td>$xx</td></tr>
+<tr><td>Language</td><td>$xx xx xx</td></tr>
+<tr><td>The actual text</td><td>&lt;text string according to encoding&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.24"> </a>
+<h3>4.24.Ownership frame</h3>
+<p class=t>
+The ownership frame might be used as a reminder of a made transaction
+or, if signed, as proof. Note that the "USER" and "TOWN" frames are
+good to use in conjunction with this one. The frame begins, after the
+frame ID, size and encoding fields, with a 'price payed' field. The
+first three characters of this field contains the currency used for
+the transaction, encoded according to <a href="#ISO-4217">ISO-4217</a> alphabetic
+currency code. Concatenated to this is the actual price payed, as a
+numerical string using "." as the decimal separator. Next is an 8
+character date string (YYYYMMDD) followed by a string with the name
+of the seller as the last field in the frame. There may only be one
+"OWNE" frame in a tag.
+</p><p><center><table border=0 width="70%">
+<tr><td>&lt;Header for 'Ownership frame', ID: "OWNE"&gt;</td></tr>
+<tr><td>Text encoding</td><td>$xx</td></tr>
+<tr><td>Price payed</td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>Date of purch.</td><td>&lt;text string&gt;</td></tr>
+<tr><td>Seller</td><td>&lt;text string according to encoding&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.25"> </a>
+<h3>4.25.Commercial frame</h3>
+<p class=t>
+This frame enables several competing offers in the same tag by
+bundling all needed information. That makes this frame rather complex
+but it's an easier solution than if one tries to achieve the same
+result with several frames. The frame begins, after the frame ID,
+size and encoding fields, with a price string field. A price is
+constructed by one three character currency code, encoded according
+to <a href="#ISO-4217">ISO-4217</a> alphabetic currency code, followed by a
+numerical value where "." is used as decimal seperator. In the price
+string several prices may be concatenated, seperated by a "/"
+character, but there may only be one currency of each type.
+</p><p class=t>
+The price string is followed by an 8 character date string in the
+format YYYYMMDD, describing for how long the price is valid. After
+that is a contact <a href="#URL">URL</a>, with which the user can contact the seller,
+followed by a one byte 'received as' field. It describes how the
+audio is delivered when bought according to the following list:
+</p><p><center><table border=0 width="70%">
+<tr><td>$00</td><td>Other</td></tr>
+<tr><td>$01</td><td>Standard CD album with other songs</td></tr>
+<tr><td>$02</td><td>Compressed audio on CD</td></tr>
+<tr><td>$03</td><td>File over the Internet</td></tr>
+<tr><td>$04</td><td>Stream over the Internet</td></tr>
+<tr><td>$05</td><td>As note sheets</td></tr>
+<tr><td>$06</td><td>As note sheets in a book with other sheets</td></tr>
+<tr><td>$07</td><td>Music on other media</td></tr>
+<tr><td>$08</td><td>Non-musical merchandise</td></tr>
+</table></center></p>
+<p class=t>
+Next follows a terminated string with the name of the seller followed
+by a terminated string with a short description of the product. The
+last thing is the ability to include a company logotype. The first of
+them is the 'Picture MIME type' field containing information about
+which picture format is used. In the event that the <a href="#MIME">MIME</a> media type
+name is omitted, "image/" will be implied. Currently only "<a href="#PNG">image/png</a>"
+and "<a href="#JFIF">image/jpeg</a>" are allowed. This format string is followed by the
+binary picture data. This two last fields may be omitted if no
+picture is to attach.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2> &lt;Header for 'Commercial frame', ID: "COMR"&gt;</td></tr>
+<tr><td>Text encoding</td><td>$xx</td></tr>
+<tr><td>Price string</td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>Valid until</td><td>&lt;text string&gt;</td></tr>
+<tr><td>Contact URL</td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>Received as</td><td>$xx</td></tr>
+<tr><td>Name of seller</td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+<tr><td>Description</td><td>&lt;text string according to encoding&gt; $00 (00)</td></tr>
+<tr><td>Picture MIME type</td><td>&lt;string&gt; $00</td></tr>
+<tr><td>Seller logo</td><td>&lt;binary data&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.26"> </a>
+<h3>4.26.Encryption method registration</h3>
+<p class=t>
+To identify with which method a frame has been encrypted the
+encryption method must be registered in the tag with this frame. The
+'Owner identifier' is a null-terminated string with a <a href="#URL">URL</a>
+containing an email address, or a link to a location where an email
+address can be found, that belongs to the organisation responsible
+for this specific encryption method. Questions regarding the
+encryption method should be sent to the indicated email address. The
+'Method symbol' contains a value that is associated with this method
+throughout the whole tag. Values below $80 are reserved. The 'Method
+symbol' may optionally be followed by encryption specific data. There
+may be several "ENCR" frames in a tag but only one containing the
+same symbol and only one containing the same owner identifier. The
+method must be used somewhere in the tag. See <a href="#sec3.3.1">section 3.3.1</a>, flag j
+for more information.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Encryption method registration', ID: "ENCR"&gt;</td></tr>
+<tr><td>Owner identifier</td><td width="80%">&lt;text string&gt; $00</td></tr>
+<tr><td>Method symbol</td><td>$xx</td></tr>
+<tr><td>Encryption data</td><td>&lt;binary data&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.27"> </a>
+<h3>4.27.Group identification registration</h3>
+<p class=t>
+This frame enables grouping of otherwise unrelated frames. This can
+be used when some frames are to be signed. To identify which frames
+belongs to a set of frames a group identifier must be registered in
+the tag with this frame. The 'Owner identifier' is a null-terminated
+string with a <a href="#URL">URL</a> containing an email address, or a link to a
+location where an email address can be found, that belongs to the
+organisation responsible for this grouping. Questions regarding the
+grouping should be sent to the indicated email address. The 'Group
+symbol' contains a value that associates the frame with this group
+throughout the whole tag. Values below $80 are reserved. The 'Group
+symbol' may optionally be followed by some group specific data, e.g.
+a digital signature. There may be several "GRID" frames in a tag but
+only one containing the same symbol and only one containing the same
+owner identifier. The group symbol must be used somewhere in the tag.
+See <a href="#sec3.3.1">section 3.3.1</a>, flag j for more information.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Group ID registration', ID: "GRID"&gt;</td></tr>
+<tr><td>Owner identifier</td><td>&lt;text string&gt; $00</td></tr>
+<tr><td>Group symbol</td><td width="80%">$xx</td></tr>
+<tr><td>Group dependent data</td><td>&lt;binary data&gt;</td></tr>
+</table></center></p>
+
+<a name="sec4.28"> </a>
+<h3>4.28.Private frame</h3>
+<p class=t>
+This frame is used to contain information from a software producer
+that its program uses and does not fit into the other frames. The
+frame consists of an 'Owner identifier' string and the binary data.
+The 'Owner identifier' is a null-terminated string with a <a href="#URL">URL</a>
+containing an email address, or a link to a location where an email
+address can be found, that belongs to the organisation responsible
+for the frame. Questions regarding the frame should be sent to the
+indicated email address. The tag may contain more than one "PRIV"
+frame but only with different contents. It is recommended to keep the
+number of "PRIV" frames as low as possible.
+</p><p><center><table border=0 width="70%">
+<tr><td colspan=2>&lt;Header for 'Private frame', ID: "PRIV"&gt;</td></tr>
+<tr><td>Owner identifier</td><td width="80%">&lt;text string&gt; $00</td></tr>
+<tr><td>The private data</td><td>&lt;binary data&gt;</td></tr>
+</table></center></p>
+
+<a name="sec5"> </a>
+<h3>5.The 'unsynchronisation scheme'</h3>
+<p class=t>
+The only purpose of the 'unsynchronisation scheme' is to make the
+ID3v2 tag as compatible as possible with existing software. There is
+no use in 'unsynchronising' tags if the file is only to be processed
+by new software. Unsynchronisation may only be made with MPEG 2 layer
+I, II and III and MPEG 2.5 files.
+</p><p class=t>
+Whenever a false synchronisation is found within the tag, one zeroed
+byte is inserted after the first false synchronisation byte. The
+format of a correct sync that should be altered by ID3 encoders is as
+follows:
+</p><p class=ind>
+%11111111 111xxxxx
+</p><p class=t>
+And should be replaced with:
+</p><p class=ind>
+%11111111 00000000 111xxxxx
+</p><p class=t>
+This has the side effect that all $FF 00 combinations have to be
+altered, so they won't be affected by the decoding process. Therefore
+all the $FF 00 combinations have to be replaced with the $FF 00 00
+combination during the unsynchronisation.
+</p><p class=t>
+To indicate usage of the unsynchronisation, the first bit in 'ID3
+flags' should be set. This bit should only be set if the tag
+contains a, now corrected, false synchronisation. The bit should
+only be clear if the tag does not contain any false synchronisations.
+</p><p class=t>
+Do bear in mind, that if a compression scheme is used by the encoder,
+the unsynchronisation scheme should be applied *afterwards*. When
+decoding a compressed, 'unsynchronised' file, the 'unsynchronisation
+scheme' should be parsed first, decompression afterwards.
+</p><p class=t>
+If the last byte in the tag is $FF, and there is a need to eliminate
+false synchronisations in the tag, at least one byte of padding
+should be added.
+</p>
+
+<a name="sec6"> </a>
+<h3>6.Copyright</h3>
+<p class=t>
+Copyright &copy; Martin Nilsson 1998. All Rights Reserved.
+</p><p class=t>
+This document and translations of it may be copied and furnished to
+others, and derivative works that comment on or otherwise explain it
+or assist in its implementation may be prepared, copied, published
+and distributed, in whole or in part, without restriction of any
+kind, provided that a reference to this document is included on all
+such copies and derivative works. However, this document itself may
+not be modified in any way and reissued as the original document.
+</p><p class=t>
+The limited permissions granted above are perpetual and will not be revoked.
+</p><p class=t>
+This document and the information contained herein is provided on an
+"AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
+THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+</p>
+
+
+<a name="sec7"> </a>
+<h3>7.References</h3>
+
+<a name="CDDB"> </a>
+<p class=t>[CDDB] Compact Disc Data Base</p>
+<p class=ind>&lt;url:<a href="http://www.cddb.com">http://www.cddb.com</a>&gt;</p>
+
+<a name="ID3v2"> </a>
+<p class=t>[ID3v2] Martin Nilsson, "ID3v2 informal standard".</p>
+<p class=ind>&lt;url:<a href="http://www.id3.org/id3v2-00.txt">http://www.id3.org/id3v2-00.txt</a>&gt;</p>
+
+<a name="ISO-639-2"> </a>
+<p class=t>[ISO-639-2] ISO/FDIS 639-2.<br>
+Codes for the representation of names of languages, Part 2: Alpha-3 code. Technical committee / subcommittee: TC 37 / SC 2</p>
+
+<a name="ISO-4217"> </a>
+<p class=t>[ISO-4217] ISO 4217:1995.<br>
+Codes for the representation of currencies and funds. Technical committee / subcommittee: TC 68</p>
+
+<a name="ISO-8859-1"> </a>
+<p class=t>[ISO-8859-1] ISO/IEC DIS 8859-1.<br>
+8-bit single-byte coded graphic character sets, Part 1: Latin alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2</p>
+
+<a name="ISRC"> </a>
+<p class=t>[ISRC] ISO 3901:1986<br>
+International Standard Recording Code (ISRC). Technical committee / subcommittee: TC 46 / SC 9</p>
+
+<a name="JFIF"> </a>
+<p class=t>[JFIF] JPEG File Interchange Format, version 1.02</p>
+<p class=ind>&lt;url:<a href="http://www.w3.org/Graphics/JPEG/jfif.txt">http://www.w3.org/Graphics/JPEG/jfif.txt</a>&gt;</p>
+
+<a name="MIME"> </a>
+<p class=t>[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.</p>
+<p class=ind>&lt;url:<a href="ftp://ftp.isi.edu/in-notes/rfc2045.txt">ftp://ftp.isi.edu/in-notes/rfc2045.txt</a>&gt;</p>
+
+<a name="MPEG"> </a>
+<p class=t>[MPEG] ISO/IEC 11172-3:1993.<br>
+Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s, Part 3: Audio. Technical committee / subcommittee: JTC 1 / SC 29<br>
+&nbsp;and<br>
+ISO/IEC 13818-3:1995<br>
+Generic coding of moving pictures and associated audio information, Part 3: Audio. Technical committee / subcommittee: JTC 1 / SC 29<br>
+&nbsp;and<br>
+ISO/IEC DIS 13818-3<br>
+Generic coding of moving pictures and associated audio information, Part 3: Audio (Revision of ISO/IEC 13818-3:1995)</p>
+
+<a name="PNG"> </a>
+<p class=t>[PNG] Portable Network Graphics, version 1.0</p>
+<p class=ind>&lt;url:<a href="http://www.w3.org/TR/REC-png-multi.html">http://www.w3.org/TR/REC-png-multi.html</a>&gt;</p>
+
+<a name="UNICODE"> </a>
+<p class=t>[UNICODE] ISO/IEC 10646-1:1993.<br>
+Universal Multiple-Octet Coded Character Set (UCS), Part 1: Architecture and Basic Multilingual Plane. Technical committee / subcommittee: JTC 1 / SC 2</p>
+<p class=ind>&lt;url:<a href="http://www.unicode.org">http://www.unicode.org</a>&gt;</p>
+
+<a name="URL"> </a>
+<p class=t>[URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource Locators (URL).", RFC 1738, December 1994.</p>
+<p class=ind>&lt;url:<a href="ftp://ftp.isi.edu/in-notes/rfc1738.txt">ftp://ftp.isi.edu/in-notes/rfc1738.txt</a>&gt;</p>
+
+<a name="ZLIB"> </a>
+<p class=t>[ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB Compressed Data Format Specification version 3.3", RFC 1950, May 1996.</p>
+<p class=ind>&lt;url:<a href="ftp://ftp.isi.edu/in-notes/rfc1950.txt">ftp://ftp.isi.edu/in-notes/rfc1950.txt</a>&gt;</p>
+
+
+<a name="sec8"> </a>
+<h3>8.Appendix</h3>
+
+<a name="secA"> </a>
+<h3>A.Appendix A - Genre List from ID3v1</h3>
+<center><table border=0 width="70%"><tr valign=top><td>
+The following genres is defined in ID3v1
+<pre>
+ 0.Blues
+ 1.Classic Rock
+ 2.Country
+ 3.Dance
+ 4.Disco
+ 5.Funk
+ 6.Grunge
+ 7.Hip-Hop
+ 8.Jazz
+ 9.Metal
+ 10.New Age
+ 11.Oldies
+ 12.Other
+ 13.Pop
+ 14.R&B
+ 15.Rap
+ 16.Reggae
+ 17.Rock
+ 18.Techno
+ 19.Industrial
+ 20.Alternative
+ 21.Ska
+ 22.Death Metal
+ 23.Pranks
+ 24.Soundtrack
+ 25.Euro-Techno
+ 26.Ambient
+ 27.Trip-Hop
+ 28.Vocal
+ 29.Jazz+Funk
+ 30.Fusion
+ 31.Trance
+ 32.Classical
+ 33.Instrumental
+ 34.Acid
+ 35.House
+ 36.Game
+ 37.Sound Clip
+ 38.Gospel
+ 39.Noise
+ 40.AlternRock
+ 41.Bass
+ 42.Soul
+ 43.Punk
+ 44.Space
+ 45.Meditative
+ 46.Instrumental Pop
+ 47.Instrumental Rock
+ 48.Ethnic
+ 49.Gothic
+ 50.Darkwave
+ 51.Techno-Industrial
+ 52.Electronic
+ 53.Pop-Folk
+ 54.Eurodance
+ 55.Dream
+ 56.Southern Rock
+ 57.Comedy
+ 58.Cult
+ 59.Gangsta
+ 60.Top 40
+ 61.Christian Rap
+ 62.Pop/Funk
+ 63.Jungle
+ 64.Native American
+ 65.Cabaret
+ 66.New Wave
+ 67.Psychadelic
+ 68.Rave
+ 69.Showtunes
+ 70.Trailer
+ 71.Lo-Fi
+ 72.Tribal
+ 73.Acid Punk
+ 74.Acid Jazz
+ 75.Polka
+ 76.Retro
+ 77.Musical
+ 78.Rock & Roll
+ 79.Hard Rock
+</pre>
+</td><td>
+The following genres are Winamp extensions
+<pre>
+ 80.Folk
+ 81.Folk-Rock
+ 82.National Folk
+ 83.Swing
+ 84.Fast Fusion
+ 85.Bebob
+ 86.Latin
+ 87.Revival
+ 88.Celtic
+ 89.Bluegrass
+ 90.Avantgarde
+ 91.Gothic Rock
+ 92.Progressive Rock
+ 93.Psychedelic Rock
+ 94.Symphonic Rock
+ 95.Slow Rock
+ 96.Big Band
+ 97.Chorus
+ 98.Easy Listening
+ 99.Acoustic
+100.Humour
+101.Speech
+102.Chanson
+103.Opera
+104.Chamber Music
+105.Sonata
+106.Symphony
+107.Booty Bass
+108.Primus
+109.Porn Groove
+110.Satire
+111.Slow Jam
+112.Club
+113.Tango
+114.Samba
+115.Folklore
+116.Ballad
+117.Power Ballad
+118.Rhythmic Soul
+119.Freestyle
+120.Duet
+121.Punk Rock
+122.Drum Solo
+123.A capella
+124.Euro-House
+125.Dance Hall
+</pre></td></tr></table></center>
+
+<a name="sec9"> </a>
+<h3>9.Author's Address</h3>
+<p class=t>
+Written by
+</p><p class=ind>
+Martin Nilsson<br>
+Rydsvägen 246 C. 30<br>
+S-584 34 Linköping<br>
+Sweden<br>
+</p><p class=ind>
+Email: <a href="mailto:nilsson@id3.org">nilsson@id3.org</a>
+</p>
+
+<p class=t>
+Edited by
+</p><p class=ind>
+Dirk Mahoney<br>
+57 Pechey Street<br>
+Chermside Q<br>
+Australia 4032<br>
+</p><p class=ind>
+Email: <a href="mailto:dirk@id3.org">dirk@id3.org</a>
+</p>
+<p class=ind>
+Johan Sundström<br>
+Alsättersgatan 5 A. 34<br>
+S-584 35 Linköping<br>
+Sweden<br>
+</p><p class=ind>
+Email: <a href="mailto:johan@id3.org">johan@id3.org</a>
+</p>
+
+</body></html> \ No newline at end of file
diff --git a/doc/id3/id3v2_blocks.gif b/doc/id3/id3v2_blocks.gif
new file mode 100755
index 0000000..153027e
--- /dev/null
+++ b/doc/id3/id3v2_blocks.gif
Binary files differ
diff --git a/doc/id3/mpeghdr-19991222.htm b/doc/id3/mpeghdr-19991222.htm
new file mode 100755
index 0000000..b690c98
--- /dev/null
+++ b/doc/id3/mpeghdr-19991222.htm
@@ -0,0 +1,769 @@
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="AUTHOR" CONTENT="Predrag Supurovic, broker@dv.co.yu">
+<META NAME="KEYWORDS" CONTENT="mpeg, mp3, header, coding, programming,
+structure, frame, audio, music, file, format, layer I, layer II, layer III, layer 1, layer 2, layer 3, ISO/IEC 11172-3, ISO/IEC 13818-3">
+<META NAME="GENERATOR" CONTENT="handmade">
+<TITLE>MPEG AUDIO FRAME HEADER</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#FFFFFF">
+
+<P>This is a brief and informal document targeted to those who want to deal
+with the MPEG format. If you are one of them, you probably already know what
+is MPEG audio. If not, jump to <A
+HREF="http://www.mp3.com/">http://www.mp3.com/</A> or <A
+HREF="http://www.layer3.org/">http://www.layer3.org/</A> where you will find
+more details and also more links. This document does not cover compression and
+decompression algorithm.
+
+<P>NOTE: You cannot just search the Internet and find the MPEG audio specs. It
+is copyrighted and you will have to pay quite a bit to get the Paper. That's why
+I made this. Information I got is gathered from the Internet, and mostly originate
+from program sources I found available for free. Despite my intention to always
+specify the information sources, I am not able to do it this time. Sorry, I did
+not maintain the list. :-(
+<P><B>These are not a decoding specs, it just informs you how to read the </B><A
+HREF="#MPEG HEADER"><B>MPEG headers</B></A><B> and the </B> <A HREF="#MPEGTAG"
+TARGET=""><B>MPEG TAG</B></A><B>. MPEG Version 1, 2 and 2.5 and Layer I, II
+and III are supported, the MP3 TAG (ID3v1 and ID3v1.1) also.</B>. Those of you
+who use Delphi may find <A
+HREF="http://www.dv.co.yu/mpgscript/mpgtools.htm">MPGTools Delphi unit (freeware source)</A>
+useful, it is where I implemented this stuff.
+
+<P>I do not claim information presented in this document is accurate. At first
+I just gathered it from different sources. It was not an easy task but I needed
+it. Later, I received lots of comments as feedback when I published this document.
+I think this last release is highly accurate due to comments and corrections I
+received.
+<P>This document is last updated on December 22, 1999.
+<P ALIGN="center"><FONT SIZE="5"><B>MPEG Audio Compression Basics</B></FONT>
+
+<P>This is one of many methods to compress audio in digital form trying to consume
+as little space as possible but keep audio quality as good as possible. MPEG compression
+showed up as one of the best achievements in this area.
+<P>This is a lossy compression, which means, you will certainly loose some audio
+information when you use this compression methods. But, this lost can hardly be
+noticed because the compression method tries to control it. By using several quite
+complicate and demanding mathematical algorithms it will only loose those parts
+of sound that are hard to be heard even in the original form. This leaves more
+space for information that is important. This way you can compress audio up to
+12 times (you may choose compression ratio) which is really significant. Due to
+its quality MPEG audio became very popular.
+<P>MPEG standards MPEG-1, MPEG-2 and MPEG-4 are known but this document covers
+first two of them. There is an unofficial MPEG-2.5 which is rarely used. It is
+also covered.
+<P><B>MPEG-1 audio</B> (described in ISO/IEC 11172-3) describes three Layers of audio coding with the following properties:
+<LI>one or two audio channels
+<LI>sample rate 32kHz, 44.1kHz or 48kHz.
+<LI>bit rates from 32kbps up to 448kbps<BR>
+Each layer has its merits.
+
+<P><B>MPEG-2 audio</B> (described in ISO/IEC 13818-3) has two extensions to MPEG-1, usually referred as MPEG-2/LSF and MPEG-2/Multichannel.
+<P>MPEG-2/LSF has the following properties:
+<LI>one or two audio channels
+<LI>sample rates half those of MPEG-1
+<LI>bit rates from 8 kbps up to 256kbps.
+
+<P>MPEG-2/Multichannel has the following properties:
+<LI>up to 5 full range audio channels and an LFE-channel (Low Frequency
+Enhancement <> subwoofer!)
+<LI>sample rates the same as those of MPEG-1
+<LI>highest possible bitrate goes up to about 1Mbps for 5.1
+
+
+<P ALIGN="center"><A NAME="MPEG HEADER"></A><FONT SIZE="5"><B>MPEG Audio Frame
+Header</B></FONT>
+
+<P>An MPEG audio file is built up from smaller parts called frames. Generally,
+frames are independent items. Each frame has its own header and audio informations.
+There is no file header. Therefore, you can cut any part of MPEG file and play
+it correctly (this should be done on frame boundaries but most applications will
+handle incorrect headers). For Layer III, this is not 100% correct. Due to internal
+data organization in MPEG version 1 Layer III files, frames are often dependent
+of each other and they cannot be cut off just like that.
+<P>When you want to read info about an MPEG file, it is usually enough to find
+the first frame, read its header and assume that the other frames are the same
+This may not be always the case. Variable bitrate MPEG files may use so called
+bitrate switching, which means that bitrate changes according to the content of
+each frame. This way lower bitrates may be used in frames where it will not reduce
+sound quality. This allows making better compression while keeping high quality
+of sound.
+<P>The frame header is constituted by the very first four bytes (32bits) in a
+frame. The first eleven bits (or first twelve bits, see below about frame sync)
+of a frame header are always set and they are called &quot;frame sync&quot;. Therefore,
+you can search through the file for the first occurence of frame sync (meaning
+that you have to find a byte with a value of 255, and followed by a byte with
+its three (or four) most significant bits set). Then you read the whole header
+and check if the values are correct. You will see in the following table the exact
+meaning of each bit in the header, and which values may be checked for validity.
+Each value that is specified as reserved, invalid, bad, or not allowed should
+indicate an invalid header. Remember, this is not enough, frame sync can be easily
+(and very frequently) found in any binary file. Also it is likely that MPEG file
+contains garbage on it's beginning which also may contain false sync. Thus, you
+have to check two or more frames in a row to assure you are really dealing with
+MPEG audio file.
+<P>Frames may have a CRC check. The CRC is 16 bits long
+and, if it exists, it follows the frame header. After the CRC comes the audio
+data. You may calculate the length of the frame and use it if you need to read
+other headers too or just want to calculate the CRC of the frame, to compare
+it with the one you read from the file. This is actually a very good method to
+check the MPEG header validity.
+
+<P>Here is &quot;graphical&quot; presentation of the header content. Characters
+from A to M are used to indicate different fields. In the table, you can see
+details about the content of each field.
+<P ALIGN="center">
+<B><TT><FONT SIZE="5">
+AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
+</FONT>
+</TT></B>
+
+<P><CENTER>
+
+<TABLE BORDER="0" CELLSPACING=7>
+<TR VALIGN=TOP BGCOLOR="#E2E2E2">
+<TD>Sign</TD><TD>Length<BR>(bits)</TD><TD>Position<BR>(bits)</TD><TD>Description</TD>
+</TR>
+
+<TR VALIGN=TOP>
+<TD>A</TD><TD>11</TD><TD>(31-21)</TD><TD>Frame sync (all bits set)</TD>
+</TR>
+
+<TR VALIGN=TOP>
+<TD>B</TD><TD>2</TD><TD>(20,19)</TD><TD>MPEG Audio version ID<BR>
+00 - MPEG Version 2.5<BR>01 - reserved<BR>10 - MPEG Version 2 (ISO/IEC 13818-3)<BR>11 - MPEG Version 1 (ISO/IEC 11172-3)
+<P>Note: MPEG Version 2.5 is not official standard. Bit No 20 in frame header
+is used to indicate version 2.5. Applications that do not support this MPEG version
+expect this bit always to be set, meaning that frame sync (A) is twelve bits long,
+not eleve as stated here. Accordingly, B is one bit long (represents only bit
+No 19). I recommend using methodology presented here, since this allows you to
+distinguish all three versions and keep full compatibility.
+</TD>
+</TR>
+
+<TR VALIGN=TOP><TD>C</TD><TD>2</TD><TD>(18,17)</TD>
+<TD>Layer description<BR>
+00 - reserved<BR>
+01 - Layer III<BR>
+10 - Layer II<BR>
+11 - Layer I</TD>
+</TR>
+
+<TR VALIGN=TOP>
+<TD>D</TD><TD>1</TD><TD>(16)</TD>
+<TD>Protection bit<BR>
+0 - Protected by CRC (16bit crc follows header)<BR>
+1 - Not protected</TD>
+</TR>
+<TR VALIGN=TOP><TD>E</TD><TD>4</TD><TD>(15,12)</TD><TD>Bitrate index<BR>
+<TABLE BORDER="1" CELLSPACING="0" CELLPADING="0">
+<TR><TD>bits</TD><TD>V1,L1</TD><TD>V1,L2</TD><TD>V1,L3</TD><TD>V2,L1</TD><TD>V2, L2 &amp; L3</TD></TR>
+<TR><TD>0000</TD><TD>free</TD><TD>free</TD><TD>free</TD><TD>free</TD><TD>free</TD></TR>
+<TR><TD>0001</TD><TD>32</TD><TD>32</TD><TD>32</TD><TD>32</TD><TD>8</TD></TR>
+<TR><TD>0010</TD><TD>64</TD><TD>48</TD><TD>40</TD><TD>48</TD><TD>16</TD></TR>
+<TR><TD>0011</TD><TD>96</TD><TD>56</TD><TD>48</TD><TD>56</TD><TD>24</TD></TR>
+<TR><TD>0100</TD><TD>128</TD><TD>64</TD><TD>56</TD><TD>64</TD><TD>32</TD></TR>
+<TR><TD>0101</TD><TD>160</TD><TD>80</TD><TD>64</TD><TD>80</TD><TD>40</TD></TR>
+<TR><TD>0110</TD><TD>192</TD><TD>96</TD><TD>80</TD><TD>96</TD><TD>48</TD></TR>
+<TR><TD>0111</TD><TD>224</TD><TD>112</TD><TD>96</TD><TD>112</TD><TD>56</TD></TR>
+<TR><TD>1000</TD><TD>256</TD><TD>128</TD><TD>112</TD><TD>128</TD><TD>64</TD></TR>
+<TR><TD>1001</TD><TD>288</TD><TD>160</TD><TD>128</TD><TD>144</TD><TD>80</TD></TR>
+<TR><TD>1010</TD><TD>320</TD><TD>192</TD><TD>160</TD><TD>160</TD><TD>96</TD></TR>
+<TR><TD>1011</TD><TD>352</TD><TD>224</TD><TD>192</TD><TD>176</TD><TD>112</TD></TR>
+<TR><TD>1100</TD><TD>384</TD><TD>256</TD><TD>224</TD><TD>192</TD><TD>128</TD></TR>
+<TR><TD>1101</TD><TD>416</TD><TD>320</TD><TD>256</TD><TD>224</TD><TD>144</TD></TR>
+<TR><TD>1110</TD><TD>448</TD><TD>384</TD><TD>320</TD><TD>256</TD><TD>160</TD></TR>
+<TR><TD>1111</TD><TD>bad</TD><TD>bad</TD><TD>bad</TD><TD>bad</TD><TD>bad</TD></TR>
+</TABLE>
+<P>
+NOTES: All values are in kbps<BR>
+V1 - MPEG Version 1<BR>
+V2 - MPEG Version 2 and Version 2.5<BR>
+L1 - Layer I<BR>
+L2 - Layer II<BR>
+L3 - Layer III<BR>
+&quot;free&quot; means free format. If the correct fixed bitrate (such files cannot
+use variable bitrate) is different than those presented in upper table it must
+be determined by the application. This may be implemented only for internal purposes
+since third party applications have no means to find out correct bitrate. Howewer,
+this is not impossible to do but demands lot's of efforts.<BR>
+&quot;bad&quot; means that this is not an allowed value
+
+<P>MPEG files may have variable bitrate (VBR). This means that bitrate in the file may change. I have learned about two used methods:
+<LI>bitrate switching. Each frame may be created with different bitrate. It may be used in all layers. Layer III decoders must support this method. Layer I & II decoders may support it.
+<LI>bit reservoir. Bitrate may be borrowed (within limits) from previous frames
+in order to provide more bits to demanding parts of the input signal. This causes,
+however, that the frames are no longer independent, which means you should not
+cut this files. This is supported only in Layer III.
+<P>More about VBR you may find on <A HREF="http://www.xingtech.com/">Xing Tech
+site</A>
+<P>For Layer II there are some combinations of bitrate and mode which are not
+allowed. Here is a list of allowed combinations.
+<TABLE BORDER=1 CELLSPACING=0>
+<TR>
+<TD>bitrate</TD>
+<TD>allowed modes</TD>
+</TR>
+<TR>
+<TD>free</TD>
+<TD>all</TD>
+</TR>
+<TR>
+<TD>32</TD>
+<TD>single channel</TD>
+</TR>
+<TR>
+<TD>48</TD>
+<TD>single channel</TD>
+</TR>
+<TR>
+<TD>56</TD>
+<TD>single channel</TD>
+</TR>
+<TR>
+<TD>64</TD>
+<TD>all</TD>
+</TR>
+<TR>
+<TD>80</TD>
+<TD>single channel</TD>
+</TR>
+<TR>
+<TD>96</TD>
+<TD>all</TD>
+</TR>
+<TR>
+<TD>112</TD>
+<TD>all</TD>
+</TR>
+<TR>
+<TD>128</TD>
+<TD>all</TD>
+</TR>
+<TR>
+<TD>160</TD>
+<TD>all</TD>
+</TR>
+<TR>
+<TD>192</TD>
+<TD>all</TD>
+</TR>
+<TR>
+<TD>224</TD>
+<TD>stereo, intensity stereo, dual channel</TD>
+</TR>
+<TR>
+<TD>256</TD>
+<TD>stereo, intensity stereo, dual channel</TD>
+</TR>
+<TR>
+<TD>320</TD>
+<TD>stereo, intensity stereo, dual channel</TD>
+</TR>
+<TR>
+<TD>384</TD>
+<TD>stereo, intensity stereo, dual channel</TD>
+</TR>
+</TABLE>
+</TD></TR>
+<TR VALIGN=TOP>
+<TD>F</TD><TD>2</TD><TD>(11,10)</TD>
+<TD>Sampling rate frequency index (values are in Hz)
+<TABLE BORDER="1" CELLSPACING="0" CELLPADING="0">
+<TR><TD>bits</TD><TD>MPEG1</TD><TD>MPEG2</TD><TD>MPEG2.5</TD></TR>
+<TR><TD>00</TD><TD>44100</TD><TD>22050</TD><TD>11025</TD></TR>
+<TR><TD>01</TD><TD>48000</TD><TD>24000</TD><TD>12000</TD></TR>
+<TR><TD>10</TD><TD>32000</TD><TD>16000</TD><TD>8000</TD></TR>
+<TR><TD>11</TD><TD>reserv.</TD><TD>reserv.</TD><TD>reserv.</TD></TR>
+</TABLE>
+</TD></TR>
+
+<TR VALIGN=TOP>
+<TD>G</TD><TD>1</TD><TD>(9)</TD>
+<TD>Padding bit<BR>
+0 - frame is not padded<BR>
+1 - frame is padded with one extra slot<BR>
+
+Padding is used to fit the bit rates exactly. For an example: 128k 44.1kHz layer II uses a lot of 418 bytes and some of 417 bytes long frames to get the exact 128k bitrate. For Layer I slot is 32 bits long, for Layer II and Layer III slot is 8 bits long.
+
+
+
+<P><B>How to calculate frame length</B>
+
+<P>First, let's distinguish two terms frame size and frame length. Frame size
+is the number of samples contained in a frame. It is constant and always 384 samples
+for Layer I and 1152 samples for Layer II and Layer III. Frame length is length
+of a frame when compressed. It is calculated in slots. One slot is 4 bytes long
+for Layer I, and one byte long for Layer II and Layer III. When you are reading
+MPEG file you must calculate this to be able to find each consecutive frame. Remember,
+frame length may change from frame to frame due to padding or bitrate switching.
+<P>Read the BitRate, SampleRate and Padding of the frame header.
+<P>For Layer I files us this formula:
+<P ALIGN=CENTER>FrameLengthInBytes = (12 * BitRate / SampleRate + Padding) * 4
+<P ALIGN=LEFT>For Layer II & III files use this formula:
+<P ALIGN=CENTER>FrameLengthInBytes = 144 * BitRate / SampleRate + Padding
+<P>Example:<BR>
+Layer III, BitRate=128000, SampleRate=441000, Padding=0<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ==&gt;&nbsp; FrameSize=417 bytes
+</TD></TR>
+
+<TR VALIGN=TOP><TD>H</TD><TD>1</TD><TD>(8)</TD>
+<TD>Private bit. It may be freely used for specific needs of an application, i.e. if it has to trigger some application specific events.</TD>
+</TR>
+
+<TR VALIGN=TOP><TD>I</TD><TD>2</TD><TD>(7,6)</TD>
+<TD>Channel Mode<BR>
+00 - Stereo<BR>
+01 - Joint stereo (Stereo)<BR>
+10 - Dual channel (Stereo)<BR>
+11 - Single channel (Mono)</TD>
+</TR>
+
+<TR VALIGN=TOP><TD>J</TD><TD>2</TD><TD>(5,4)</TD>
+<TD>Mode extension (Only if Joint stereo)
+<P>Mode extension is used to join informations that are of no use for stereo effect, thus reducing needed resources. These bits are dynamically determined by an encoder in Joint stereo mode.
+
+<P>Complete frequency range of MPEG file is divided in subbands There are 32 subbands. For Layer I & II these two bits determine frequency range (bands) where intensity stereo is applied. For Layer III these two bits determine which type of joint stereo
+
+is used (intensity stereo or m/s stereo). Frequency range is determined within decompression algorythm.
+
+<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="0">
+<TR><TD ALIGN=CENTER>Layer I and II</TD><TD ALIGN=CENTER>Layer III</TD></TR>
+<TR VALIGN=TOP><TD>
+<TABLE BORDER="1" CELLSPACING="0" CELLPADING="0">
+<TR><TD>value</TD><TD>Layer I &amp; II</TD></TR>
+<TR><TD>00</TD><TD>bands 4 to 31</TD></TR>
+<TR><TD>01</TD><TD>bands 8 to 31</TD></TR>
+<TR><TD>10</TD><TD>bands 12 to 31</TD></TR>
+<TR><TD>11</TD><TD>bands 16 to 31</TD></TR></TABLE>
+</TD>
+
+<TD>
+<TABLE BORDER="1" CELLSPACING="0" CELLPADING="0" WIDTH="212">
+<TR ALIGN=CENTER><TD>Intensity stereo</TD><TD>MS stereo</TD></TR>
+<TR ALIGN=CENTER><TD>off</TD><TD>off</TD></TR>
+<TR ALIGN=CENTER><TD>on</TD><TD>off</TD></TR>
+<TR ALIGN=CENTER><TD>off</TD><TD>on</TD></TR>
+<TR ALIGN=CENTER><TD>on</TD><TD>on</TD></TR></TABLE>
+</TD></TR></TABLE>
+</TD></TR>
+
+<TR VALIGN=TOP><TD>K</TD><TD>1</TD><TD>(3)</TD>
+<TD>Copyright<BR>
+0 - Audio is not copyrighted<BR>
+1 - Audio is copyrighted</TD>
+</TR>
+
+<TR VALIGN=TOP><TD>L</TD><TD>1</TD><TD>(2)</TD>
+<TD>Original<BR>
+0 - Copy of original media<BR>
+1 - Original media</TD>
+</TR>
+
+<TR VALIGN=TOP>
+<TD>M</TD><TD>2</TD><TD>(1,0)</TD>
+<TD>Emphasis<BR>
+00 - none<BR>
+01 - 50/15 ms<BR>
+10 - reserved<BR>
+11 - CCIT J.17</TD>
+</TR></TABLE>
+<P>&nbsp;</P></CENTER>
+
+<P ALIGN="center"><A NAME="MPEGTAG"></A><FONT SIZE="5"><B>MPEG Audio Tag ID3v1</B></FONT>
+<P>The TAG is used to describe the MPEG Audio file. It contains information
+about artist, title, album, publishing year and genre. There is some extra
+space for comments. It is exactly 128 bytes long and is located at very end of
+the audio data. You can get it by reading the last 128 bytes of the MPEG audio
+file.
+
+<P ALIGN="center"><FONT SIZE="5"><B><TT>
+AAABBBBB BBBBBBBB BBBBBBBB BBBBBBBB<BR>
+BCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCD<BR>
+DDDDDDDD DDDDDDDD DDDDDDDD DDDDDEEE<BR>
+EFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFG<BR>
+</TT></B></FONT>
+
+<CENTER>
+
+<TABLE BORDER="0" WIDTH="500">
+<TR VALIGN=TOP BGCOLOR=#E2E2E2>
+<TD>Sign</TD><TD>Length<BR>(bytes)</TD><TD>Position<BR>
+(bytes)</TD><TD>Description</TD></TR>
+<TR VALIGN=TOP><TD>A</TD><TD>3</TD><TD>(0-2)</TD>
+<TD>Tag identification. Must contain 'TAG' if tag exists and is
+correct.</TD>
+</TR>
+<TR><TD>B</TD><TD>30</TD><TD>(3-32)</TD><TD>Title</TD></TR>
+<TR><TD>C</TD><TD>30</TD><TD>(33-62)</TD><TD>Artist</TD></TR>
+<TR><TD>D</TD><TD>30</TD><TD>(63-92)</TD><TD>Album</TD></TR>
+<TR><TD>E</TD><TD>4</TD><TD>(93-96)</TD><TD>Year</TD></TR>
+<TR><TD>F</TD><TD>30</TD><TD>(97-126)</TD><TD>Comment</TD></TR>
+<TR><TD>G</TD><TD>1</TD><TD>(127)</TD><TD>Genre</TD></TR></TABLE>
+</CENTER>
+
+<P>The specification asks for all fields to be padded with null character
+(ASCII 0). However, not all applications respect this (an example is WinAmp
+which pads fields with &lt;space&gt;, ASCII 32).
+
+<P>There is a small change proposed in <B>ID3v1.1</B> structure. The last byte
+of the Comment field may be used to specify the track number of a song in an
+album. It should contain a null character (ASCII 0) if the information is
+unknown.
+
+<P>Genre is a numeric field which may have one of the following values:
+
+<CENTER>
+<TABLE BORDER="0" WIDTH="90%">
+<TR>
+<TD WIDTH="1%">0</TD>
+<TD WIDTH="20%">'Blues'</TD>
+<TD WIDTH="1%">20</TD>
+<TD WIDTH="20%">'Alternative'</TD>
+<TD WIDTH="1%">40</TD>
+<TD WIDTH="20%">'AlternRock'</TD>
+<TD WIDTH="1%">60</TD>
+<TD WIDTH="20%">'Top 40'</TD>
+</TR>
+<TR>
+<TD>1</TD>
+<TD>'Classic Rock'</TD>
+<TD>21</TD>
+<TD>'Ska'</TD>
+<TD>41</TD>
+<TD>'Bass'</TD>
+<TD>61</TD>
+<TD>'Christian Rap'</TD>
+</TR>
+<TR>
+<TD>2</TD>
+<TD>'Country'</TD>
+<TD>22</TD>
+<TD>'Death Metal'</TD>
+<TD>42</TD>
+<TD>'Soul'</TD>
+<TD>62</TD>
+<TD>'Pop/Funk'</TD>
+</TR>
+<TR>
+<TD>3</TD>
+<TD>'Dance'</TD>
+<TD>23</TD>
+<TD>'Pranks'</TD>
+<TD>43</TD>
+<TD>'Punk'</TD>
+<TD>63</TD>
+<TD>'Jungle'</TD>
+</TR>
+<TR>
+<TD>4</TD>
+<TD>'Disco'</TD>
+<TD>24</TD>
+<TD>'Soundtrack'</TD>
+<TD>44</TD>
+<TD>'Space'</TD>
+<TD>64</TD>
+<TD>'Native American'</TD>
+</TR>
+<TR>
+<TD>5</TD>
+<TD>'Funk'</TD>
+<TD>25</TD>
+<TD>'Euro-Techno'</TD>
+<TD>45</TD>
+<TD>'Meditative'</TD>
+<TD>65</TD>
+<TD>'Cabaret'</TD>
+</TR>
+<TR>
+<TD>6</TD>
+<TD>'Grunge'</TD>
+<TD>26</TD>
+<TD>'Ambient'</TD>
+<TD>46</TD>
+<TD>'Instrumental Pop'</TD>
+<TD>66</TD>
+<TD>'New Wave'</TD>
+</TR>
+<TR>
+<TD>7</TD>
+<TD>'Hip-Hop'</TD>
+<TD>27</TD>
+<TD>'Trip-Hop'</TD>
+<TD>47</TD>
+<TD>'Instrumental Rock'</TD>
+<TD>67</TD>
+<TD>'Psychadelic'</TD>
+</TR>
+<TR>
+<TD>8</TD>
+<TD>'Jazz'</TD>
+<TD>28</TD>
+<TD>'Vocal'</TD>
+<TD>48</TD>
+<TD>'Ethnic'</TD>
+<TD>68</TD>
+<TD>'Rave'</TD>
+</TR>
+<TR>
+<TD>9</TD>
+<TD>'Metal'</TD>
+<TD>29</TD>
+<TD>'Jazz+Funk'</TD>
+<TD>49</TD>
+<TD>'Gothic'</TD>
+<TD>69</TD>
+<TD>'Showtunes'</TD>
+</TR>
+<TR>
+<TD>10</TD>
+<TD>'New Age'</TD>
+<TD>30</TD>
+<TD>'Fusion'</TD>
+<TD>50</TD>
+<TD>'Darkwave'</TD>
+<TD>70</TD>
+<TD>'Trailer'</TD>
+</TR>
+<TR>
+<TD>11</TD>
+<TD>'Oldies'</TD>
+<TD>31</TD>
+<TD>'Trance'</TD>
+<TD>51</TD>
+<TD>'Techno-Industrial'</TD>
+<TD>71</TD>
+<TD>'Lo-Fi'</TD>
+</TR>
+<TR>
+<TD>12</TD>
+<TD>'Other'</TD>
+<TD>32</TD>
+<TD>'Classical'</TD>
+<TD>52</TD>
+<TD>'Electronic'</TD>
+<TD>72</TD>
+<TD>'Tribal'</TD>
+</TR>
+<TR>
+<TD>13</TD>
+<TD>'Pop'</TD>
+<TD>33</TD>
+<TD>'Instrumental'</TD>
+<TD>53</TD>
+<TD>'Pop-Folk'</TD>
+<TD>73</TD>
+<TD>'Acid Punk'</TD>
+</TR>
+<TR>
+<TD>14</TD>
+<TD>'R&amp;B'</TD>
+<TD>34</TD>
+<TD>'Acid'</TD>
+<TD>54</TD>
+<TD>'Eurodance'</TD>
+<TD>74</TD>
+<TD>'Acid Jazz'</TD>
+</TR>
+<TR>
+<TD>15</TD>
+<TD>'Rap'</TD>
+<TD>35</TD>
+<TD>'House'</TD>
+<TD>55</TD>
+<TD>'Dream'</TD>
+<TD>75</TD>
+<TD>'Polka'</TD>
+</TR>
+<TR>
+<TD>16</TD>
+<TD>'Reggae'</TD>
+<TD>36</TD>
+<TD>'Game'</TD>
+<TD>56</TD>
+<TD>'Southern Rock'</TD>
+<TD>76</TD>
+<TD>'Retro'</TD>
+</TR>
+<TR>
+<TD>17</TD>
+<TD>'Rock'</TD>
+<TD>37</TD>
+<TD>'Sound Clip'</TD>
+<TD>57</TD>
+<TD>'Comedy'</TD>
+<TD>77</TD>
+<TD>'Musical'</TD>
+</TR>
+<TR>
+<TD>18</TD>
+<TD>'Techno'</TD>
+<TD>38</TD>
+<TD>'Gospel'</TD>
+<TD>58</TD>
+<TD>'Cult'</TD>
+<TD>78</TD>
+<TD>'Rock &amp; Roll'</TD>
+</TR>
+<TR>
+<TD>19</TD>
+<TD>'Industrial'</TD>
+<TD>39</TD>
+<TD>'Noise'</TD>
+<TD>59</TD>
+<TD>'Gangsta'</TD>
+<TD>79</TD>
+<TD>'Hard Rock'</TD>
+</TR>
+</TABLE>
+<DIV ALIGN="LEFT"><BR>
+WinAmp expanded this table with next codes: </DIV>
+<TABLE BORDER="0" WIDTH="90%">
+<TR>
+<TD WIDTH="1%">80</TD>
+<TD WIDTH="20%">'Folk'</TD>
+<TD>92</TD>
+<TD>'Progressive Rock'</TD>
+<TD>104</TD>
+<TD>'Chamber Music'</TD>
+<TD>116</TD>
+<TD>'Ballad'</TD>
+</TR>
+<TR>
+<TD>81</TD>
+<TD>'Folk-Rock'</TD>
+<TD WIDTH="1%">93</TD>
+<TD WIDTH="20%">'Psychedelic Rock'</TD>
+<TD>105</TD>
+<TD>'Sonata'</TD>
+<TD>117</TD>
+<TD>'Poweer Ballad'</TD>
+</TR>
+<TR>
+<TD>82</TD>
+<TD>'National Folk'</TD>
+<TD>94</TD>
+<TD>'Symphonic Rock'</TD>
+<TD WIDTH="1%">106</TD>
+<TD WIDTH="20%">'Symphony'</TD>
+<TD>118</TD>
+<TD>'Rhytmic Soul'</TD>
+</TR>
+<TR>
+<TD>83</TD>
+<TD>'Swing'</TD>
+<TD>95</TD>
+<TD>'Slow Rock'</TD>
+<TD>107</TD>
+<TD>'Booty Brass'</TD>
+<TD WIDTH="1%">119</TD>
+<TD WIDTH="20%">'Freestyle'</TD>
+</TR>
+<TR>
+<TD>84</TD>
+<TD>'Fast Fusion'</TD>
+<TD>96</TD>
+<TD>'Big Band'</TD>
+<TD>108</TD>
+<TD>'Primus'</TD>
+<TD>120</TD>
+<TD>'Duet'</TD>
+</TR>
+<TR>
+<TD>85</TD>
+<TD>'Bebob'</TD>
+<TD>97</TD>
+<TD>'Chorus'</TD>
+<TD>109</TD>
+<TD>'Porn Groove'</TD>
+<TD>121</TD>
+<TD>'Punk Rock'</TD>
+</TR>
+<TR>
+<TD>86</TD>
+<TD>'Latin'</TD>
+<TD>98</TD>
+<TD>'Easy Listening'</TD>
+<TD>110</TD>
+<TD>'Satire'</TD>
+<TD>122</TD>
+<TD>'Drum Solo'</TD>
+</TR>
+<TR>
+<TD>87</TD>
+<TD>'Revival'</TD>
+<TD>99</TD>
+<TD>'Acoustic'</TD>
+<TD>111</TD>
+<TD>'Slow Jam'</TD>
+<TD>123</TD>
+<TD>'A Capela'</TD>
+</TR>
+<TR>
+<TD>88</TD>
+<TD>'Celtic'</TD>
+<TD>100</TD>
+<TD>'Humour'</TD>
+<TD>112</TD>
+<TD>'Club'</TD>
+<TD>124</TD>
+<TD>'Euro-House'</TD>
+</TR>
+<TR>
+<TD>89</TD>
+<TD>'Bluegrass'</TD>
+<TD>101</TD>
+<TD>'Speech'</TD>
+<TD>113</TD>
+<TD>'Tango'</TD>
+<TD>125</TD>
+<TD>'Dance Hall'</TD>
+</TR>
+<TR>
+<TD>90</TD>
+<TD>'Avantgarde'</TD>
+<TD>102</TD>
+<TD>'Chanson'</TD>
+<TD>114</TD>
+<TD>'Samba'</TD>
+<TD>&nbsp;</TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR>
+<TD>91</TD>
+<TD>'Gothic Rock'</TD>
+<TD>103</TD>
+<TD>'Opera'</TD>
+<TD>115</TD>
+<TD>'Folklore'</TD>
+<TD>&nbsp;</TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR>
+<TD COLSPAN=8>Any other value should be considered as 'Unknown'
+</TABLE>
+<P>&nbsp;</P></CENTER>
+
+<P ALIGN="center"><A NAME="MPEG TAG"></A><FONT SIZE="5"><B>MPEG Audio Tag ID3v2</B></FONT>
+<P>This is new proposed TAG format which is different than ID3v1 and ID3v1.1.
+Complete tech specs for it may be found at <A
+HREF="http://www.id3.org/">http://www.id3.org/</A>.
+<P><CENTER>
+<HR>
+<P><FONT SIZE="-1"> Created on September 1998. by <A HREF="http://www.dv.co.yu/broker/">Predrag
+Supurovic</A>.<BR>
+Thanks to <A HREF="http://www.jps.net/kyunghi/">Jean</A> for debugging and polishing
+of this document, <A HREF="http://members.tripod.com/~videoripper/home.htm">Peter
+Luijer</A>, Guwani, Rob Leslie and Franc Zijderveld<BR>
+for valuable comments and corrections.</FONT></P>
+<P>&copy; 1998, 1999 Copyright by DataVoyage</P>
+<P><FONT SIZE="-1">This document may be changed. Check <A
+HREF="http://www.dv.co.yu/mpgscript/mpeghdr.htm">http://www.dv.co.yu/mpgscript/mpeghdr.htm</A>
+for updates.<BR>
+You may use it freely. Distribution is allowed only in unaltered form. If you
+can help me make it more accurate, please do. </FONT></P>
+<P>&nbsp;</P>
+</CENTER>
+</BODY></HTML>
diff --git a/doc/users_guide_french/USERS-GUIDE-11_fr1.html b/doc/users_guide_french/USERS-GUIDE-11_fr1.html
new file mode 100755
index 0000000..960b6a6
--- /dev/null
+++ b/doc/users_guide_french/USERS-GUIDE-11_fr1.html
@@ -0,0 +1,63 @@
+<!-- ************************************************************************************
+ * USERS-GUIDE-11_fr1.html *
+ * auteur Emmanuel Brun < manub91[at]gmail.com > *
+ * date : 28/12/06 mise en conformité avec W3C xhtml 1.0 strict *
+ * test Firefox + IE6 *
+ * *
+ * Guide de l'utilisateur de EasyTAG (version 1.99.11) *
+ * chapitre 1 - Introduction *
+ * *
+ ************************************************************************************ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang="fr">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Guide de l'utilisateur du logiciel EasyTAG</title>
+ <link rel="stylesheet" type="text/css" href="USERS-GUIDE.css" />
+</head>
+<body>
+ <div><a href="#" name="haut_page"></a></div>
+
+ <h1>Guide de l'utilisateur du logiciel EasyTAG (version 1.99.11)<br/> - chapitre 1 -</h1>
+
+<!-- TABLE DES MATIERES =====================================================================-->
+ <p id="titre_TM">Table des matières.</p>
+ <ul class="TM1">
+ <li><a href="#ch_1">1 - Introduction.</a></li>
+ <li><a href="USERS-GUIDE-11_fr2.html">2 - Description de l'interface.</a></li>
+ <li><a href="USERS-GUIDE-11_fr3.html">3 - Recherche rapide dans votre collection de fichiers audio.</a></li>
+ <li><a href="USERS-GUIDE-11_fr4.html">4 - Editer/corriger les tags.</a></li>
+ <li><a href="USERS-GUIDE-11_fr5.html">5 - Renommer les fichiers/les répertoires.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html">6 - Autres fonctions.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html#ch_7">7 - Pré-requis.</a></li>
+ </ul>
+
+<!-- FIN TABLE DES MATIERES =================================================================-->
+
+<!-- INTRODUCTION =========================================================================-->
+
+ <h2><a name="ch_1" id="ch_1">1 - Introduction.</a></h2>
+ <p>EasyTAG est un utilitaire permettant l'édition et la modification des tags des fichiers audio. Ses caractéristiques principales sont les suivantes :</p>
+ <ul class="liste1">
+ <li>EasyTAG prend en charge les fichiers audio de type MP3, MP2 (tag ID3 incluant les images), FLAC (tag FLAC Vorbis), Ogg Vorbis (tag Ogg Vorbis), MP4/AAC (tag MP4/AAC), MusePack et Monkey (tag APE).</li>
+ <li>EasyTAG permet l'édition/la modification d'un grand nombre de champs d'information (métadonnées) des différents tags : titre, artiste, album, numéro d'album, année, numéro de piste, nombre total de pistes, genre, commentaire, compositeur, premier artiste/interprète, copyright, URL, type d'encodeur et, pour les fichiers MP3 et FLAC, le champ images.</li>
+ <li>EasyTAG possède une interface, développée en GTK+, simple et intuitive.</li>
+ <li>EasyTAG permet une navigation très facile dans l'ensemble de votre collection de fichiers audio grâce à :
+ <ul class="liste2">
+ <li>deux modes de visualisation de votre collection : un mode de type arborescence des répertoires ou un mode de type arborescence artistes/albums,</li>
+ <li>une possibilité de rechercher, dans votre collection, les fichiers par mots clé (nom du fichier, titre).</li>
+ </ul>
+ </li>
+ <li>EasyTAG permet une modification manuelle ou automatique (traitement via un scanner, via une base de données CDDB) des différents champs d'information du tag des différents fichiers audio.</li>
+ <li>EasyTAG permet non seulement de modifier manuellement ou automatiquement le nom des fichiers et des répertoires contenant ces fichiers mais aussi de déplacer automatiquement les fichiers renommés dans un répertoire particulier.</li>
+ <li>EasyTAG permet enfin de créer une liste de lecture de fichiers audio pour les logiciels Winamp ou XMMS ou de lancer, depuis l'interface, l'écoute des fichiers audio.</li>
+ </ul>
+ <p>Le présent guide va vous permettre de maitriser l'interface et les différentes fonctionnalités de cet utilitaire.</p>
+
+<!-- FIN INTRODUCTION =====================================================================-->
+
+ <p class="img_c"><br/><a href="#haut_page">RETOUR A LA TABLE DES MATIERES.</a></p>
+</body>
+</html>
+
diff --git a/doc/users_guide_french/USERS-GUIDE-11_fr2.html b/doc/users_guide_french/USERS-GUIDE-11_fr2.html
new file mode 100755
index 0000000..ad7cad4
--- /dev/null
+++ b/doc/users_guide_french/USERS-GUIDE-11_fr2.html
@@ -0,0 +1,274 @@
+<!-- ************************************************************************************
+ * USERS-GUIDE-11_fr2.html *
+ * auteur Emmanuel Brun < manub91[at]gmail.com > *
+ * date : 28/12/06 mise en conformité avec W3C xhtml 1.0 strict *
+ * test Firefox + IE6 *
+ * *
+ * Guide de l'utilisateur de EasyTAG (version 1.99.11) *
+ * chapitre 2 - Description de l'interface. *
+ * *
+ ************************************************************************************ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang="fr">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Guide de l'utilisateur du logiciel EasyTAG - chapitre 2 - Description de l'interface.</title>
+ <link rel="stylesheet" type="text/css" href="USERS-GUIDE.css" />
+</head>
+
+<body>
+ <div><a href="#" name="haut_page"></a></div>
+
+ <h1>Guide de l'utilisateur du logiciel EasyTAG (version 1.99.11)<br/> - chapitre 2 -</h1>
+
+<!-- TABLE DES MATIERES =====================================================================-->
+ <p id="titre_TM">Table des matières.</p>
+ <ul class="TM1">
+ <li><a href="USERS-GUIDE-11_fr1.html">1 - Introduction.</a></li>
+ <li><a href="#ch_2">2 - Description de l'interface.</a>
+ <ul class="TM2">
+ <li><a href="#ch_2_1">2.1 - Barre de menus.</a>
+ <ul class="TM3">
+ <li><a href="#ch_2_1_1">2.1.1 - Menu &laquo;Fichier&raquo;.</a></li>
+ <li><a href="#ch_2_1_2">2.1.2 - Menu &laquo;Sélecteur&raquo;.</a></li>
+ <li><a href="#ch_2_1_3">2.1.3 - Menu &laquo;Scanner&raquo;.</a></li>
+ <li><a href="#ch_2_1_4">2.1.4 - Menu &laquo;Divers&raquo;.</a></li>
+ <li><a href="#ch_2_1_5">2.1.5 - Menu &laquo;Paramètres&raquo;.</a></li>
+ </ul>
+ </li>
+ <li><a href="#ch_2_2">2.2 - Barre de fonctions.</a></li>
+ <li><a href="#ch_2_3">2.3 - Fenêtre &laquo;Sélecteur&raquo;.</a>
+ <ul class="TM3">
+ <li><a href="#ch_2_3_1">2.3.1 - Mode arborescence des répertoires.</a></li>
+ <li><a href="#ch_2_3_2">2.3.2 - Mode arborescence artistes/albums.</a></li>
+ </ul>
+ </li>
+ <li><a href="#ch_2_4">2.4 - Fenêtre &laquo;Fichier&raquo;.</a></li>
+ <li><a href="#ch_2_5">2.5 - Fenêtre &laquo;Tag&raquo;.</a></li>
+ <li><a href="#ch_2_6">2.6 - Menus contextuels.</a></li>
+ </ul>
+ </li>
+ <li><a href="USERS-GUIDE-11_fr3.html">3 - Recherche rapide dans votre collection de fichiers audio.</a></li>
+ <li><a href="USERS-GUIDE-11_fr4.html">4 - Editer/corriger les tags.</a></li>
+ <li><a href="USERS-GUIDE-11_fr5.html">5 - Renommer les fichiers/les répertoires.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html">6 - Autres fonctions.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html#ch_7">7 - Pré-requis.</a></li>
+ </ul>
+
+<!-- FIN TABLE DES MATIERES =================================================================-->
+
+<!-- DESCRIPTION DE L'INTERFACE =============================================================-->
+
+ <h2><a name="ch_2" id="ch_2">2 - Description de l'interface.</a></h2>
+ <p>La figure ci-après présente une vue d'ensemble de l'interface. Celle-ci est organisée autour de trois fenêtres (Sélecteur, Fichier, Tag), fenêtres affichées avec une bordure rouge sur la figure. Au dessus de ces fenêtres, on trouve un ensemble de menus (Fichier, Sélecteur, Scanner, Divers, Paramètres, Aide) et une barre de boutons permettant un accès rapide à certaines fonctions. De plus, dans certaines zones, en cliquant sur le bouton droit de la souris, il est possible de faire apparaitre des menus contextuels permettant aussi un accès rapide à certaines fonctions.</p>
+ <div class="img_c">
+ <img src="images/interface.png" alt="interface"/>
+ </div>
+ <p>Dans la suite de ce chapitre, nous allons détailler ces différents menus et fenêtres.</p>
+
+<!-- Barre de menus -->
+ <h3><a name="ch_2_1" id="ch_2_1">2.1 - Barre de menus.</a></h3>
+ <p>La barre de menus est formée de six menus : menu &laquo;Fichier&raquo;, &laquo;Sélecteur&raquo;, &laquo;Scanner&raquo;, &laquo;Divers&raquo;, &laquo;Paramètres&raquo; et menu &laquo;Aide&raquo;.</p>
+ <h4><a name="ch_2_1_1" id="ch_2_1_1">2.1.1 - Menu &laquo;Fichier&raquo;.</a></h4>
+ <p>Ce menu (voir figure ci-contre) regroupe de nombreuses fonctions de manipulation des fichiers. Discutons plus particulièrement les fonctions suivantes :</p>
+ <ul class="liste1">
+ <li>
+ <img class="droite" src="images/menu_fic.png" alt="menu Fichier"/>
+ <span class="entree">Classer liste par tag</span> : Ce sous-menu déroulant (présenté, en partie, sur la figure ci-après) permet d'effectuer un classement de la liste des fichiers présents dans un répertoire sur la base des champs d'information du tag (piste, titre, artiste, &#8230;). Voir le <a href="USERS-GUIDE-11_fr3.html#ch_3_1">paragraphe 3.1</a> pour plus de détails.
+ </li>
+ <li><span class="entree">Classer liste par propriétés</span> : Ce sous-menu déroulant (présenté, en partie, sur la figure ci-après) permet d'effectuer un classement de la liste des fichiers présents dans un répertoire sur la base de caractéristiques du fichier (nom de fichier, date de création, type de fichier, &#8230;). Voir le <a href="USERS-GUIDE-11_fr3.html#ch_3_1">paragraphe 3.1</a> pour plus de détails.</li>
+ <li><span class="entree">Ouvrir le(s) Fichier(s) avec &#8230;</span> : Cette entrée permet la mise en oeuvre d'une application externe (par exemple, lecteur de fichiers audio Xmms) sur une sélection de fichiers. Voir le <a href="USERS-GUIDE-11_fr6.html#ch_6_2">paragraphe 6.2</a> pour plus de détails.</li>
+ <li><span class="entree">Premier Fichier</span> : Déplacement au premier fichier de la liste de la fenêtre &laquo;Sélecteur&raquo;.</li>
+ <li><span class="entree">Fichier Précédent</span> : Déplacement au fichier précédent de la liste de la fenêtre &laquo;Sélecteur&raquo;</li>
+ <li><span class="entree">Fichier Suivant</span> : Déplacement au fichier suivant de la liste de la fenêtre &laquo;Sélecteur&raquo;</li>
+ <li><span class="entree">Dernier Fichier</span> : Déplacement au dernier fichier de la liste de la fenêtre &laquo;Sélecteur&raquo;</li>
+ <li><span class="entree">Scanner le(s) Fichier(s)</span> : Lance la fenêtre &laquo;Scanner&raquo;. Voir le <a href="#ch_2_1_3">paragraphe 2.1.3</a> pour plus de détails.</li>
+ <li><span class="entree">Annuler Modifs des Fichiers</span> : Annule les modifications effectuées sur l'ensemble des fichiers sélectionnés.</li>
+ <li><span class="entree">Refaire Modifs des Fichiers</span> : Effectue, sur l'ensemble des fichiers sélectionnés, l'opération inverse de l'entrée précédente.</li>
+ <li><span class="entree">Sauver le(s) Fichier(s)</span> : Sauvegarde des fichiers sélectionnés ayant subi des modifications (fichiers indiqués en rouge dans la fenêtre &laquo;Sélecteur&raquo;).</li>
+ <li><span class="entree">Forcer la Sauvegarde de(s) Fichier(s)</span> : Force la sauvegarde de tous les fichiers sélectionnés, y compris ceux n'ayant pas subi de modifications (fonction utile lors de l'utilisation de certaines options avancées du logiciel).</li>
+ <li><span class="entree">Annuler les Derniers Changements</span> : Annule les modifications du dernier fichier modifié même si ce fichier n'est pas sélectionné.</li>
+ <li><span class="entree">Refaire les Derniers Changements</span> : Effectue, sur le dernier fichier modifié, l'opération inverse de l'entrée précédente.</li>
+ </ul>
+ <hr class="fin_img"/>
+
+ <h4><a name="ch_2_1_2" id="ch_2_1_2">2.1.2 - Menu &laquo;Sélecteur&raquo;.</a></h4>
+ <p>Ce menu (voir figure ci-contre) regroupe de nombreuses fonctions de manipulation des répertoires. Discutons plus particulièrement les fonctions suivantes :</p>
+ <ul class="liste1">
+ <li>
+ <img class="droite" src="images/menu_sel.png" alt="image menu Sélecteur"/>
+ <span class="entree">Arborescence/Vue par Artiste-Album</span> : Cette entrée permet de basculer entre le mode arborescence répertoires et le mode arborescence artistes/albums. Voir le <a href="#ch_2_3">paragraphe 2.3</a> pour plus de détails.
+ </li>
+ <li><span class="entree">Parcourir le Répertoire avec &#8230;</span> : Cette entrée permet la mise en oeuvre d'une application externe (par exemple, lecteur de fichiers audio Xmms) sur un répertoire particulier. Voir le <a href="USERS-GUIDE-11_fr6.html#ch_6_2">paragraphe 6.2</a> pour plus de détails.</li>
+ <li><span class="entree">Refermer l'Arbre</span> : Ferme l'arborescence des répertoires et retourne à l'affichage des répertoires racines.</li>
+ <li><span class="entree">Rafraîchir l'Arbre</span> : Dans le cas de changement dans l'arborescence des fichiers (création de répertoires, déplacements/suppression de fichiers, &#8230;), lance l'acquisition de la nouvelle arborescence.</li>
+ </ul>
+ <hr class="fin_img"/>
+
+ <h4><a name="ch_2_1_3" id="ch_2_1_3">2.1.3 - Menu &laquo;Scanner&raquo;.</a></h4>
+ <p>Ce menu (voir figure ci-contre) permet d'ouvrir l'un des trois scanners disponibles :</p>
+ <ul class="liste1">
+ <li>
+ <img class="droite" src="images/menu_scan.png" alt="image menu Scanner"/>
+ <span class="entree">Compléter le(s) Tag(s) &#8230;</span> : Lancement du scanner qui permet la modification automatique des champs d'information des tags des fichiers présents dans un répertoire particulier. Voir le <a href="USERS-GUIDE-11_fr4.html#ch_4_2">paragraphe 4.2</a> pour plus de détails.
+ </li>
+ <li><span class="entree">Renommer le(s) Fichier(s) et Répertoire(s) &#8230;</span> : Lancement du scanner qui permet de renommer automatiquement les fichiers et les répertoires. Voir le <a href="USERS-GUIDE-11_fr5.html#ch_5_2">paragraphe 5.2</a> pour plus de détails.</li>
+ <li><span class="entree">Traiter le(s) Champs &#8230;</span> : Lancement du scanner qui permet d'effectuer un traitement automatique d'uniformisation (traitement de la casse &#8230;) des noms et des tags des fichiers présents dans un répertoire particulier. Voir le <a href="USERS-GUIDE-11_fr4.html#ch_4_4">paragraphe 4.4</a> pour plus de détails.</li>
+ </ul>
+
+ <hr class="fin_img"/>
+
+ <h4><a name="ch_2_1_4" id="ch_2_1_4">2.1.4 - Menu &laquo;Divers&raquo;.</a></h4>
+ <p>Ce menu (voir figure ci-contre) regroupe, comme son nom l'indique, des fonctions très diverses :</p>
+ <ul class="liste1">
+ <li>
+ <img class="droite" src="images/menu_div.png" alt="image menu Divers"/>
+ <span class="entree">Rechercher le(s) Fichier(s) &#8230;</span> : Lance une recherche manuelle par mot clé sur l'ensemble des fichiers présents dans un répertoire particulier. Voir le <a href="USERS-GUIDE-11_fr3.html#ch_3_2">paragraphe 3.2</a> pour plus de détails.
+ </li>
+ <li><span class="entree">Recherche CDDB &#8230;</span> : Lance la modification automatique des tags des fichiers d'un album via la base de données cddb. Voir le <a href="USERS-GUIDE-11_fr4.html#ch_4_3">paragraphe 4.3</a> pour plus de détails.</li>
+ <li><span class="entree">Charger les Noms des fichiers à partir d'un TXT &#8230;</span> : Modification des noms d'un ensemble de fichiers à partir d'un fichier texte. Voir le <a href="USERS-GUIDE-11_fr5.html#ch_5_1_4">paragraphe 5.1.4</a> pour plus de détails.</li>
+ <li><span class="entree">Ecrire Liste de Lecture &#8230;</span> : Création d'une liste de lecture de fichiers audio pour les logiciels Winamp ou XMMS. Voir le <a href="USERS-GUIDE-11_fr6.html#ch_6_1">paragraphe 6.1</a> pour plus de détails.</li>
+ <li><span class="entree">Lancer Lecteur Audio</span> : Lancement du lecteur audio spécifié par défaut. Voir le <a href="USERS-GUIDE-11_fr6.html#ch_6_2">paragraphe 6.2</a> pour plus de détails.</li>
+ </ul>
+
+ <hr class="fin_img"/>
+
+ <h4><a name="ch_2_1_5" id="ch_2_1_5">2.1.5 - Menu &laquo;Paramètres&raquo;.</a></h4>
+ <p>Ce menu contient le sous-menu &laquo;Préférences &#8230;&raquo; qui permet d'effectuer un certain nombre de réglages par défaut du logiciel EasyTAG. Cette fenêtre dispose de huit onglets de réglages différents (Sélecteur, Divers, Paramètres du nom des fichiers, Paramètres des Tags, Paramètres des Tags ID3, Scanner, Base de données CD, Confirmation). Il n'est pas possible de décrire dans le cadre de ce guide l'ensemble des différentes options de réglage du logiciel (se référer alors à chaque bulle d'aide associée à chaque option). La figure suivante présente, par exemple, les possibilités de réglages disponibles dans l'onglet &laquo;Divers&raquo;. En particulier, vous pouvez voir, en bas de cette fenêtre, la zone dans laquelle vous pouvez définir le logiciel de lecture de fichiers audio par défaut (Xmms ou autre).</p>
+ <div class="img_c"><img src="images/menu_pref.png" alt="image menu Paramètres"/></div>
+
+<!-- Barre de boutons -->
+ <h3><a name="ch_2_2" id="ch_2_2">2.2 - Barre de boutons.</a></h3>
+ <div class="img_c">
+ <img src="images/fen_boutons.png" alt="image barre de boutons"/>
+ </div>
+ <p>La barre de boutons, présentée ci-dessus, incorpore 14 boutons de fonctions :</p>
+ <ul class="liste1">
+ <li>bouton 1 : déplacement au premier fichier de la liste de la fenêtre &laquo;Sélecteur&raquo;,</li>
+ <li>bouton 2 : déplacement au fichier précédent de la liste de la fenêtre &laquo;Sélecteur&raquo;,</li>
+ <li>bouton 3 : déplacement au fichier suivant de la liste de la fenêtre &laquo;Sélecteur&raquo;,</li>
+ <li>bouton 4 : déplacement au dernier fichier de la liste de la fenêtre &laquo;Sélecteur&raquo;,</li>
+ <li>bouton 5 : lancement de la fenêtre &laquo;Scanner&raquo; (voir le <a href="#ch_2_1_3">paragraphe 2.1.3</a> pour plus de détails),</li>
+ <li>bouton 6 : effacer le tag du(des) fichier(s) sélectionné(s),</li>
+ <li>bouton 7 : annuler les modifications du(des) fichier(s) sélectionné(s),</li>
+ <li>bouton 8 : refaire les modifications du(des) fichier(s) sélectionné(s),</li>
+ <li>bouton 9 : lancer la sauvegarde du(des) fichier(s) sélectionné(s),</li>
+ <li>bouton 10 : bascule entre le mode arborescence répertoires et le mode arborescence artistes/albums (voir le <a href="#ch_2_3">paragraphe 2.3</a> pour plus de détails),</li>
+ <li>bouton 11 : sélectionner tous les fichiers de la liste,</li>
+ <li>bouton 12 : inverser la sélection des fichiers de la liste,</li>
+ <li>bouton 13 : arrêt de l'action en cours,</li>
+ <li>bouton 14 : quitter EasyTAG.</li>
+ </ul>
+
+<!-- Fenêtre Sélecteur -->
+ <h3><a name="ch_2_3" id="ch_2_3">2.3 - Fenêtre &laquo;Sélecteur&raquo;.</a></h3>
+ <p>La fenêtre &laquo;Sélecteur&raquo; permet de choisir rapidement le répertoire de travail et les fichiers audio dont vous souhaitez éditer/modifier les tags. EasyTAG dispose, pour cela, de deux modes de visualisation du contenu d'un répertoire : mode arborescence des répertoires ou mode arborescence artistes/albums. Le basculement entre ces deux modes peut se faire en cliquant sur le bouton <img src="images/bouton_arbo.png" alt="bouton tête+disque"/> de la barre de boutons (voir le <a href="#ch_2_2">paragraphe 2.2</a>).</p>
+ <p>Cette fenêtre est divisée en trois zones (zones 1, 2, 3 : voir les figures suivantes). Nous allons maintenant discuter les deux formes que peut prendre cette fenêtre suivant le mode de visualisation choisi.</p>
+
+ <h4><a name="ch_2_3_1" id="ch_2_3_1">2.3.1 - Mode arborescence des répertoires.</a></h4>
+ <ul class="liste1">
+ <li>
+ <img class="droite"src="images/fen_sel1.png" alt="image mode arborescence des répertoires"/>
+ zone 1 : Cette zone permet d'afficher initialement le répertoire de travail par défaut puis, tout au long de l'édition des fichiers, le répertoire de travail courant. Elle permet aussi de spécifier directement un certain répertoire de travail, soit en :
+ <ul class="liste2">
+ <li>entrant manuellement le chemin de ce répertoire,</li>
+ <li>choisissant un répertoire dans la liste déroulante des anciens répertoires déjà consultés.</li>
+ </ul>
+ </li>
+ <li>zone 2 : La zone 2 présente l'arborescence des différents répertoires du support de stockage. Il est alors possible de naviguer dans cette arborescence pour sélectionner très rapidement un répertoire particulier.</li>
+ <li>zone 3 : La zone 3 affiche alors la liste de l'ensemble des fichiers audio contenus dans ce répertoire et ses sous répertoires (option de l'onglet &laquo;Préférences&raquo; du menu &laquo;Divers&raquo;) et dont l'extension est reconnue par le programme. <br/>Le nombre de fichiers de cette liste peut être relativement important. De ce fait, pour s'y retrouver, une alternance de couleur (blanc/bleu) permet de distinguer les fichiers appartenant à des répertoires différents.</li>
+ </ul>
+
+ <hr class="fin_img"/>
+ <h4><a name="ch_2_3_2" id="ch_2_3_2">2.3.2 - Mode arborescence artistes/albums.</a></h4>
+ <p>Ce mode de visualisation est totalement complémentaire du précédent.</p>
+ <div><img class="droite"src="images/fen_sel2.png" alt="image mode arborescence artistes-albums"/></div>
+ <ul class="liste1">
+ <li>zone 1 : Cette zone, identique à celle du mode précédent, permet d'afficher/spécifier le répertoire de travail.</li>
+ <li>zone 2 : La zone 2 présente le contenu du répertoire sélectionné sous la forme d'une arborescence de type artistes/albums. <br/>Les artistes correspondant aux fichiers du répertoire courant sont listés dans la partie haute de cette zone. <br/>Pour l'artiste sélectionné, les différents albums correspondant aux fichiers présents dans le répertoire courant sont listés dans la partie basse de cette zone.</li>
+ <li>zone 3 : La zone 3 affiche les différents fichiers audio de l'artiste et de l'album sélectionné.<br/>Nous voyons que ce nombre de fichiers est, par nature, limité.</li>
+ </ul>
+ <hr class="fin_img"/>
+ <div><img class="droite"src="images/fen_sel3.png" alt="image modification fichiers"/></div>
+ <p>Dans la zone 3 de chacun de ces deux modes, les fichiers ayant subi des modifications soit de nom de fichier soit de tag et qui, par conséquent, doivent être sauvegardés sont clairement identifiables car ils apparaissent en rouge dans la liste des fichiers affichés (voir figure ci-contre pour le mode arborescence de répertoires). <br /> Astuce : double-cliquez sur un fichier pour sélectionner tous les fichiers d'un même dossier. Triple-cliquez pour sélectionner tous les fichiers de la liste.</p>
+ <hr class="fin_img"/>
+
+<!-- Fenêtre Fichier -->
+ <h3><a name="ch_2_4" id="ch_2_4">2.4 - Fenêtre &laquo;Fichier&raquo;.</a></h3>
+ <p>La fenêtre &laquo;Fichier&raquo; est présentée, ci-contre, pour deux types de fichiers audio (Ogg et mp3).</p>
+ <p>En plus, d'une zone de saisie/affichage du nom de fichier, cette fenêtre montre certaines caractéristiques du fichier et certaines informations de base contenues dans l'en-tête du fichier audio comme :</p>
+ <div><img class="droite" src="images/fen_fich.png" alt="image fenêtre Fichier"/></div>
+ <ul class="liste1">
+ <li>le type d'encodage (par exemple MPEG1, layer III),</li>
+ <li>le débit,</li>
+ <li>la fréquence d'échantillonnage du fichier audio,</li>
+ <li>la taille en Mo du fichier audio,</li>
+ <li>la durée du morceau correspondant exprimée en (heure:minutes:secondes).</li>
+ </ul>
+ <p>De plus, dans cette fenêtre, sont indiquées entre parenthèses :</p>
+ <ul class="liste1">
+ <li>la taille totale en Mo/Go de l'ensemble des fichiers du répertoire sélectionné,</li>
+ <li>la durée totale des morceaux présents dans le répertoire, exprimée en (heure:minutes:secondes).</li>
+ </ul>
+ <hr class="fin_img"/>
+
+<!-- Fenêtre Tag -->
+ <h3><a name="ch_2_5" id="ch_2_5">2.5 - Fenêtre &laquo;Tag&raquo;.</a></h3>
+ <p>La fenêtre Tag sert à afficher l'ensemble des différents champs d'information du tag du fichier sélectionné. Elle se caractérise par la présence de deux onglets, onglet &laquo;Général&raquo; et onglet &laquo;Images&raquo; :</p>
+
+ <ul class="liste1">
+ <li><img class="droite" src="images/fen_tag_gen.png" alt="image fenêtre Tag"/>
+ <span class="entree">Onglet &laquo;Général&raquo;</span> : Cet onglet est présenté ci-contre pour un fichier audio de type mp3 (tag ID3) mais sa structure est la même quelque soit le type de fichier (tag ID3, tag Ogg Vorbis, tag Flac Vorbis &#8230;).<br/>Les différents champs d'information du tag sont presque tous clairement identifiables.
+ <ul class="liste2">
+ <li>La zone de saisie (#) située à droite de la zone "Album" correspond au champ "numéro de disque".</li>
+ <li>La zone de saisie située à droite du / correspond au champ "nombre total de pistes".</li>
+ </ul>
+ <br/>Dans cette fenêtre, on remarque la présence de deux types de boutons :
+ <ul class="liste2">
+ <li>Le bouton <img src="images/fen_tag_bout1.png" alt="bouton"/> situé à droite de tous les champs d'information sert à généraliser la modification du champ à tous les fichiers sélectionnés dans la fenêtre "Sélecteur" (voir le <a href="USERS-GUIDE-11_fr4.html#ch_4_1">paragraphe 4.1</a> pour plus de détails).<br/><br/></li>
+ <li>Les boutons <img src="images/fen_tag_bout2.png"alt="bouton"/> servent à modifier manuellement les champs "numéro de piste" et "nombre total de pistes". Leur utilisation est décrite au <a href="USERS-GUIDE-11_fr4.html#ch_4_1">paragraphe 4.1</a>.</li>
+ </ul>
+ <hr class="fin_img"/>
+ </li>
+ <li><img class="droite" src="images/fen_tag_img.png" alt="image fenêtre Tag Images"/>
+ <span class="entree">Onglet &laquo;Images&raquo;</span> : L'utilisation de cet onglet est spécifique au fichier Mp3 et au fichier Flac (option à activer dans l'onglet &laquo;Paramètres des tags ID3&raquo; du menu &laquo;Préférences&raquo;). En effet, dans le tag ID3, il est possible d'incorporer des images. Pour d'autres tags (Ogg Vorbis par exemple), cet onglet est présent mais n'est pas fonctionnel.<br/>La manière de procéder pour incorporer des images au tag est décrite au <a href="USERS-GUIDE-11_fr4.html#ch_4_1">paragraphe 4.1</a>.
+ <hr class="fin_img"/>
+ </li>
+ </ul>
+
+<!-- Menus contextuels -->
+ <h3><a name="ch_2_6" id="ch_2_6">2.6 - Menus contextuels.</a></h3>
+ <p>Dans EasyTAG, on dispose de trois menus contextuels : menus accessibles en cliquant sur le bouton droit de la souris.</p>
+
+ <div><img class="droite" src="images/menu_context1.png" alt="image menu contectuel"/></div>
+ <p>Le premier menu, présenté ci-contre, est accessible lorsque le pointeur de souris est situé dans la zone 2 de la fenêtre &laquo;Sélecteur&raquo; (voir le <a href="#ch_2_3">paragraphe 2.3</a>). Ce menu regroupe les différentes fonctions de manipulation des répertoires et est quasiment identique au menu &laquo;Sélecteur&raquo; (voir le <a href="#ch_2_1_2">paragraphe 2.1.2</a>). Dans cette liste, deux entrées doivent être commentées :</p>
+ <ul class="liste1">
+ <li><span class="entree">Lancer Lecteur Audio</span> : Lancement du lecteur audio spécifié par défaut. Voir le <a href="USERS-GUIDE-11_fr6.html#ch_6_2">paragraphe 6.2</a> pour plus de détails.</li>
+ <li><span class="entree">Parcourir le Répertoire avec &#8230;</span> : Cette entrée permet la mise en oeuvre d'une application externe (par exemple, lecteur de fichiers audio Xmms) sur un répertoire particulier. Voir le <a href="USERS-GUIDE-11_fr6.html#ch_6_2">paragraphe 6.2</a> pour plus de détails.</li>
+ </ul>
+ <hr class="fin_img"/>
+
+ <div><img class="droite" src="images/menu_context2.png" alt="image menu contectuel"/></div>
+ <p>Le deuxième menu, présenté ci-contre, est accessible lorsque le pointeur de souris est situé dans la zone 3 de la fenêtre &laquo;Sélecteur&raquo; (voir le <a href="#ch_2_3">paragraphe 2.3</a>). Ce menu regroupe les différentes fonctions de traitement des fichiers et reprend un certain nombre d'entrées du menu &laquo;Fichier&raquo; (voir le <a href="#ch_2_1_1">paragraphe 2.1.1</a>) et certaines entrées du menu &laquo;Divers&raquo; (voir le <a href="#ch_2_1_4">paragraphe 2.1.4</a>). Dans cette liste, deux entrées doivent être commentées :</p>
+ <ul class="liste1">
+ <li><span class="entree">Lancer Lecteur Audio</span> : Lancement du lecteur audio spécifié par défaut. Voir le <a href="USERS-GUIDE-11_fr6.html#ch_6_2">paragraphe 6.2</a> pour plus de détails.</li>
+ <li><span class="entree">Ouvrir le(s) Fichier(s) avec &#8230;</span> : Cette entrée permet la mise en oeuvre d'une application externe (par exemple, lecteur de fichiers audio Xmms) sur une sélection de fichiers. Voir le <a href="USERS-GUIDE-11_fr6.html#ch_6_2">paragraphe 6.2</a> pour plus de détails.</li>
+ </ul>
+ <hr class="fin_img"/>
+
+ <div><img class="droite" src="images/menu_context3.png" alt="image menu contectuel"/></div>
+ <p>Le troisième menu, présenté ci-contre, est accessible lorsque le pointeur de souris est situé dans la zone de saisie de la fenêtre &laquo;Fichier&raquo; ou dans les zones de saisie de la fenêtre &laquo;Tag&raquo;. Les différentes entrées sont identiques à celles du sous-menu &laquo;Traiter les champs&raquo; du menu &laquo;Scanner&raquo; (voir <a href="USERS-GUIDE-11_fr3.html#ch_3_4">paragraphe 3.4</a>). Les différentes entrées permettent de réaliser des modifications sur le nom et sur les champs d'information des fichiers telles que :</p>
+ <ul class="liste1">
+ <li>conversion minuscules/majuscules.</li>
+ <li>remplacement d'un caractère par un autre &#8230;</li>
+ </ul>
+ <hr class="fin_img"/>
+
+<!-- FIN DESCRIPTION DE L'INTERFACE =========================================================-->
+
+ <p class="img_c"><br/><a href="#haut_page">- RETOUR A LA TABLE DES MATIERES -</a></p>
+</body>
+</html>
+
diff --git a/doc/users_guide_french/USERS-GUIDE-11_fr3.html b/doc/users_guide_french/USERS-GUIDE-11_fr3.html
new file mode 100755
index 0000000..929d8b3
--- /dev/null
+++ b/doc/users_guide_french/USERS-GUIDE-11_fr3.html
@@ -0,0 +1,94 @@
+<!-- ************************************************************************************
+ * USERS-GUIDE-11_fr3.html *
+ * auteur Emmanuel Brun < manub91[at]gmail.com > *
+ * date : 28/12/06 mise en conformité avec W3C xhtml 1.0 strict *
+ * test Firefox + IE6 *
+ * *
+ * Guide de l'utilisateur de EasyTAG (version 1.99.11) *
+ * chapitre 3 - Recherche rapide dans votre collection de fichiers audio. *
+ * *
+ ************************************************************************************ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang="fr">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Guide de l'utilisateur du logiciel EasyTAG - chapitre 3 - Recherche rapide dans votre collection de fichiers audio.</title>
+ <link rel="stylesheet" type="text/css" href="USERS-GUIDE.css" />
+</head>
+
+<body>
+ <div><a href="#" name="haut_page"></a></div>
+
+ <h1>Guide de l'utilisateur du logiciel EasyTAG (version 1.99.11)<br/> - chapitre 3 -</h1>
+
+<!-- TABLE DES MATIERES =====================================================================-->
+ <p id="titre_TM">Table des matières.</p>
+ <ul class="TM1">
+ <li><a href="USERS-GUIDE-11_fr1.html">1 - Introduction.</a></li>
+ <li><a href="USERS-GUIDE-11_fr2.html">2 - Description de l'interface.</a></li>
+ <li>
+ <a href="#ch_3">3 - Recherche rapide dans votre collection de fichiers audio.</a>
+ <ul class="TM2">
+ <li><a href="#ch_3_1">3.1 - Classement par critère de la liste des fichiers.</a></li>
+ <li><a href="#ch_3_2">3.2 - Recherche manuelle par mot clé.</a></li>
+ </ul>
+ </li>
+ <li><a href="USERS-GUIDE-11_fr4.html">4 - Editer/corriger les tags.</a></li>
+ <li><a href="USERS-GUIDE-11_fr5.html">5 - Renommer les fichiers/les répertoires.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html">6 - Autres fonctions.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html#ch_7">7 - Pré-requis.</a></li>
+ </ul>
+
+<!-- FIN TABLE DES MATIERES =================================================================-->
+
+<!-- RECHERCHE RAPIDE DANS UNE COLLECTION DE FICHIERS AUDIO =================================-->
+
+ <h2><a name="ch_3" id="ch_3">3 - Recherche rapide dans votre collection de fichiers audio.</a></h2>
+ <p>Une collection de fichiers audio peut contenir un grand nombre de fichiers. L'étape avant tout traitement consiste alors à identifier rapidement les fichiers audio que l'on veut éditer/modifier. Pour cela, EasyTAG dispose de plusieurs outils que nous allons discuter dans ce chapitre.</p>
+
+<!-- Menus contextuels -->
+ <h3><a name="ch_3_1" id="ch_3_1">3.1 - Classement par critère de la liste des fichiers.</a></h3>
+ <p>EasyTAG permet de classer la liste des fichiers audio présents dans un répertoire particulier suivant certains critères :</p>
+ <ul class="liste1">
+ <li><img class="droite" src="images/sousmenu_fic1.png" alt="image classement par champs d'information"/>
+ <span class="entree">Champs d'information du tag du fichier</span> : Le classement peut être réalisé par ordre croissant/décroissant de piste, de titre, d'artiste, d'album, d'année, de genre, de commentaire, de compositeur, d'artiste original, de copyright, d'URL ou de nom d'encodeur,
+ <hr class="fin_img"/>
+ </li>
+ <li><img class="droite" src="images/sousmenu_fic2.png"alt="image classement par caractéristiques fichier"/>
+ <span class="entree">Caractéristiques du fichier lui-même</span> : Le classement peut être réalisé par ordre croissant/décroissant de nom de fichier, de date de création, de type de fichier, de taille de fichier, de durée, de débit ou de fréquence.
+ <hr class="fin_img"/>
+ </li>
+ </ul>
+ <p>Ces deux fonctions <span class="entree">Classer liste par tag</span> et <span class="entree">Classer liste par propriétés</span> sont accessibles depuis le menu &laquo;Fichier&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1">paragraphe 2.1</a>) ou depuis un menu contextuel (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_6">paragraphe 2.6</a>).</p>
+ <p>L'intérêt de ces différents classements est de modifier, en fonction de vos besoins, l'exploration de votre collection de fichiers audio. Par exemple :</p>
+ <ul class="liste1">
+ <li>Pour trouver rapidement les morceaux les plus récents, il suffit de classer la liste par ordre décroissant des années. Les fichiers correspondant aux morceaux les plus récents s'afficheront alors tout en haut de la liste.</li>
+ <li>Pour identifier facilement les fichiers dont le champ année n'est pas renseigné, il suffit de classer la liste par ordre croissant des années. En effet, ces fichiers apparaîtront alors en premier dans la liste.</li>
+ <li>Pour différencier les fichiers mp3, ogg ou encore flac, il suffit d'effectuer un classement de la liste par type de fichiers.</li>
+ </ul>
+ <p class="sans-retrait">De nombreuses autres utilisations de ces classements sont possibles. A vous de choisir le type de classement qui correspond le mieux à votre besoin.</p>
+
+<!-- Menus contextuels -->
+ <h3><a name="ch_3_2" id="ch_3_2">3.2 - Recherche manuelle par mot clé.</a></h3>
+ <p>Dans EasyTAG, vous pouvez aussi effectuer une recherche par mot clé sur la liste des fichiers audio présents dans un répertoire particulier. La fenêtre de recherche par mot clé est accessible en cliquant sur l'entrée <span class="entree">Rechercher le(s) fichier(s) &#8230;</span> du menu &laquo;Divers&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1">paragraphe 2.1</a>) ou du menu contextuel consacré au traitement des fichiers (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_6">paragraphe 2.6</a>).</p>
+ <p>La fenêtre &laquo;Rechercher un fichier&raquo; de base est présentée sur la figure suivante. On voit qu'elle permet d'afficher en une fois toutes les informations pertinentes des fichiers : le nom de fichier et quasiment la totalité des champs d'information du tag (titre, artiste, album, numéro de disque, année, piste, genre, commentaire, compositeur, artiste original, copyright, URL, nom d'encodeur).</p>
+ <div class="img_c"><img src="images/menu_recherche.png" alt="image fenêtre -Rechercher un fichier-"/></div>
+ <p>Cette recherche peut être utilisée de la manière suivante :</p>
+ <ul class="liste1">
+ <li><span class="entree">Visualisation globale</span> : Il est possible de visualiser en une fois le nom et l'ensemble des champs d'information du tag de tous les fichiers présents dans un répertoire (voir figure suivante). Pour cela, il suffit de lancer la recherche en laissant le champ "Rechercher" vide.<br/>Si le nombre de fichiers trouvés n'est pas trop important, vous pouvez, par défilement, visualiser l'ensemble de ces fichiers et sélectionner ceux sur lesquels effectuer un traitement ultérieur. De plus, dans cette liste, vous pouvez facilement identifier tous les fichiers dont un champ d'information particulier du tag (par exemple, champ année) n'est pas renseigné (cellule vide).
+ <div class="img_c"><img src="images/menu_recherche2.png" alt="image fenêtre -Rechercher un fichier- visualisation globale"/></div>
+ </li>
+ <li><span class="entree">Visualisation partielle</span> : Si le nombre de fichiers présents dans le répertoire est important, il peut être utile de limiter l'affichage aux fichiers répondant à certains critères (par exemple, recherche d'un artiste particulier). Pour cela, il suffit de lancer la recherche en entrant un mot clé dans la zone de saisie ou bien encore en choisissant ce mot clé dans la liste déroulante des mots clé déja utilisés. Un exemple de cette recherche est présenté sur la figure suivante.<br/>
+ Pour faciliter la sélection des fichiers, tous les champs d'information qui contiennent la chaîne de caractères recherchée sont affichés en rouge.
+ <div class="img_c"><img src="images/menu_recherche1.png" alt="image fenêtre -Rechercher un fichier- visualisation partielle"/></div>
+ </li>
+ </ul>
+
+<!-- FIN RECHERCHE RAPIDE DANS UNE COLLECTION DE FICHIERS AUDIO =============================-->
+
+ <p class="img_c"><br/><a href="#haut_page">- RETOUR A LA TABLE DES MATIERES -</a></p>
+</body>
+</html>
+
diff --git a/doc/users_guide_french/USERS-GUIDE-11_fr4.html b/doc/users_guide_french/USERS-GUIDE-11_fr4.html
new file mode 100755
index 0000000..8b7298c
--- /dev/null
+++ b/doc/users_guide_french/USERS-GUIDE-11_fr4.html
@@ -0,0 +1,205 @@
+<!-- ************************************************************************************
+ * USERS-GUIDE-11_fr4.html *
+ * auteur Emmanuel Brun < manub91[at]gmail.com > *
+ * date : 28/12/06 mise en conformité avec W3C xhtml 1.0 strict *
+ * test Firefox + IE6 *
+ * *
+ * Guide de l'utilisateur de EasyTAG (version 1.99.11) *
+ * chapitre 4 - Editer/corriger les tags. *
+ * *
+ ************************************************************************************ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang="fr">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Guide de l'utilisateur du logiciel EasyTAG - chapitre 4 - Editer/corriger les tags.</title>
+ <link rel="stylesheet" type="text/css" href="USERS-GUIDE.css" />
+</head>
+
+<body>
+ <div><a href="#" name="haut_page"></a></div>
+
+ <h1>Guide de l'utilisateur du logiciel EasyTAG (version 1.99.11)<br/> - chapitre 4 -</h1>
+
+<!-- TABLE DES MATIERES =====================================================================-->
+ <p id="titre_TM">Table des matières.</p>
+ <ul class="TM1">
+ <li><a href="USERS-GUIDE-11_fr1.html">1 - Introduction.</a></li>
+ <li><a href="USERS-GUIDE-11_fr2.html">2 - Description de l'interface.</a></li>
+ <li><a href="USERS-GUIDE-11_fr3.html">3 - Recherche rapide dans votre collection de fichiers audio.</a></li>
+ <li><a href="#ch_4">4 - Editer/corriger les tags.</a>
+ <ul class="TM2">
+ <li>
+ <a href="#ch_4_1">4.1 - Mode manuel.</a>
+ <ul class="TM3">
+ <li><a href="#ch_4_1_1">4.1.1 - Travail sur un fichier.</a></li>
+ <li><a href="#ch_4_1_2">4.1.2 - Travail sur un ensemble de fichiers.</a></li>
+ </ul>
+ </li>
+ <li><a href="#ch_4_2">4.2 - Mode automatique via le scanner "Compléter le(s) Tag(s)".</a></li>
+ <li>
+ <a href="#ch_4_3">4.3 - Mode automatique via la base de données CDDB.</a>
+ <ul class="TM3">
+ <li><a href="#ch_4_3_1">4.3.1 - Recherche automatique.</a></li>
+ <li><a href="#ch_4_3_2">4.3.2 - Recherche manuelle.</a></li>
+ </ul>
+ </li>
+ <li><a href="#ch_4_4">4.4 - Correction des champs d'information du tag via le scanner "Traiter les Champs".</a></li>
+ </ul>
+ </li>
+ <li><a href="USERS-GUIDE-11_fr5.html">5 - Renommer les fichiers/les répertoires.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html">6 - Autres fonctions.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html#ch_7">7 - Pré-requis.</a></li>
+ </ul>
+
+<!-- FIN TABLE DES MATIERES =================================================================-->
+
+<!-- EDITER/CORRIGER LES TAGS =============================================================-->
+
+ <h2><a name="ch_4" id="ch_4">4 - Editer/corriger les tags.</a></h2>
+ <p>EasyTAG offre trois modes différents pour modifier les champs d'information du tag de vos fichiers : un mode manuel, un mode automatique via un scanner et un mode automatique via la recherche dans une base de données CDDB. Dans la suite de ce chapitre, nous allons décrire la mise en oeuvre de chacun d'entre eux.</p>
+ <p>Avant toute chose, il est bon de noter que le traitement du tag des fichiers sera grandement facilité si ces fichiers sont regroupés par album plutôt que d'être tous stockés dans un même répertoire.</p>
+ <p>De plus, il est important de garder à l'esprit que chaque traitement ne s'applique que sur les fichiers sélectionnés dans la liste de la fenêtre &laquo;Sélecteur&raquo;. De même, la procédure de sauvegarde ne s'applique aussi que sur ces fichiers.</p>
+
+<!-- Mode manuel -->
+ <h3><a name="ch_4_1" id="ch_4_1">4.1 - Mode manuel.</a></h3>
+ <p>Ce mode est utile lorsque vous n'avez à renseigner/modifier les champs d'information du tag que d'un nombre limité de fichiers.<br/>Si vous voulez traiter l'ensemble des fichiers d'un même album, il peut être préférable, dans un premier temps, d'utiliser le mode de modification via la base de données CDDB (voir <a href="#ch_4_3">paragraphe 4.3</a>).<br/>De même, si les noms des fichiers ou le répertoire de ces fichiers contiennent un certain nombre d'informations pertinentes (artiste, album, année &#8230;), il peut être judicieux d'utiliser le mode de modification automatique via le scanner &laquo;Compléter le(s) Tag(s)&raquo; (voir <a href="#ch_4_2">paragraphe 4.2</a>).</p>
+ <p>Dans le mode manuel, il est possible de travailler sur un fichier ou de travailler simultanément sur un ensemble de fichiers.</p>
+ <h4><a name="ch_4_1_1" id="ch_4_1_1">4.1.1 - Travail sur un fichier.</a></h4>
+
+ <div><img class="droite" src="images/fen_tag_gen.png" alt="image Tag ID3 - onglet général"/></div>
+ <p>Pour renseigner un champ d'information du tag du fichier, il suffit alors de taper la valeur souhaitée dans la zone de saisie correspondante (voir figure ci-contre). Concernant certains champs, les points suivants doivent être notés :</p>
+ <ul class="liste1">
+ <li><span class="entree">Numéro de piste</span> : Le numéro de piste peut être saisi ou être choisi dans une liste déroulante (01 à 30).</li>
+ <li><span class="entree">Genre</span> : Le genre peut être choisi dans une liste prédéfinie (liste des genres ID3, de "Acid" à "Tribal") ou bien correspondre à une valeur qui vous est personnelle ("Chanson française", par exemple).</li>
+ <li><span class="entree">Année</span> : La saisie de la valeur de ce champ a été simplifiée au maximum. En effet, seule la saisie des deux derniers digits (dizaines et unités) de l'année est nécessaire. EasyTAG complete alors intelligemment les digits manquants (millénaires et siècles). Ainsi, la saisie "04" sera complétée en "2004" et la saisie "94" sera complétée en "1994".</li>
+ </ul>
+ <hr class="fin_img"/>
+
+ <div><img class="droite" src="images/fen_tag_img.png" alt="image Tag ID3 - onglet images"/></div>
+ <p>Par ailleurs, pour les fichiers Mp3 et pour les fichiers Flac , il est possible d'incorporer au tag un certain nombre d'images (jpg ou png). Pour cela, on peut procéder de deux manières :</p>
+ <ul class="liste1">
+ <li>Utiliser une procédure de type "Glisser/Déposer" dans la zone Images,</li>
+ <li>Cliquer sur le bouton <img src="images/bouton_img1.png" alt="bouton"/> et sélectionner dans l'arborescence l'image souhaitée.</li>
+ </ul>
+ <p>Le bouton <img src="images/bouton_img3.png"alt="bouton"/> permet soit d'effacer toutes les images (comportement par défaut) soit de limiter cet effacement aux seules images sélectionnées.</p>
+ <p>Une fois le choix d'images effectué, il est possible de compléter l'information du champ &laquo;Images&raquo; en affectant à chaque image un type particulier (couverture "face avant", dépliant intérieur, artiste, &#8230;). Pour cela, il suffit de cliquer sur le bouton <img src="images/bouton_img2.png" alt="bouton"/> et d'effectuer un choix parmi la liste des types proposés.</p>
+ <hr class="fin_img"/>
+
+ <h4><a name="ch_4_1_2" id="ch_4_1_2">4.1.2 - Travail sur un ensemble de fichiers.</a></h4>
+ <div><img class="droite" src="images/fen_tag_gen.png" alt="image Tag ID3 - onglet général"/></div>
+ <p>Bien évidemment, lorsque vous travaillez sur l'ensemble des fichiers d'un album particulier, certains paramètres comme le nom de l'album, l'année et le genre sont communs à tous ces fichiers.<br/>De plus, on peut vouloir renseigner un ensemble de fichiers avec un paramètre particulier (fichiers de même genre, par exemple).</p>
+ <p>Dans ce cas, il est possible d'utiliser le bouton <img src="images/fen_tag_bout1.png" alt="bouton"/> situé à droite de chaque champ. En effet, pour un champ d'information du tag donné (année par exemple), cliquer sur ce bouton revient à affecter la même valeur du champ à l'ensemble des tags des fichiers sélectionnés.</p>
+ <p>Par ailleurs, si les fichiers présents dans un répertoire correspondent à l'ensemble des fichiers d'un album, la numérotation des différentes pistes au format "numéro de piste/nombre total de pistes" peut se faire rapidement en utilisant le bouton <img src="images/fen_tag_bout2.png" alt="bouton"/> situé à gauche du champ &laquo;numéro de piste&raquo; et le bouton <img src="images/fen_tag_bout2.png" alt="bouton"/> situé à gauche du champ &laquo;nombre total de pistes&raquo;.<br/>Le premier bouton permet d'affecter au champ "numéro de piste" une valeur correspondant à la position du fichier dans la liste des fichiers présents dans le répertoire (l'ordre des fichiers est donc essentiel).<br/>Le deuxième bouton permet d'affecter au champ "nombre de pistes" une valeur correspondant au nombre de fichiers présents dans le répertoire.</p>
+
+ <p>Enfin, dans le mode manuel, l'utilisation de certaines touches permettent de traiter les champs de façon plus efficace :</p>
+ <ul class="liste1">
+ <li>La touche Entrée permet de se déplacer rapidement d'un champ à l'autre.</li>
+ <li>La touche Tab permet, pour un champ particulier, d'activer directement le petit bouton rond situé à droite de celui-ci (valeur du champ donnée à l'ensemble des fichiers sélectionnés).</li>
+ <li>Les touches PageUp et PageDown permettent respectivement de passer au fichier précédent ou au fichier suivant de la liste.</li>
+ </ul>
+ <hr class="fin_img"/>
+
+<!-- Mode automatique via le scanner "Compléter le(s) Tag(s)" -->
+ <h3><a name="ch_4_2" id="ch_4_2">4.2 - Mode automatique via le scanner "Compléter le(s) Tag(s)".</a></h3>
+ <p>Si les noms des fichiers ou le répertoire de ces fichiers contiennent un certain nombre d'informations pertinentes (artiste, album, année, titre, &#8230;), il est possible d'effectuer la modification automatique de certains champs d'information des tags via le scanner &laquo;Compléter le(s) Tag(s)&raquo;. Pour cela, EasyTAG se base sur un modèle de masque qui permet d'extraire les différentes informations contenues dans le nom du fichier et/ou du répertoire et de renseigner alors les différents champs d'information du tag correspondants.<br/>Ce scanner est accessible depuis le menu &laquo;Fichier&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1_1">paragraphe 2.1.1</a>), le menu &laquo;Scanner&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1_3">paragraphe 2.1.3</a>) ou depuis un menu contextuel (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_6">paragraphe 2.6</a>).</p>
+ <p>La fenêtre &laquo;Scanner de Tag et de Nom de Fichier&raquo; est présentée sur la figure ci-contre. Sur cette figure, apparaissent les boutons de contôle suivants :</p>
+ <div><img class="droite" src="images/fen_scan1.png" alt="image fenêtre -Compléter le(s) Tag(s)-"/></div>
+ <ul class="liste1">
+ <li>bouton <img src="images/bouton_scan1.png" alt="bouton porte"/> : Après la saisie d'un masque, cliquer sur ce bouton lance le traitement automatique des champs d'information du tag de l'ensemble des fichiers audio sélectionnés.</li>
+ <li>bouton <img src="images/bouton_scan3.png" alt="bouton point d'interrogation"/> : Ouvre/Ferme la fenêtre &laquo;Légende&raquo; (voir figure ci-contre) qui rappelle la correspondance entre code du masque et champ d'information du tag.</li>
+ <li>bouton <img src="images/bouton_scan2.png" alt="bouton masque"/> : Ouvre/Ferme la fenêtre &laquo;Editeur de Masque&raquo; (voir figure ci-contre) qui permet de choisir ou de créer le masque adapté à votre besoin. Elle permet, bien sûr, de sauvegarder ce nouveau masque pour tout traitement ultérieur du même type.</li>
+ </ul>
+ <p>La réussite de ce traitement est totalement conditionnée au choix du masque adapté aux données (nom du fichier et/ou nom du répertoire). Dans EasyTAG, de base, vous disposez d'une importante liste de modèles de masque (voir figure ci-contre). On voit qu'un masque est construit à partir d'un certain nombre de codes (%a, %b, %t, &#8230;) dont la signification est précisée dans la fenêtre &laquo;Légende&raquo;.<br/>Pour vous guider dans le choix du masque, EasyTAG affiche immédiatement, en dessous de la zone de saisie du masque de la fenêtre &laquo;Compléter Tag&raquo;, les informations extraites du nom du fichier et/ou du nom du répertoire.</p>
+ <hr class="fin_img"/>
+
+ <p>Vous pouvez aussi créer votre propre modèle de masque pour correspondre au mieux au format du nom de vos fichiers audio et/ou du nom du répertoire les contenant. Pour mieux comprendre comment utiliser les codes, prenons deux exemples.</p>
+ <div class="droite">
+ <table>
+ <tr><th>Code</th><th>Champ du tag</th><th>Valeur extraite</th></tr>
+ <tr><td>%a</td><td>Artiste </td><td>Luke </td></tr>
+ <tr><td>%y</td><td> Année </td><td>2004 </td></tr>
+ <tr><td>%b</td><td> Album </td><td>La tête en arrière </td></tr>
+ <tr><td>%n</td><td> Piste </td><td>01 </td></tr>
+ <tr><td>%t</td><td> Titre </td><td>Comme un homme </td></tr>
+ </table>
+ </div>
+ <p>Si le fichier dont on veut renseigner le tag et le masque choisi sont les suivants :</p>
+ <ul class="liste1">
+ <li><span class="entree">fichier</span> : <span class="entree">01 - Comme un homme.ogg</span> situé dans le répertoire <span class="entree">/media/musiques/Luke/2004 - La tête en arrière/</span>.</li>
+ <li><span class="entree">masque</span> : "<span class="entree">%a/%y - %b/%n - %t</span>".</li>
+ </ul>
+ <p class="sans-retrait">Les informations extraites alors par l'application de ce masque sont données dans le tableau ci-contre.</p>
+ <hr class="fin_img"/>
+
+ <p>Dans la liste des codes de la fenêtre &laquo;Légende&raquo;, on voit qu'il existe un code "%i" qui ne correspond à aucun champ d'information du tag. Ce code permet d'extraire une information et de ne pas l'affecter à un champ particulier.</p>
+ <div class="droite">
+ <table>
+ <tr><th>Code</th><th>Champ du tag</th><th>Valeur extraite</th></tr>
+ <tr><td>%a</td><td>Artiste </td><td>Luke </td></tr>
+ <tr><td>%i</td><td>Aucun </td><td>disc </td></tr>
+ <tr><td>%b</td><td>Album </td><td>La tête en arrière </td></tr>
+ <tr><td>%y</td><td>Année </td><td>2004 </td></tr>
+ <tr><td>%n</td><td>Piste </td><td>01 </td></tr>
+ <tr><td>%t</td><td>Titre </td><td>Comme un homme </td></tr>
+ </table>
+ </div>
+
+ <p>Si le fichier dont on veut renseigner le tag et le masque choisi sont les suivants :</p>
+ <ul class="liste1">
+ <li><span class="entree">fichier</span> : <span class="entree">01 - Comme un homme.ogg</span> situé dans le répertoire <span class="entree">/media/musiques/Luke/disc - La tête en arrière(2004)/</span>.</li>
+ <li><span class="entree">masque</span> : "<span class="entree">%a/%i - %b(%y)/%n - %t</span>".</li>
+ </ul>
+ <p class="sans-retrait">Les informations extraites alors par l'application de ce masque sont données dans le tableau ci-contre.</p>
+ <hr class="fin_img"/>
+
+ <p>Une fois le choix du masque effectué, cliquer sur le bouton <img src="images/bouton_scan1.png" alt="bouton porte"/> permet de lancer alors le traitement automatique sur l'ensemble des fichiers selectionnés. Si les champs d'information du tag des fichiers sont déjà partiellement renseignés, vous pouvez remplacer toutes les anciennes valeurs des champs par les nouvelles valeurs extraites à la condition d'avoir coché la case <span class="entree">Ecraser les champs lors d'un Scan du tag</span> de l'onglet &laquo;Scanner&raquo; du menu &laquo;Préférences&raquo;.</p>
+
+<!-- Mode automatique via la base de données CDDB -->
+ <h3><a name="ch_4_3" id="ch_4_3">4.3 - Mode automatique via la base de données CDDB.</a></h3>
+ <p>Si les fichiers sélectionnés constituent l'ensemble des fichiers d'un même album, il est alors possible d'utiliser le mode de traitement automatique via la base de données CDDB. En effet, sur internet, cette base de données répertorie les différentes informations d'un très grand nombre d'albums CD publiés. Il suffit alors de retouver l'album correspondant à vos fichiers pour pouvoir renseigner automatiquement l'ensemble des champs d'information du tag de ces fichiers. Deux modes d'interrogation de la base de données sont disponibles (un mode automatique et un mode manuel). Une bonne stratégie est d'utiliser, dans un premier temps, le mode automatique. Si ce dernier s'avère incapable d'identifier correctement l'album, vous pouvez vous rabattre sur le mode manuel et utiliser alors des mots clé pour guider la recherche.</p>
+
+ <h4><a name="ch_4_3_1" id="ch_4_3_1">4.3.1 - Recherche automatique.</a></h4>
+ <p>La recherche se fait par l'envoi à la base de données CDDB d'un paramètre nommé CddbID identifiant normalement le CD audio. Ce paramètre est calculé par EasyTAG à partir des caractéristiques des différentes plages du CD audio (durée totale du CD, nombre de plages, durée de chaque plage). De ce fait, il est nécessaire de sélectionner tous les fichiers de l'album (et seulement ceux-ci) et il est aussi nécessaire que ces derniers soient classés exactement comme dans le CD d'origine.</p>
+ <p>Une fois cette sélection effectuée, vous pouvez lancer l'interrogation de la base de données. La fenêtre correspondant au mode automatique est présentée sur la figure ci-contre. Pour lancer l'interrogation, cliquez sur le bouton &laquo;Rechercher&raquo;.</p>
+ <div class="img_c"><img src="images/fen_cddb1.png" alt="image fenêtre Recherche automatique"/></div>
+ <p>La liste des différents albums possibles trouvés dans la base de données (le cddbid n'étant pas unique) apparait alors dans la fenêtre &laquo;Résultats&raquo;. Sélectionnez une des lignes de cette liste pour visualiser à droite les différentes pistes de cet album. Les albums déja consultés sont affichés en rouge.</p>
+ <p>Une fois le bon album identifié, vous pouvez alors renseigner les champs d'information du tag des fichiers de cet album. Pour cela, il faut dans un premier temps, choisir quels champs mettre à jour. Il est possible de mettre à jour tous les champs ou seulement quelques uns choisis dans la liste (nom de fichier, titre, artiste &#8230;). Puis, dans un deuxième temps, cliquer sur le bouton &laquo;Appliquer&raquo; lance le traitement. Si aucune piste de la fenêtre &laquo;Résultats&raquo; n'est sélectionnée, les champs d'information de l'ensemble des pistes seront modifiés. Par contre, si une piste particulière est sélectionnée, seuls les champs d'information du tag de cette piste seront mis à jour.</p>
+
+ <h4><a name="ch_4_3_2" id="ch_4_3_2">4.3.2 - Recherche manuelle.</a></h4>
+ <p>Si aucun album n'a pu être identifié par la recherche automatique (fichiers audio du CD imcomplets &#8230;), vous pouvez toujours essayer une recherche manuelle en utilisant des mots clé (ces mots doivent être présents dans le nom de l'artiste, le nom de l'album ou bien encore dans le nom de la piste). La fenêtre correspondant à ce mode est présentée sur la figure suivante.</p>
+ <div class="img_c"><img src="images/fen_cddb2.png" alt="image fenêtre Recherche manuelle"/></div>
+ <p>Pour effectuer la recherche, il faut entrer les "bons" mots clé dans la zone &laquo;Mots&raquo; puis cliquer sur le bouton &laquo;Rechercher&raquo;. La liste des albums trouvés s'affiche alors dans la fenêtre &laquo;Résultats &raquo;. La liste de résultats obtenue dans ce mode est identique à celle obtenue via l'outil de recherche du site freedb.org.</p>
+ <p>A ce stade, il faut noter que cette recherche peut s'avérer peu sélective et conduire à une liste d'albums trouvés de taille importante. Cette liste peut être réduite, soit :</p>
+ <ul class="liste1">
+ <li>En effectuant une recherche dans la liste des résultats. Pour cela, il faut entrer un mot clé dans la zone de saisie &laquo;Rechercher&raquo; de la fenêtre &laquo;Résultats&raquo;.</li>
+ <li>En faisant défiler la liste des albums et en pré-sélectionnant un certain nombre d'albums candidats. Ces albums sont affichés en rouge. Il suffit alors de cliquer sur le bouton <img src="images/bouton_scan6.png" alt="bouton liste rouge"/> pour ne conserver que les albums pré-sélectionnés.</li>
+ </ul>
+ <p>Dès que vous avez réussi à identifier le bon album, il suffit alors, pour renseigner les champs d'information du tag de vos fichiers, de procéder exactement comme dans le mode automatique.</p>
+
+<!-- Correction des tags via le scanner "Traiter les Champs" -->
+ <h3><a name="ch_4_4" id="ch_4_4">4.4 - Correction des champs d'information du tag via le scanner "Traiter les Champs".</a></h3>
+ <p>Ce scanner ne doit être utilisé que si les noms des fichiers ou les différents champs d'information du tag des fichiers ont déjà été renseignés dans un premier temps. Il permet de rapidement uniformiser toutes ces chaînes de caractères en choisissant une mise en forme particulière.<br/>Ce scanner est accessible depuis le menu &laquo;Fichier&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1_1">paragraphe 2.1.1</a>), le menu &laquo;Scanner&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1_3">paragraphe 2.1.3</a>) ou depuis un menu contextuel (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_6">paragraphe 2.6</a>).</p>
+ <div><img class="droite" src="images/fen_scan3.png" alt="image fenêtre -Traiter les Champs-"/></div>
+ <p>La fenêtre &laquo;Scanner de Tag et de Nom de Fichier&raquo; est présentée sur la figure ci-contre. Dans un premier temps, vous devez choisir sur quels champs effectuer le traitement. Cette sélection se fait, dans le haut de la fenêtre &laquo;Traiter Champs&raquo;, en cliquant sur les différents boutons correspondant aux différents champs. Les boutons des champs sélectionnés passent alors en grisé. Pour être complet, précisons la signification des deux boutons suivants :</p>
+ <ul class="liste1">
+ <li>bouton <img src="images/bouton_scan5.png" alt="bouton triangle"/> : Inverser la sélection des différents champs.</li>
+ <li>bouton <img src="images/bouton_scan4.png" alt="bouton carre"/> : Sélectionner/Désélectionner tous les champs.</li>
+ </ul>
+ <p>Une fois la sélection effectuée, il est possible de réaliser les traitements :</p>
+ <ul class="liste1">
+ <li>Remplacement de certains caractères (par exemple, élimination des caractères %20 du nom de fichier &#8230;).</li>
+ <li>Modification de la casse (transformation minuscule/majuscule).</li>
+ <li>Suppression de certains caractères en trop.</li>
+ </ul>
+
+ <p> Enfin, Cliquez sur le bouton <img src="images/bouton_scan1.png" alt="bouton porte"/>, lance les traitements de l'ensemble des différents champs des fichiers sélectionnés.</p>
+ <hr class="fin_img"/>
+
+<!-- FIN EDITER/CORRIGER LES TAGS =========================================================-->
+
+ <p class="img_c"><br/><a href="#haut_page">- RETOUR A LA TABLE DES MATIERES -</a></p>
+</body>
+</html>
diff --git a/doc/users_guide_french/USERS-GUIDE-11_fr5.html b/doc/users_guide_french/USERS-GUIDE-11_fr5.html
new file mode 100755
index 0000000..5b95a34
--- /dev/null
+++ b/doc/users_guide_french/USERS-GUIDE-11_fr5.html
@@ -0,0 +1,171 @@
+<!-- ************************************************************************************
+ * USERS-GUIDE-11_fr5.html *
+ * auteur Emmanuel Brun < manub91[at]gmail.com > *
+ * date : 28/12/06 mise en conformité avec W3C xhtml 1.0 strict *
+ * test Firefox + IE6 *
+ * *
+ * Guide de l'utilisateur de EasyTAG (version 1.99.11) *
+ * chapitre 5 - Renommer les fichiers/les répertoires. *
+ * *
+ ************************************************************************************ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang="fr">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Guide de l'utilisateur du logiciel EasyTAG - chapitre 5 - Renommer les fichiers/les répertoires.</title>
+ <link rel="stylesheet" type="text/css" href="USERS-GUIDE.css" />
+</head>
+
+<body>
+ <div><a href="#" name="haut_page"></a></div>
+
+ <h1>Guide de l'utilisateur du logiciel EasyTAG (version 1.99.11)<br/> - chapitre 5 -</h1>
+
+<!-- TABLE DES MATIERES =====================================================================-->
+ <p id="titre_TM">Table des matières.</p>
+ <ul class="TM1">
+ <li><a href="USERS-GUIDE-11_fr1.html">1 - Introduction.</a></li>
+ <li><a href="USERS-GUIDE-11_fr2.html">2 - Description de l'interface.</a></li>
+ <li><a href="USERS-GUIDE-11_fr3.html">3 - Recherche rapide dans votre collection de fichiers audio.</a></li>
+ <li><a href="USERS-GUIDE-11_fr4.html">4 - Editer/corriger les tags.</a></li>
+ <li>
+ <a href="#ch_5">5 - Renommer les fichiers/les répertoires.</a>
+ <ul class="TM2">
+ <li>
+ <a href="#ch_5_1">5.1 - Renommer les fichiers.</a>
+ <ul class="TM3">
+ <li><a href="#ch_5_1_1">5.1.1 - Mode manuel.</a></li>
+ <li><a href="#ch_5_1_2">5.1.2 - Mode automatique via le scanner.</a></li>
+ <li><a href="#ch_5_1_3">5.1.3 - Mode automatique via la base de données CDDB.</a></li>
+ <li><a href="#ch_5_1_4">5.1.4 - Mode automatique via la lecture d'un fichier texte.</a></li>
+ </ul>
+ </li>
+ <li><a href="#ch_5_2">5.2 - Renommer les répertoires.</a></li>
+ <li><a href="#ch_5_3">5.3 - Renommer et déplacer les fichiers dans un répertoire.</a></li>
+ </ul>
+ </li>
+ <li><a href="USERS-GUIDE-11_fr6.html">6 - Autres fonctions.</a></li>
+ <li><a href="USERS-GUIDE-11_fr6.html#ch_7">7 - Pré-requis.</a></li>
+ </ul>
+
+<!-- FIN TABLE DES MATIERES =================================================================-->
+
+<!-- RENOMMER FICHIERS/REPERTOIRES =========================================================-->
+
+ <h2><a name="ch_5" id="ch_5">5 - Renommer les fichiers/les répertoires.</a></h2>
+ <p>EasyTAG offre différents modes pour renommer les fichiers : un mode manuel, un mode automatique via le scanner, un mode automatique via la base de données CDDB et enfin un mode basé sur la lecture d'un fichier texte. Il offre la possibilité de renommer les répertoires contenant les fichiers audio. EasyTAG permet aussi, via le scanner, de renommer et de déplacer automatiquement les fichiers dans un nouveau répertoire. Dans la suite, nous allons décrire la mise en oeuvre de chacun d'entre eux.</p>
+ <h3><a name="ch_5_1" id="ch_5_1">5.1 Renommer les fichiers.</a></h3>
+ <h4><a name="ch_5_1_1" id="ch_5_1_1">5.1.1 - Mode manuel.</a></h4>
+ <p>Ce mode peut être utilisé si vous avez peu de modifications à réaliser (sinon, cela s'avérerait vite fastidieux)</p>
+ <div><img class="droite" src="images/fen_fich.png" alt="image fenêtre Fichier"/></div>
+ <p>Pour renommer manuellement un fichier, il suffit tout simplement de sélectionner ce dernier dans la liste de la fenêtre &laquo;Sélecteur&raquo; (voir le <a href="USERS-GUIDE-11_fr2.html#ch_2_3">paragraphe 2.3</a>) puis de modifier son nom dans la zone de saisie de la fenêtre &laquo;Fichier&raquo; (voir figure). Toutefois, ce nouveau nom de fichier ne sera effectif qu'après avoir sauvegardé le fichier.<br/>Note : Les caractères illégaux (pour les partitions Windows : &#8216;/&#8217;, &#8217;+&#8217; &#8230;) seront automatiquement remplacés à moins que vous n'ayez décoché l'option <span class="entree">Remplacer les caractères illégaux des noms de fichiers (pour Windows et les CD-Rom)</span> de l'onglet &laquo;Paramètres du nom des fichiers&raquo; du menu &laquo;Préférences&raquo;.</p>
+ <hr class="fin_img"/>
+
+ <h4><a name="ch_5_1_2" id="ch_5_1_2">5.1.2 - Mode automatique via le scanner.</a></h4>
+ <p>EasyTAG permet de renommer automatiquement les fichiers à partir des champs d'information du tag. Ce traitement est disponible via le scanner &laquo;Renommer le(s) Fichier(s) et Répertoire(s)&raquo;, accessible depuis le menu &laquo;Fichier&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1_1">paragraphe 2.1.1</a>), le menu &laquo;Scanner&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1_3">paragraphe 2.1.3</a>) ou depuis un menu contextuel (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_6">paragraphe 2.6</a>).</p>
+ <p>La fenêtre du scanner &laquo;Renommer le(s) Fichier(s) et Répertoire(s)&raquo; est présentée sur la figure ci-contre. Sur cette figure, apparaissent les boutons de contrôle suivants :</p>
+ <div><img class="droite" src="images/fen_scan2.png" alt="image fenêtre scanner -Renommer le(s) Fichier(s) et Répertoire(s)-"/></div>
+ <ul class="liste1">
+ <li>bouton <img src="images/bouton_scan1.png" alt="bouton porte"/> : Après la saisie d'un masque, cliquer sur ce bouton lance le traitement automatique des noms de fichiers et répertoire de l'ensemble des fichiers audio sélectionnés.</li>
+ <li>bouton <img src="images/bouton_scan3.png" alt="bouton point d'interrogation"/> : Ouvre/Ferme la fenêtre &laquo;Légende&raquo; (voir figure ci-contre) qui rappelle la correspondance entre code du masque et champ d'information du tag.</li>
+ <li>bouton <img src="images/bouton_scan2.png" alt="bouton masque"/> : Ouvre/Ferme la fenêtre &laquo;Editeur de Masque&raquo; (voir figure ci-contre) qui permet de choisir ou de créer le masque adapté à votre besoin. Elle permet, bien sûr, de sauvegarder ce nouveau masque pour tout traitement ultérieur du même type.</li>
+ <li>bouton <img src="images/bouton_scan7.png" alt="bouton répertoire +"/> : Ajoute au début du masque le chemin du répertoire courant (l'intérêt de ce bouton est discuté dans le <a href="#ch_5_3">paragraphe 5.3</a>).</li>
+ </ul>
+ <p> Le nouveau nom des fichiers étant construit sur la base d'un modèle de masque, la première étape de ce traitement consiste à bien définir ce masque.<br/>Nous voyons, sur la figure ci-contre, qu'un masque est construit à partir d'un certain nombre de codes (%a, %b, %t, &#8230;) dont la signification est précisée dans la fenêtre &laquo;Légende&raquo;. Dans EasyTAG, vous disposez d'une importante liste de modèle de masque (voir fenêtre ci-contre) mais vous pouvez aussi créer et ajouter à cette liste un masque particulier grâce à la fenêtre &laquo;Editeur de masque&raquo;<br/>Pour vous guider dans le choix du masque, EasyTAG affiche immédiatement, en dessous de la zone de saisie du masque de la fenêtre &laquo;Renommer le Fichier et le Répertoire&raquo;, le nouveau nom du fichier.</p>
+ <hr class="fin_img"/>
+
+ <p>Pour mieux comprendre comment utiliser les masques, prenons l'exemple du fichier <span class="entree">01.La_tête_en_arrière_(2004) Comme_un_homme.mp3</span> situé dans le répertoire <span class="entree">/media/musiques/</span>. De plus, supposons que les champs d'information du tag de ce fichier sont correctement renseignés et qu'ils prennent les valeurs données dans le tableau ci-contre.</p>
+ <div class="droite">
+ <table>
+ <tr><th>Code</th><th>Champ du tag</th><th>Valeur extraite</th></tr>
+ <tr><td>%a</td><td>Artiste </td><td>Luke </td></tr>
+ <tr><td>%y</td><td>Année </td><td>2004 </td></tr>
+ <tr><td>%b</td><td>Album </td><td>La tête en arrière </td></tr>
+ <tr><td>%n</td><td>Piste </td><td>01 </td></tr>
+ <tr><td>%t</td><td>Titre </td><td>Comme un homme </td></tr>
+ </table>
+ </div>
+ <p>Sans indication d'un chemin de répertoire en début de masque, le fichier est renommé et reste dans le répertoire courant. Ainsi avec le masque "<span class="entree">%n - %t</span>", le fichier :</p>
+ <ul class="liste1">
+ <li>est renommé : <span class="entree">01 - Comme un homme.mp3</span>,</li>
+ <li>reste dans le répertoire : <span class="entree">/media/musiques/</span>.</li>
+ </ul>
+ <hr class="fin_img"/>
+ <p>Une fois le choix du masque effectué, cliquer sur le bouton <img src="images/bouton_scan1.png" alt="bouton porte"/> permet de lancer alors le traitement automatique de modification du nom des fichiers sur l'ensemble des fichiers selectionnés. Cependant, ces changements de nom ne seront effectifs qu'après avoir sauvegardé ces fichiers.</p>
+ <p class="sans-retrait">Note : Si un chemin est précisé en début de masque, il est alors possible de renommer et de déplacer automatiquement les fichiers dans un répertoire particulier (voir le <a href="#ch_5_3">paragraphe 5.3</a> pour plus de détails).</p>
+
+ <h4><a name="ch_5_1_3" id="ch_5_1_3">5.1.3 - Mode automatique via la base de données CDDB.</a></h4>
+ <p>Dans le <a href="USERS-GUIDE-11_fr4.html#ch_4_3_1">paragraphe 4.3.1</a>, nous avons vu qu'il était très souvent possible, grâce à la base de données CDDB, d'identifier l'album CD audio correspondant à un ensemble de fichiers. Ce résultat permet non seulement de renseigner automatiquement les différents champs d'information du tag des fichiers mais aussi de renseigner automatiquement les noms des fichiers (voir figure ci-dessous).</p>
+ <div class="img_c"><img src="images/fen_cddb1.png" alt="image fenêtre Recherche CDDB"/></div>
+
+ <h4><a name="ch_5_1_4" id="ch_5_1_4">5.1.4 - Mode automatique via la lecture d'un fichier texte.</a></h4>
+ <p>Si les méthodes automatiques ont échoué, il reste toujours possible de mettre à jour les noms des fichiers grâce à la lecture d'un fichier texte. Ce fichier texte doit contenir la liste des noms des fichiers à traiter (dans un ordre identique à celui des fichiers sélectionnés).</p>
+ <p>Avant tout traitement, il faut récupérer ou créer le fichier texte des noms de fichiers audio. Dans le cas du traitement d'un album particulier, il est, par exemple, très facile de récupérer sur internet la liste des noms des pistes d'un CD. Cette méthode permet d'éviter de rentrer à la main les différents noms des pistes et, par la même, les possibles fautes de frappe.</p>
+ <div><img class="droite" src="images/fen_fic_txt.png" alt="image fenêtre -Charger les noms des fichiers à partir d'un fichier TXT-"/></div>
+ <p>Ce traitement est accessible depuis l'entrée <span class="entree">Charger les Noms des fichiers à partir d'un TXT &#8230;</span> du menu &laquo;Divers&raquo; (voir le <a href="USERS-GUIDE-11_fr2.html#ch_2_1_4">paragraphe 2.1.4</a>). La fenêtre correspondante est présentée sur la figure ci-contre.</p>
+ <p>Au départ, il faut entrer le nom du fichier texte et cliquer sur le bouton "Charger" pour lire les données de ce fichier.<br/>Ces données sont alors affichées dans la zone gauche de la fenêtre.<br/>Les noms des fichiers à renseigner sont, par contre, affichés dans la zone droite de la fenêtre.</p>
+ <p>Pour finir, il suffit alors de cliquer sur le bouton "Appliquer" pour renseigner les noms des fichiers avec les valeurs lues dans le fichier texte. Toutefois, le changement de nom ne sera effectif qu'après la sauvegarde de ces fichiers.</p>
+ <hr class="fin_img"/>
+
+ <h3><a name="ch_5_2" id="ch_5_2">5.2 Renommer les répertoires.</a></h3>
+ <div><img class="droite" src="images/fen_rech1.png" alt="image fenêtre - Renommer le répertoire-"/></div>
+ <p>Pour renommer manuellement un répertoire, il vous suffit de cliquer sur l'entrée <span class="entree">Renommer le répertoire ...</span> du menu &laquo;Sélecteur&raquo; (voir le <a href="USERS-GUIDE-11_fr2.html#ch_2_1_2">paragraphe 2.1.2</a>) puis d'entrer le nouveau nom du répertoire dans la zone de saisie (voir figure ci-contre). Le fait de cliquer sur le bouton &laquo;Appliquer&raquo; rend cette modification immédiate et définitive.</p>
+ <p>Vous pouvez aussi renommer le nom du répertoire en utilisant un modèle de masque. Pour cela, il suffit de cocher la case <span class="entree">Utiliser le masque</span> et de saisir un masque particulier ou de choisir un masque dans la liste de masques disponibles. La définition des codes utilisés par le masque est donnée dans le <a href="#ch_5_1_2">paragraphe 5.1.2</a>. Le nom du répertoire construit à partir de ce masque est présenté sous la zone de saisie du masque. Si le nom vous convient, il vous suffit alors de cliquer sur le bouton "Appliquer" pour effectuer la modification.</p>
+ <hr class="fin_img"/>
+
+ <p class="sans-retrait">Note : Contrairement au mode automatique via le scanner (voir le <a href="#ch_5_3">paragraphe 5.3</a>), lorsque le répertoire est renommé manuellement, les différents fichiers restent physiquement dans celui-ci. Le nouveau répertoire contient donc tous les fichiers présents dans l'ancien répertoire (y compris les fichiers non supportés par EasyTAG tels que les fichiers jpeg).</p>
+
+ <h3><a name="ch_5_3" id="ch_5_3">5.3 - Renommer et déplacer les fichiers dans un répertoire.</a></h3>
+ <p>EasyTAG permet, à partir des différents champs d'information du tag, de renommer et de déplacer automatiquement les fichiers dans un répertoire particulier. Ce traitement est disponible via le scanner &laquo;Renommer le(s) Fichier(s) et Répertoire(s)&raquo;, accessible depuis le menu &laquo;Fichier&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1_1">paragraphe 2.1.1</a>), le menu &laquo;Scanner&raquo; (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_1_3">paragraphe 2.1.3</a>) ou depuis un menu contextuel (voir <a href="USERS-GUIDE-11_fr2.html#ch_2_6">paragraphe 2.6</a>).</p>
+ <p>La fenêtre du scanner &laquo;Renommer le(s) Fichier(s) et Répertoire(s)&raquo; est présentée sur la figure ci-contre. Sur cette figure, apparaissent les boutons de contrôle suivants :</p>
+ <div><img class="droite" src="images/fen_scan4.png" alt="image fenêtre -Renommer le(s) Fichier(s) et Répertoire(s)-"/></div>
+ <ul class="liste1">
+ <li>bouton <img src="images/bouton_scan1.png" alt="bouton porte"/> : Après la saisie d'un masque, cliquer sur ce bouton lance le traitement automatique des noms de fichiers et répertoire de l'ensemble des fichiers audio sélectionnés.</li>
+ <li>bouton <img src="images/bouton_scan3.png" alt="bouton point d'interrogation"/> : Ouvre/Ferme la fenêtre &laquo;Légende&raquo; (voir figure ci-contre) qui rappelle la correspondance entre code du masque et champ d'information du tag.</li>
+ <li>bouton <img src="images/bouton_scan2.png" alt="bouton masque"/> : Ouvre/Ferme la fenêtre &laquo;Editeur de Masque&raquo; (voir figure ci-contre) qui permet de choisir ou de créer le masque adapté à votre besoin. Elle permet, bien sûr, de sauvegarder ce nouveau masque pour tout traitement ultérieur du même type.</li>
+ <li>bouton <img src="images/bouton_scan7.png" alt="bouton répertoire +"/> : Ajoute au début du masque le chemin du répertoire courant.</li>
+ </ul>
+ <p>Dans le <a href="#ch_5_1_2">paragraphe 5.1.2</a>, nous avons vu comment renommer automatiquement les fichiers via le scanner sur la base d'un modèle de masque.<br/>Avec ce même scanner, en précisant en début de masque un chemin de répertoire, il est alors possible non seulement de renommer les fichiers mais aussi de les déplacer automatiquement dans un répertoire particulier.</p>
+ <p>La définition du masque constitue la première étape de ce traitement. Pour cela, vous disposez d'une liste de modèles de masque (voir figure ci-contre) mais vous pouvez aussi créer et ajouter à la liste un masque particulier grâce à la fenêtre &laquo;Editeur de masque&raquo;.</p>
+ <p>Pour vous guider dans le choix du masque, EasyTAG affiche, en dessous de la zone de saisie du masque de la fenêtre &laquo;Renommer le Fichier et le Répertoire&raquo;, le nouveau nom du fichier sous la forme "/arborescence du répertoire/nom du fichier".</p>
+ <hr class="fin_img"/>
+
+ <p>Suivant le chemin précisé en début de masque, vous pouvez soit déplacer les fichiers dans un sous répertoire du répertoire courant soit déplacer les fichiers dans un répertoire particulier. Dans le suite de ce paragraphe, nous allons décrire ces deux traitements en prenant l'exemple du fichier <span class="entree">01.La_tête_en_arrière_(2004) Comme_un_homme.mp3</span> situé dans le répertoire <span class="entree">/media/musiques/</span>. De plus, nous supposerons que les champs d'information du tag de ce fichier prennent les valeurs données dans le tableau ci-contre.</p>
+ <div class="droite">
+ <table>
+ <tr><th>Code</th><th>Champ du tag</th><th>Valeur extraite</th></tr>
+ <tr><td>%a</td><td>Artiste </td><td>Luke </td></tr>
+ <tr><td>%y</td><td>Année </td><td>2004 </td></tr>
+ <tr><td>%b</td><td>Album </td><td>La tête en arrière </td></tr>
+ <tr><td>%n</td><td>Piste </td><td>01 </td></tr>
+ <tr><td>%t</td><td>Titre </td><td>Comme un homme </td></tr>
+ </table>
+ </div>
+ <ul class="liste1">
+ <li><span class="entree">Déplacer le fichier dans un sous-répertoire</span> : Pour renommer le fichier et le déplacer dans un sous-répertoire du répertoire courant, il suffit d'indiquer un chemin relatif en début de masque.<br/>Ainsi, avec le masque "<span class="entree">%a/%y - %b/%n - %t</span>", le fichier est :
+ <ul class="liste2">
+ <li>renommé : <span class="entree">01 - Comme un homme.mp3</span>,</li>
+ <li>déplacé dans le répertoire : <span class="entree">/media/musiques/Luke/2004 - La tête en arrière/</span>.</li>
+ </ul>
+ <p>Si ce sous-répertoire n'existe pas, il est bien évidemment crée.</p>
+ </li>
+ <li><span class="entree">Déplacer le fichier dans un répertoire particulier</span> : Pour renommer le fichier et le déplacer dans un répertoire particulier, il suffit d'utiliser un chemin absolu en début de masque. Pour vous simplifier la saisie du chemin, il est possible, en cliquant sur le bouton <img src="images/bouton_scan7.png" alt="bouton répertoire +"/> d'ajouter le chemin courant en début de masque.<br/>Ainsi, avec le masque "<span class="entree">/media/Rock/%a/%y - %b/%n - %t</span>", le fichier est :
+ <ul class="liste2">
+ <li>renommé : <span class="entree">01 - Comme un homme.mp3</span>,</li>
+ <li>déplacé dans le répertoire : <span class="entree">/media/Rock/Luke/2004 - La tête en arrière/</span>.</li>
+ </ul>
+ <p>Si ce répertoire n'existe pas, il est bien évidemment crée.</p>
+ </li>
+ </ul>
+ <p>Une fois le choix du masque effectué, cliquer sur le bouton <img src="images/bouton_scan1.png" alt="bouton porte"/> permet de lancer alors le traitement automatique de modification du nom et de déplacement des fichiers sur l'ensemble des fichiers selectionnés. Cependant, ces changements ne seront effectifs qu'après avoir sauvegardé ces fichiers.</p>
+
+ <p class="sans-retrait"> Note : Contrairement au mode manuel, les fichiers sont physiquement déplacés vers leur nouveau répertoire. De ce fait, les fichiers qui ne sont pas supportés par EasyTAG tels que les fichiers jpeg ne seront pas eux déplacés et resteront donc dans le répertoire d'origine.</p>
+
+<!-- FIN RENOMMER FICHIERS/REPERTOIRES =====================================================-->
+
+ <p class="img_c"><br/><a href="#haut_page">- RETOUR A LA TABLE DES MATIERES -</a></p>
+</body>
+</html>
+
diff --git a/doc/users_guide_french/USERS-GUIDE-11_fr6.html b/doc/users_guide_french/USERS-GUIDE-11_fr6.html
new file mode 100755
index 0000000..7ad21b1
--- /dev/null
+++ b/doc/users_guide_french/USERS-GUIDE-11_fr6.html
@@ -0,0 +1,103 @@
+<!-- ************************************************************************************
+ * USERS-GUIDE-11_fr6.html *
+ * auteur Emmanuel Brun < manub91[at]gmail.com > *
+ * date : 28/12/06 mise en conformité avec W3C xhtml 1.0 strict *
+ * test Firefox + IE6 *
+ * *
+ * Guide de l'utilisateur de EasyTAG (version 1.99.11) *
+ * chapitre 6 - Autres fonctions. *
+ * chapitre 7 - Pré-requis. *
+ * *
+ ************************************************************************************ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang="fr">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Guide de l'utilisateur du logiciel EasyTAG - chapitre 6 et 7 </title>
+ <link rel="stylesheet" type="text/css" href="USERS-GUIDE.css" />
+</head>
+
+<body>
+ <div><a href="#" name="haut_page"></a></div>
+
+ <h1>Guide de l'utilisateur du logiciel EasyTAG (version 1.99.11)<br/> - chapitre 6 et 7 -</h1>
+
+<!-- TABLE DES MATIERES =====================================================================-->
+ <p id="titre_TM">Table des matières.</p>
+ <ul class="TM1">
+ <li><a href="USERS-GUIDE-11_fr1.html">1 - Introduction.</a></li>
+ <li><a href="USERS-GUIDE-11_fr2.html">2 - Description de l'interface.</a></li>
+ <li><a href="USERS-GUIDE-11_fr3.html">3 - Recherche rapide dans votre collection de fichiers audio.</a></li>
+ <li><a href="USERS-GUIDE-11_fr4.html">4 - Editer/corriger les tags.</a></li>
+ <li><a href="USERS-GUIDE-11_fr5.html">5 - Renommer les fichiers/les répertoires.</a></li>
+ <li>
+ <a href="#ch_6">6 - Autres fonctions.</a>
+ <ul class="TM2">
+ <li><a href="#ch_6_1">6.1 - Création d'une liste de lecture M3U.</a></li>
+ <li><a href="#ch_6_2">6.2 - Ecoute des fichiers audio.</a></li>
+ </ul>
+ </li>
+ <li><a href="#ch_7">7 - Pré-requis.</a></li>
+ </ul>
+
+<!-- FIN TABLE DES MATIERES =================================================================-->
+
+<!-- AUTRES FONCTIONS =====================================================================-->
+
+ <h2><a name="ch_6" id="ch_6">6 - Autres fonctions.</a></h2>
+ <h3><a name="ch_6_1" id="ch_6_1">6.1 - Création d'une liste de lecture M3U.</a></h3>
+ <p>Dans EasyTAG vous avez la possibilité de créer une liste de lecture de type m3u directement utilisable par un lecteur de fichiers audio externe (WinAmp, Xmms, Totem &#8230;)</p>
+ <p>Cette fonction est accessible depuis le menu &laquo;Divers&raquo; (voir le <a href="USERS-GUIDE-11_fr2.html#ch_2_1_4">paragraphe 2.1.4</a>). La fenêtre correspondante est présentée ci-contre.</p>
+ <div><img class="droite" src="images/fen_playlist.png" alt="image fenêtre -Générer une liste de lecture-"/></div>
+ <p>Pour que la liste de lecture ne contienne seulement que les fichiers sélectionnés, il faut faire attention que la case <span class="entree">Inclure seulement les fichiers sélectionnés</span> soit bien cochée. En effet, si cette case n'est pas cochée, la liste de lecture comprend alors l'ensemble de tous les fichiers audio présents dans le répertoire courant (ce qui peut représenter un nombre important de fichiers).</p>
+ <p>De plus, nous voyons que deux options font appel à certains codes (%a, %b, &#8230;). Ces codes sont les mêmes que ceux utilisés pour la fonction scanner (voir, par exemple, <a href="USERS-GUIDE-11_fr4.html#ch_4_2">paragraphe 4.2</a>). La signification des quelques codes visibles sur la figure est donnée dans le tableau ci-dessous.</p>
+ <div><table class="tab_c">
+ <tr><th>Code</th><th>Champ du tag</th></tr>
+ <tr><td>%a</td><td>Artiste </td></tr>
+ <tr><td>%b</td><td> Album </td></tr>
+ <tr><td>%n</td><td> Numéro de piste </td></tr>
+ <tr><td>%l</td><td> Nbre total de pistes </td></tr>
+ <tr><td>%t</td><td> Titre </td></tr>
+ </table></div>
+ <p class="sans-retrait">Une fois les différentes options choisies, il suffit, pour créer la liste de lecture, de cliquer alors sur le bouton &laquo;Ecrire&raquo;.</p>
+ <hr class="fin_img"/>
+
+ <h3><a name="ch_6_2" id="ch_6_2">6.2 - Ecoute des fichiers audio.</a></h3>
+ <p>EasyTAG permet la lecture des fichiers audio grâce au lancement depuis le logiciel d'une application externe de lecture de fichiers audio. Ceci peut être réalisé de trois façons différentes :</p>
+ <ul class="liste1">
+ <li><span class="entree">Lancer Lecteur Audio</span> : Cette entrée du menu &laquo;Divers&raquo; (voir le <a href="USERS-GUIDE-11_fr2.html#ch_2_1_4">paragraphe 2.1.4</a>) permet de lancer le lecteur audio par défaut. Ce lecteur peut être défini dans l'onglet &laquo;Divers&raquo; du menu &laquo;Préférences&raquo; (voir le <a href="USERS-GUIDE-11_fr2.html#ch_2_1_5">paragraphe 2.1.5</a>).</li>
+ </ul>
+ <div><img class="droite" src="images/fen_lect1.png" alt="image fenêtre -Ouvrir le fichier avec-"/></div>
+ <ul class="liste1">
+ <li><span class="entree">Ouvrir le(s) Fichier(s) avec &#8230;</span> : Cette entrée du menu &laquo;Fichier&raquo; (voir le <a href="USERS-GUIDE-11_fr2.html#ch_2_1_1">paragraphe 2.1.1</a>) ouvre une fenêtre (voir figure ci-contre) qui permet de saisir l'application externe à lancer. Cette application traite l'ensemble des fichiers audio sélectionnés. Pour lancer l'application, il faut cliquer sur le bouton &laquo;Exécuter&raquo;.<br/>Dans le cas présent, l'application lancée 'Xmms -e' permet d'écouter les fichiers sélectionnés avec Xmms. De plus, l'option choisie permet de placer ces fichiers à la suite des fichiers audio déja en écoute.</li>
+ </ul>
+ <hr class="fin_img"/>
+ <div><img class="droite" src="images/fen_lect2.png" alt="image fenêtre -Parcourir le répertoire avec-"/></div>
+ <ul class="liste1">
+ <li><span class="entree">Parcourir le Répertoire avec &#8230;</span> : Cette entrée du menu &laquo;Sélecteur&raquo; (voir le <a href="USERS-GUIDE-11_fr2.html#ch_2_1_2">paragraphe 2.1.2</a>) ouvre une fenêtre (voir figure ci-contre) qui permet de saisir l'application externe à lancer. Cette application traite l'ensemble des fichiers audio présents dans le répertoire courant. Pour lancer l'application, il faut cliquer sur le bouton &laquo;Exécuter&raquo;.<br/>Dans le cas présent, l'application lancée 'Xmms -p' permet d'écouter tous les fichiers avec Xmms.</li>
+ </ul>
+ <hr class="fin_img"/>
+
+<!-- FIN AUTRES FONCTIONS =================================================================-->
+
+<!-- PRE-REQUIS =============================================================================-->
+
+ <h2><a name="ch_7" id="ch_7">7 - Pré-requis.</a></h2>
+ <p>Pour fonctionner, EasyTAG doit disposer des librairies suivantes :</p>
+ <ul class="liste1">
+ <li>GTK 2.4,</li>
+ <li>id3lib pour les fichiers MP3,</li>
+ <li>libogg,</li>
+ <li>libvorbis pour les fichiers Ogg Vorbis,</li>
+ <li>libFLAC (en complément de libogg and libvorbis) pour les fichiers FLAC Vorbis,</li>
+ <li>mpeg4ip pour les fichiers MP4.</li>
+ </ul>
+
+<!-- FIN PRE-REQUIS =========================================================================-->
+
+ <p class="img_c"><br/><a href="#haut_page">- RETOUR A LA TABLE DES MATIERES -</a></p>
+</body>
+</html>
+
diff --git a/doc/users_guide_french/USERS-GUIDE.css b/doc/users_guide_french/USERS-GUIDE.css
new file mode 100755
index 0000000..1deba45
--- /dev/null
+++ b/doc/users_guide_french/USERS-GUIDE.css
@@ -0,0 +1,144 @@
+/************************************************************************************
+ * USERS-GUIDE.css *
+ * auteur Emmanuel Brun < manub91[at]gmail.com > *
+ * date : 28/12/06 mise en conformité avec W3C xhtml 1.0 strict *
+ * test Firefox + IE6 *
+ * *
+ * Fichier CSS du Guide de l'utilisateur de EasyTAG (version 1.99.11) *
+ * *
+ ************************************************************************************/
+
+ body {
+ font-family: Verdana, "Trebuchet MS", Arial, sans-serif;
+ margin: 0;
+ padding: 0 30px 0 30px;
+ background-color: #FDFDE7;
+ font-size: 0.9em;
+ line-height: 1.5em;
+ }
+
+ /* LISTES */
+ /* ====== */
+ /* Table des matières */
+ .TM1 li {
+ margin-top:0.5em;
+ margin-left: 3em;
+ list-style-type: none;
+ list-style-position: outside;
+ text-indent: 0em;
+ line-height: 1.5em;
+ }
+
+ .TM2 li {
+ margin-top:0em;
+ margin-left: 3em;
+ list-style-type: none;
+ list-style-position: outside;
+ text-indent: 0em;
+ line-height: 1.5em;
+ }
+
+ .TM3 li {
+ margin-top:0em;
+ margin-left: 3em;
+ list-style-type: none;
+ list-style-position: outside;
+ text-indent: 0em;
+ line-height: 1.5em;
+ }
+
+ /* Liste - paragraphe */
+ .liste1 li {
+ margin-top:0.5em;
+ margin-left: 3em;
+ list-style-type: disc;
+ list-style-position: outside;
+ text-indent: 0em;
+ line-height: 1.5em;
+ }
+
+ .liste2 li {
+ margin-top:0em;
+ margin-left: 3em;
+ list-style-type: circle;
+ list-style-position: outside;
+ text-indent: 0em;
+ line-height: 1.5em;
+ }
+
+ /* Chapitre */
+ h1 {
+ font-size: 1.5em;
+ font-weight: bold;
+ text-align: center;
+ line-height: 1.5em;
+ border-top: 1px solid #CCCCCC;
+ border-bottom: 1px solid #CCCCCC;
+ border-left: 1px solid #CCCCCC;
+ border-right: 1px solid #CCCCCC;
+ color: blue;
+ background-color: #D2E6FF;
+ }
+ h2 {
+ font-size: 1.1em;
+ text-decoration: none;
+ text-indent: 0em;
+ margin-top: 2em;
+ border-top: 1px solid #CCCCCC;
+ border-bottom: 1px solid #CCCCCC;
+ border-left: 1px solid #CCCCCC;
+ border-right: 1px solid #CCCCCC;
+ color: blue;
+ background-color: #D2E6FF;
+ }
+ h3 {
+ font-size: 1.1em;
+ text-decoration: none;
+ margin-top: 1.5em;
+ margin-left: 2em;
+ color: blue;
+ }
+ h4 {
+ font-size: 1.1em;
+ text-decoration: none;
+ margin-top: 1.5em;
+ margin-left: 5em;
+ color: blue;
+ }
+
+ p { text-align: justify; text-indent: 2em; line-height: 1.5em; }
+
+ .sans-retrait { text-align: justify; text-indent: 0em; }
+
+ /* CARACTERES */
+ /* ========== */
+ #titre_TM { font-size: 1.5em; color: blue; }
+
+ .entree { font-weight: bold; }
+
+ .souligne { text-decoration: underline; }
+
+
+ /* TABLEAU */
+ /* ======= */
+ table { border: 1px solid #666666; margin: 0px; padding: 0px; }
+
+ th { background-color: #CCCCCC; border: 1px solid; font-size: 0.8em; text-align: center; }
+
+ td { background-color: #F9F9F9; border: 1px solid #CECECE; font-size: 0.8em; text-align: center; }
+
+ /* IMAGES */
+ /* ====== */
+ .img_c { margin-top: 2em; margin-bottom:2em; text-align: center; } /* image centree */
+
+ .droite { margin-bottom: 1em; margin-left: 2em; margin-right: 0; float: right; } /* image à droite */
+
+ .fin_img { clear: both; visibility: hidden; } /* cale les paragraphes sur les images */
+
+ /* LIENS */
+ /* ===== */
+ a { text-decoration: none; }
+
+ a:hover { background-color: #E8F8FC; color: #FF02F5; }
+
+ .tab_c {margin: 1em auto 1em auto; }
diff --git a/doc/users_guide_french/images/bouton_arbo.png b/doc/users_guide_french/images/bouton_arbo.png
new file mode 100755
index 0000000..0d0344d
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_arbo.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_img1.png b/doc/users_guide_french/images/bouton_img1.png
new file mode 100755
index 0000000..310d85f
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_img1.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_img2.png b/doc/users_guide_french/images/bouton_img2.png
new file mode 100755
index 0000000..c32978b
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_img2.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_img3.png b/doc/users_guide_french/images/bouton_img3.png
new file mode 100755
index 0000000..611c362
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_img3.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_scan1.png b/doc/users_guide_french/images/bouton_scan1.png
new file mode 100755
index 0000000..817806e
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_scan1.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_scan2.png b/doc/users_guide_french/images/bouton_scan2.png
new file mode 100755
index 0000000..6d0b22c
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_scan2.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_scan3.png b/doc/users_guide_french/images/bouton_scan3.png
new file mode 100755
index 0000000..12c1c13
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_scan3.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_scan4.png b/doc/users_guide_french/images/bouton_scan4.png
new file mode 100755
index 0000000..2d78847
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_scan4.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_scan5.png b/doc/users_guide_french/images/bouton_scan5.png
new file mode 100755
index 0000000..82bf213
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_scan5.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_scan6.png b/doc/users_guide_french/images/bouton_scan6.png
new file mode 100755
index 0000000..5ac656c
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_scan6.png
Binary files differ
diff --git a/doc/users_guide_french/images/bouton_scan7.png b/doc/users_guide_french/images/bouton_scan7.png
new file mode 100755
index 0000000..fe49ce3
--- /dev/null
+++ b/doc/users_guide_french/images/bouton_scan7.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_boutons.png b/doc/users_guide_french/images/fen_boutons.png
new file mode 100755
index 0000000..d9f3782
--- /dev/null
+++ b/doc/users_guide_french/images/fen_boutons.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_cddb1.png b/doc/users_guide_french/images/fen_cddb1.png
new file mode 100755
index 0000000..a463006
--- /dev/null
+++ b/doc/users_guide_french/images/fen_cddb1.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_cddb2.png b/doc/users_guide_french/images/fen_cddb2.png
new file mode 100755
index 0000000..6ff4dda
--- /dev/null
+++ b/doc/users_guide_french/images/fen_cddb2.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_fic_txt.png b/doc/users_guide_french/images/fen_fic_txt.png
new file mode 100755
index 0000000..d9aec03
--- /dev/null
+++ b/doc/users_guide_french/images/fen_fic_txt.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_fich.png b/doc/users_guide_french/images/fen_fich.png
new file mode 100755
index 0000000..8e0379a
--- /dev/null
+++ b/doc/users_guide_french/images/fen_fich.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_lect1.png b/doc/users_guide_french/images/fen_lect1.png
new file mode 100755
index 0000000..9f0f284
--- /dev/null
+++ b/doc/users_guide_french/images/fen_lect1.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_lect2.png b/doc/users_guide_french/images/fen_lect2.png
new file mode 100755
index 0000000..7ed442a
--- /dev/null
+++ b/doc/users_guide_french/images/fen_lect2.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_playlist.png b/doc/users_guide_french/images/fen_playlist.png
new file mode 100755
index 0000000..dd538e2
--- /dev/null
+++ b/doc/users_guide_french/images/fen_playlist.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_rech1.png b/doc/users_guide_french/images/fen_rech1.png
new file mode 100755
index 0000000..7404e93
--- /dev/null
+++ b/doc/users_guide_french/images/fen_rech1.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_scan1.png b/doc/users_guide_french/images/fen_scan1.png
new file mode 100755
index 0000000..132e83c
--- /dev/null
+++ b/doc/users_guide_french/images/fen_scan1.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_scan2.png b/doc/users_guide_french/images/fen_scan2.png
new file mode 100755
index 0000000..705e518
--- /dev/null
+++ b/doc/users_guide_french/images/fen_scan2.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_scan3.png b/doc/users_guide_french/images/fen_scan3.png
new file mode 100755
index 0000000..d34cef5
--- /dev/null
+++ b/doc/users_guide_french/images/fen_scan3.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_scan4.png b/doc/users_guide_french/images/fen_scan4.png
new file mode 100755
index 0000000..5eaceac
--- /dev/null
+++ b/doc/users_guide_french/images/fen_scan4.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_sel1.png b/doc/users_guide_french/images/fen_sel1.png
new file mode 100755
index 0000000..ec31e39
--- /dev/null
+++ b/doc/users_guide_french/images/fen_sel1.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_sel2.png b/doc/users_guide_french/images/fen_sel2.png
new file mode 100755
index 0000000..7667254
--- /dev/null
+++ b/doc/users_guide_french/images/fen_sel2.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_sel3.png b/doc/users_guide_french/images/fen_sel3.png
new file mode 100755
index 0000000..bf61edd
--- /dev/null
+++ b/doc/users_guide_french/images/fen_sel3.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_tag_bout1.png b/doc/users_guide_french/images/fen_tag_bout1.png
new file mode 100755
index 0000000..d028421
--- /dev/null
+++ b/doc/users_guide_french/images/fen_tag_bout1.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_tag_bout2.png b/doc/users_guide_french/images/fen_tag_bout2.png
new file mode 100755
index 0000000..bf50fea
--- /dev/null
+++ b/doc/users_guide_french/images/fen_tag_bout2.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_tag_gen.png b/doc/users_guide_french/images/fen_tag_gen.png
new file mode 100755
index 0000000..b3a9b96
--- /dev/null
+++ b/doc/users_guide_french/images/fen_tag_gen.png
Binary files differ
diff --git a/doc/users_guide_french/images/fen_tag_img.png b/doc/users_guide_french/images/fen_tag_img.png
new file mode 100755
index 0000000..ddeb5b2
--- /dev/null
+++ b/doc/users_guide_french/images/fen_tag_img.png
Binary files differ
diff --git a/doc/users_guide_french/images/interface.png b/doc/users_guide_french/images/interface.png
new file mode 100755
index 0000000..6375f19
--- /dev/null
+++ b/doc/users_guide_french/images/interface.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_context1.png b/doc/users_guide_french/images/menu_context1.png
new file mode 100755
index 0000000..30c0ac8
--- /dev/null
+++ b/doc/users_guide_french/images/menu_context1.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_context2.png b/doc/users_guide_french/images/menu_context2.png
new file mode 100755
index 0000000..959e229
--- /dev/null
+++ b/doc/users_guide_french/images/menu_context2.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_context3.png b/doc/users_guide_french/images/menu_context3.png
new file mode 100755
index 0000000..6c4218c
--- /dev/null
+++ b/doc/users_guide_french/images/menu_context3.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_div.png b/doc/users_guide_french/images/menu_div.png
new file mode 100755
index 0000000..c7c1b64
--- /dev/null
+++ b/doc/users_guide_french/images/menu_div.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_fic.png b/doc/users_guide_french/images/menu_fic.png
new file mode 100755
index 0000000..8dd1147
--- /dev/null
+++ b/doc/users_guide_french/images/menu_fic.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_pref.png b/doc/users_guide_french/images/menu_pref.png
new file mode 100755
index 0000000..7e8e722
--- /dev/null
+++ b/doc/users_guide_french/images/menu_pref.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_recherche.png b/doc/users_guide_french/images/menu_recherche.png
new file mode 100755
index 0000000..ee368c7
--- /dev/null
+++ b/doc/users_guide_french/images/menu_recherche.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_recherche1.png b/doc/users_guide_french/images/menu_recherche1.png
new file mode 100755
index 0000000..cddbe7c
--- /dev/null
+++ b/doc/users_guide_french/images/menu_recherche1.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_recherche2.png b/doc/users_guide_french/images/menu_recherche2.png
new file mode 100755
index 0000000..da8cebe
--- /dev/null
+++ b/doc/users_guide_french/images/menu_recherche2.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_scan.png b/doc/users_guide_french/images/menu_scan.png
new file mode 100755
index 0000000..a88d1cc
--- /dev/null
+++ b/doc/users_guide_french/images/menu_scan.png
Binary files differ
diff --git a/doc/users_guide_french/images/menu_sel.png b/doc/users_guide_french/images/menu_sel.png
new file mode 100755
index 0000000..c1ea0e3
--- /dev/null
+++ b/doc/users_guide_french/images/menu_sel.png
Binary files differ
diff --git a/doc/users_guide_french/images/sousmenu_fic1.png b/doc/users_guide_french/images/sousmenu_fic1.png
new file mode 100755
index 0000000..b8cdb97
--- /dev/null
+++ b/doc/users_guide_french/images/sousmenu_fic1.png
Binary files differ
diff --git a/doc/users_guide_french/images/sousmenu_fic2.png b/doc/users_guide_french/images/sousmenu_fic2.png
new file mode 100755
index 0000000..f527825
--- /dev/null
+++ b/doc/users_guide_french/images/sousmenu_fic2.png
Binary files differ
diff --git a/doc/users_guide_german/bedienung1.htm b/doc/users_guide_german/bedienung1.htm
new file mode 100755
index 0000000..c205bd9
--- /dev/null
+++ b/doc/users_guide_german/bedienung1.htm
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Bedienung</title>
+<link href="easy.css" rel="stylesheet" type="text/css" />
+<link rel="icon" href="images/EasyTAG.png" type="image/png">
+</head>
+<body>
+<div style="margin:50px;" align="center">[<a href="einleitung.htm">Über</a>] - [<a href="bedienung1.htm#browser">Browser</a>] - [<a href="bedienung1.htm#dateiliste">Dateiliste</a>] - [<a href="bedienung1.htm#eigenschaftenfeld">Eigenschaftenfeld</a>] - [<a href="bedienung2.htm#playlist">Playlistgenerator</a>] - [<a href="bedienung2.htm#such">Suchfenster</a>]</div>
+<table align="center" width="700" name="Das Hauptfenster" title="Das Hauptfenster" border="0" cellspacing="3" cellpadding="3">
+<tbody><tr><td height="27">
+<div class="anders">Das Hauptfenster</div>
+</td></tr>
+
+<tr><td bgcolor="#ffffff">
+<p><img src="images/t_easytag.jpg" width="311" height="150" border="0" alt="Das Hauptfenster" align="right" />
+Das Hauptfenster enthält drei Bereiche:</p>
+<ul>
+<li>Der Browser</li>
+<lI>Die Dateiliste</li>
+<li>Das Eigenschaftenfeld</li>
+</ul>
+</td></tr></tbody></table>
+
+
+<table align="center" width="700" name="Der Browser" title="Der Browser" border="0" cellspacing="3" cellpadding="3">
+<tbody><tr><td height="27"><a name="browser"></a>
+<div class="anders">Der Browser</div>
+</td> </tr>
+<tr><td bgcolor="#ffffff">
+<p><img style="margin-right:20px;" src="images/treeview.png" width="180" height="227" border="0" alt="Brwoser" name="Browser" align="left" />
+Im Browser kann man schnell zwischen den Verzeichnissen wechseln und zu den zu bearbeitenden Dateien gelangen. Wenn die Option "<i>Dursuche Unterverzeichnisse</i>" aktiviert ist, sollte man bei großen Verezeichnissen nicht die Ordnersymbole anklicken, da hier jedesmal die gesamten Unterverzeichnisse durchsucht werden, was unter Umständen sehr lange dauert. Stattdessen sollte man nur das Plus - Symbol neben dem Ordnersymbol anklicken um dann das gewünschte Unterverzeichnis zu erreichen.</p>
+</td></tr></tbody></table>
+
+<table align="center" width="700" name="Die Dateiliste" title="Die Dateiliste" border="0" cellspacing="3" cellpadding="3">
+<tbody><tr><td height="27"><a name="dateiliste"></a>
+<div class="anders">Die Dateiliste</div>
+</td></tr>
+<tr><td bgcolor="#ffffff">
+<p><img style="margin-left:20px;" src="images/filelist.png" width="173" height="225" alt="Dateiliste" name="Dateiliste" align="right" />
+Hier werden alle eingelesenen Musikstücke angezeigt. Es werden nur unterstützte Dateitypen aufgelistet. In der Dateiliste kann man einzelne Einträge auswählen, deren Informationen anzeigen und verändern. Wenn sich die Liste über mehrere Verzeichnisse erstreckt, werden die Dateien der einzelnen Verzeichnisse jeweils mit einem andersfarbigen Hintergrund <span style="background-color:#deeeff;">hervorgehoben</span>. Veränderte Einträge sind <span style="color:red;">rot</span>.
+</td></tr></tbody></table>
+
+<table align="center" width="700" name="Das Eigenschaftenfeld" title="Das Eigenschaftenfeld" border="0" cellspacing="3" cellpadding="3">
+<tbody><tr><td height="27"><a name="eigenschaftenfeld"></a>
+<div class="anders">Das Eigenschaftenfeld</div>
+</td></tr>
+<tr><td bgcolor="#ffffff">
+<p><img style="margin-right:20px;" src="images/eigensch.png" alt="Eigenschaftenfeld" align="left" />
+Im Eigenschaftenfeld werden alle vorhandenen Informationen der Datei angezeigt. Hier können die einzelnen Tagfelder bearbeitet werden. Wenn man eines der kleinen Quadrate auf der rechten Seite anklickt, bekommen alle Dateien im aktuellen Verzeichnis den Wert der links vom Quadrat eingetragen ist. Bsp. Sollen alle Lieder das selbe im Feld "Album" stehen haben, klicke man einmal auf das Quadrat rechts daneben und alle in der Dateiliste angezeigten Titel sind auf ein Album getrimmt.</p>
+</td></tr></tbody></table>
+<div style="height:250px;"></div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/users_guide_german/bedienung2.htm b/doc/users_guide_german/bedienung2.htm
new file mode 100755
index 0000000..621eb0b
--- /dev/null
+++ b/doc/users_guide_german/bedienung2.htm
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Bedienung</title>
+<link href="easy.css" rel="stylesheet" type="text/css" />
+<link rel="icon" href="images/EasyTAG.png" type="image/png">
+</head>
+<body>
+<div style="margin:50px;" align="center">[<a href="einleitung.htm">Über</a>] - [<a href="bedienung1.htm#browser">Browser</a>] - [<a href="bedienung1.htm#dateiliste">Dateiliste</a>] - [<a href="bedienung1.htm#eigenschaftenfeld">Eigenschaftenfeld</a>] - [<a href="bedienung2.htm#playlist">Playlistgenerator</a>] - [<a href="bedienung2.htm#such">Suchfenster</a>]</div>
+<table align="center" width="700" name="Der Playlistgenerator" title="Der Playlistgenerator" border="0" cellspacing="3" cellpadding="3">
+<tbody><tr><td height="27"><a name="playlist"></a>
+<div class="anders">Der Playlistgenerator</div>
+</td></tr>
+
+<tr><td bgcolor="#ffffff">
+<p><img style="margin-right:20px;" src="images/playlist.png" width="413" height="353" alt="Der Playlistgenerator" name="Der Playlistgenerator" align="left" />
+Der Playlistgenerator erstellt Listen aller Lieder im aktuell ausgewählten Verzeichnis und allen Unterverzeichnissen (wenn die Option <i>Unterverzeichnisse durchsuchen</i> aktiviert ist). Die Liste wird im gewählten Verzeichnis abgelegt. (In der Statuszeile werden alle Aktionen bekanntgegeben)<br>
+Beim Schreiben der Liste hat man die Möglichkeit den Inhalt derselben selbst zu bestimmen. Als Vorgabe hat man die Zeile <div style="margin:15px;"><tt>"%n/%l - %a - %b - %t (%y)"</tt></div> zur Verfügung, was soviel heißt wie: Stücknummer/Anzahl - Künstler - Album - Titel (Jahr)".</p>
+<br>
+<p><br><br>Hier die Bedeutung der einzelnen Abkürzungen:
+<ul>
+<li>%t - Titel</li>
+<li>%a - Künstler</li>
+<li>%b - Album</li>
+<li>%y - Jahr</li>
+<li>%g - Genre</li>
+<li>%n - Stück</li>
+<li>%l - Anzahl von Stücken</li>
+<li>%c - Kommentar</li>
+<li>%i - wird ignoriert</li>
+</ul></p>
+</td></tr></tbody></table>
+
+<table align="center" width="700" name="Die Suchmaschine" title="Die Suchmaschine" border="0" cellspacing="3" cellpadding="3">
+<tbody><tr><td height="27"><a name="such"></a>
+<div class="anders">Die Suchmaschine</div>
+</td></tr>
+<tr><td bgcolor="#ffffff">
+<p><img style="margin-left:20px;" src="images/search.png" width="506" height="262" alt="Suchmaschine" name="Suchmaschine" align="right" />In dem Suchfenster können alle Lieder, die sich gerade im Speicher befinden (also im gewählten Verzeichnis und in ev. eingescannten Unterverzeichnissen) nach Suchbegriffen gefiltert werden. Wenn man ein Ergebnis einmal anklickt, springt der Focus in der <a href="bedienung1.htm#dateiliste">Dateiliste</a> zum gewählten Eintrag und man kann ihn bearbeiten/abspielen/was auch immer.</p>
+</td></tr></tbody></table>
+<div style="height:250px;"></div>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/users_guide_german/easy.css b/doc/users_guide_german/easy.css
new file mode 100755
index 0000000..9ea6959
--- /dev/null
+++ b/doc/users_guide_german/easy.css
@@ -0,0 +1,10 @@
+body { background-color:#f0f0ff; color:#000000; margin-left:10px; margin-right:20px; }
+* { font-face:lucida, helvetica, sans-serif; }
+
+a:link { Color:#0000ee; Text-Decoration:none; }
+a:visited { Color:#551a8b; Text-Decoration:none; }
+a:active { Color:#ff0000; Text-Decoration:none; }
+a:hover { Color:#0000ff; Text-Decoration:underline; }
+table { background-color:#ccccff; }
+
+.anders { color:#000066; font-weight:bolder; font-size:larger; text-align:center; }
diff --git a/doc/users_guide_german/einleitung.htm b/doc/users_guide_german/einleitung.htm
new file mode 100755
index 0000000..fa815ca
--- /dev/null
+++ b/doc/users_guide_german/einleitung.htm
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Einleitung</title>
+<link href="easy.css" rel="stylesheet" type="text/css" />
+<link rel="icon" href="images/EasyTAG.png" type="image/png">
+</head>
+<body>
+<div style="margin:50px;" align="center">[<a href="einleitung.htm">Über</a>] - [<a href="bedienung1.htm#browser">Browser</a>] - [<a href="bedienung1.htm#dateiliste">Dateiliste</a>] - [<a href="bedienung1.htm#eigenschaftenfeld">Eigenschaftenfeld</a>] - [<a href="bedienung2.htm#playlist">Playlistgenerator</a>] - [<a href="bedienung2.htm#such">Suchfenster</a>]</div>
+
+<table align="center" width="700" border="0" cellpadding="3" cellspacing="3">
+<tr><td bgcolor="#ffffff">
+<p>Easytag ist ein Werkzeug zum Anschauen, Editieren und Schreiben von Tags Ihrer MP3-, MP2-, FLAC- und OGG-Dateien. Seine einfache und hübsche GTK+ - Oberfläche macht das Taggen einfacher.</p>
+</td></tr></table>
+<br>
+
+
+<table align="center" width="700" border="0" cellspacing="3" cellpadding="3">
+<tbody><tr><td height="27">
+<div class="anders">Easytag kann:</div>
+</td></tr>
+
+<tr><td bgcolor="#ffffff">
+<ul>
+<li>Den Tag von MP3, MP2, <a href="http://flac.sourceforge.net" target="_neu">FLAC</a> Dateien (mit ID3v2.2 und v1.x) und natürlich <a href="http://www.vorbis.com" target="_neu">OGG's</a> betrachten, Editieren und schreiben.</li>
+<li>Automatisches Tagging: Anhand von Datei- und Verzeichnisnamen können Tags mit Hilfe von Masken automatisch geschrieben werden.</li>
+<li>Umbenennen von Dateien anhand des Tags oder einer Textdatei (mit Hilfe von Masken)</li>
+<li>Alle Dateien des aktuellen Verzeichnisses bearbeiten</li>
+<li>Durch die Verzeichnisstruktur Browsen</li>
+<li>Rekursives Taggen, Verschieben, Umbenennen, Speichern, ...</li>
+<li>Bestimmte Felder (Künstler, Titel, ...) auf alle gewünschten Dateien anwenden>/li>
+<li>Lesen von Dateiinformationen (Bitrate, Zeit, ...) und Anzeigen derselben</li>
+<li>Automatische Vervollständigung von unvollständigen Datumsangaben</li>
+<li>Letzte Änderungen rückgängig machen (und wiederholen)</li>
+<li>Groß/Kleinschreibung im Tag und im Dateinamen anpassen</li>
+<li>Dateien und Verzeichnisse mit anderen Programmen öffnen</li>
+<li>Die CDDB - Datenbank abfragen (über http)</li>
+<li>Französisch, Deutsch, Russisch, Ungarisch, Schwedisch, Italienisch, Japanisch, Ukrainisch, Tschechisch, Spanisch, Polnisch und Romanische Sprachen</li>
+</ul>
+</td></tr></tbody></table>
+
+
+
+<table align="center" width="700" border="0" cellspacing="3" cellpadding="3">
+<tbody> <tr> <td height="27">
+<div class="anders">Easytag hat:</div>
+</td> </tr>
+<tr><td bgcolor="#ffffff">
+<ul>
+<li>Einen <a href="bedienung1.htm#browser">Browser</a> in Baumstrukur</li>
+<li>Eine <a href="bedienung1.htm#dateiliste">Dateiliste</a> zum Auswählen</li>
+<li>Einen <a href="bedienung2.htm#playlist">Playlistgenerator</a></li>
+<li>Eine <a href="bedienung2.htm#such">Suchmaschine</a></li>
+<li>Eine einfache Oberfläche</li>
+<li>Eine Menüleiste und Lesezeichen</li>
+<li>Statusmeldungen in der Statusleiste</li>
+</ul>
+</td></tr></tbody></table>
+
+</body>
+</html> \ No newline at end of file
diff --git a/doc/users_guide_german/images/EasyTAG.png b/doc/users_guide_german/images/EasyTAG.png
new file mode 100755
index 0000000..fd132d3
--- /dev/null
+++ b/doc/users_guide_german/images/EasyTAG.png
Binary files differ
diff --git a/doc/users_guide_german/images/eigensch.png b/doc/users_guide_german/images/eigensch.png
new file mode 100755
index 0000000..71d7edc
--- /dev/null
+++ b/doc/users_guide_german/images/eigensch.png
Binary files differ
diff --git a/doc/users_guide_german/images/filelist.png b/doc/users_guide_german/images/filelist.png
new file mode 100755
index 0000000..237198e
--- /dev/null
+++ b/doc/users_guide_german/images/filelist.png
Binary files differ
diff --git a/doc/users_guide_german/images/playlist.png b/doc/users_guide_german/images/playlist.png
new file mode 100755
index 0000000..18c491e
--- /dev/null
+++ b/doc/users_guide_german/images/playlist.png
Binary files differ
diff --git a/doc/users_guide_german/images/search.png b/doc/users_guide_german/images/search.png
new file mode 100755
index 0000000..8910228
--- /dev/null
+++ b/doc/users_guide_german/images/search.png
Binary files differ
diff --git a/doc/users_guide_german/images/t_easytag.jpg b/doc/users_guide_german/images/t_easytag.jpg
new file mode 100755
index 0000000..50c00c1
--- /dev/null
+++ b/doc/users_guide_german/images/t_easytag.jpg
Binary files differ
diff --git a/doc/users_guide_german/images/treeview.png b/doc/users_guide_german/images/treeview.png
new file mode 100755
index 0000000..3407b8c
--- /dev/null
+++ b/doc/users_guide_german/images/treeview.png
Binary files differ
diff --git a/doc/vorbis/v-comment.html b/doc/vorbis/v-comment.html
new file mode 100755
index 0000000..4089d81
--- /dev/null
+++ b/doc/vorbis/v-comment.html
@@ -0,0 +1,194 @@
+<HTML><HEAD><TITLE>xiph.org: Ogg Vorbis documentation</TITLE>
+<BODY bgcolor="#ffffff" text="#202020" link="#006666" vlink="#000000">
+<nobr><img src="white-ogg.png"><img src="vorbisword2.png"></nobr><p>
+
+
+<h1><font color=#000070>
+Ogg Vorbis comment field specification
+</font></h1>
+
+<em>Last update to this document: January 19, 2001</em><p>
+
+The text comment header is the second (of three) header packets that
+begin a Vorbis bitstream. It is meant for short, text comments,
+not arbitrary metadata; arbitrary metadata belongs in a
+metadata stream (usually an XML stream type).<p>
+
+<h2>Comment use rationale</h2>
+
+The comment field is meant to be used much like someone jotting a
+quick note on the bottom of a CDR. It should be a little information to
+remember the disc by and explain it to others; a short, to-the-point
+text note that need not only be a couple words, but isn't going to be
+more than a short paragraph. The essentials, in other words, whatever
+they turn out to be, eg:
+
+<blockquote>
+"Honest Bob and the Factory-to-Dealer-Incentives, _I'm Still Around_,
+opening for Moxy Fruvous, 1997"
+</blockquote>
+
+<h2>Structure</h2>
+
+The comment header logically is a list of eight-bit-clean vectors; the
+number of vectors is bounded to 2^32-1 and the length of each vector
+is limited to 2^32-1 bytes. The vector length is encoded; the vector
+is not null terminated. In addition to the vector list, there is a
+single vector for vendor name (also 8 bit clean, length encoded in 32
+bits). Libvorbis currently sets the vendor string to "Xiphophorus
+libVorbis I 20010119".<p>
+
+The comment vectors are structured similarly to a UNIX environment.
+That is, comment fields consist of a field name and a field value and
+look like:
+
+<pre>
+comment[0]="ARTIST=me";
+comment[1]="TITLE=the sound of vorbis";
+</pre>
+
+<h2>Content vector format</h2>
+
+<ul>
+<li>A case-insensitive field name that may consist of ASCII 0x20 through
+0x7D, 0x3D ('=') excluded. ASCII 0x41 through 0x5A inclusive (A-Z) is
+to be considered equivalent to ASCII 0x61 through 0x7A inclusive
+(a-z).
+
+<li>The field name is immediately followed by ASCII 0x3D ('='); this
+equals sign is used to terminate the field name.
+
+<li>0x3D is followed by 8 bit clean UTF-8 field contents to the end of
+the field.
+</ul>
+
+<h3>Field names</h3>
+
+Below is a proposed, minimal list of standard filed names with a
+description of intended use. No single or group of field names is
+mandatory; a comment header may contain one, all or none of the names
+in this list.
+<dl>
+<dt>TITLE<dd>Track name
+
+<dt>VERSION<dd>The version field may be used to differentiate multiple
+version of the same track title in a single collection. (e.g. remix info)
+
+<dt>ALBUM<dd>The collection name to which this track belongs
+
+<dt>TRACKNUMBER<dd>The track number of this piece if part of a specific larger collection or album
+
+<dt>ARTIST<dd>Track performer
+
+<dt>ORGANIZATION<dd>Name of the organization producing the track (i.e.
+the 'record label')
+
+<dt>DESCRIPTION<dd>A short text description of the contents
+
+<dt>GENRE<dd>A short text indication of music genre
+
+<dt>DATE<dd>Date the track was recorded
+
+<dt>LOCATION<dd>Location where track was recorded
+
+<dt>COPYRIGHT<dd>Copyright information
+
+<dt>ISRC<dd>ISRC number for the track; see <a href="http://www.ifpi.org/online/isrc_intro.html">the ISRC intro page</a> for more information on ISRC numbers.
+
+</dl>
+
+<h3>Implications</h3>
+<ul>
+<li>
+Field names should not be 'internationalized'; this is a
+concession to simplicity not an attempt to exclude the majority of
+the world that doesn't speak English. Field *contents*, however,
+are represented in UTF-8 to allow easy representation of any language.
+<li>
+We have the length of the entirety of the field and restrictions on
+the field name so that the field name is bounded in a known way. Thus
+we also have the length of the field contents.
+<li>
+Individual 'vendors' may use non-standard field names within
+reason. The proper use of comment fields should be clear through
+context at this point. Abuse will be discouraged.
+<li>
+There is no vendor-specific prefix to 'nonstandard' field names.
+Vendors should make some effort to avoid arbitrarily polluting the
+common namespace.
+<li>
+Field names are not required to be unique (occur once) within a
+comment header. As an example, assume a track was recorded by three
+well know artists; the following is permissible, and encouraged:
+<pre>
+ ARTIST=Dizzy Gillespie
+ ARTIST=Sonny Rollins
+ ARTIST=Sonny Stitt
+</pre>
+
+</ul>
+
+<h2>Encoding</h2>
+
+The comment header comprises the entirety of the second bitstream
+header packet. Unlike the first bitstream header packet, it is not
+generally the only packet on the second page and may not be restricted
+to within the second bitstream page. The length of the comment header
+packet is [practically] unbounded. The comment header packet is not
+optional; it must be present in the bitstream even if it is
+effectively empty.<p>
+
+The comment header is encoded as follows (as per Ogg's standard
+bitstream mapping which renders least-significant-bit of the word to be
+coded into the least significant available bit of the current
+bitstream octet first):
+
+<ol>
+<li>
+Vendor string length (32 bit unsigned quantity specifying number of octets)
+
+<li>
+Vendor string ([vendor string length] octets coded from beginning of string to end of string, not null terminated)
+
+<li>Number of comment fields (32 bit unsigned quantity specifying number of fields)
+
+<li>Comment field 0 length (if [Number of comment fields]>0; 32 bit unsigned quantity specifying number of octets)
+
+<li>
+Comment field 0 ([Comment field 0 length] octets coded from beginning of string to end of string, not null terminated)
+
+<li>Comment field 1 length (if [Number of comment fields]>1...)...
+</ol>
+
+This is actually somewhat easier to describe in code; implementation of the above can be found in vorbis/lib/info.c:_vorbis_pack_comment(),_vorbis_unpack_comment()
+
+<hr>
+<a href="http://www.xiph.org/">
+<img src="white-xifish.png" align=left border=0>
+</a>
+<font size=-2 color=#505050>
+
+Ogg is a <a href="http://www.xiph.org">Xiphophorus</a> effort to
+protect essential tenets of Internet multimedia from corporate
+hostage-taking; Open Source is the net's greatest tool to keep
+everyone honest. See <a href="http://www.xiph.org/about.html">About
+Xiphophorus</a> for details.
+<p>
+
+Ogg Vorbis is the first Ogg audio CODEC. Anyone may
+freely use and distribute the Ogg and Vorbis specification,
+whether in a private, public or corporate capacity. However,
+Xiphophorus and the Ogg project (xiph.org) reserve the right to set
+the Ogg/Vorbis specification and certify specification compliance.<p>
+
+Xiphophorus's Vorbis software CODEC implementation is distributed
+under the Lesser/Library GNU Public License. This does not restrict
+third parties from distributing independent implementations of Vorbis
+software under other licenses.<p>
+
+OggSquish, Vorbis, Xiphophorus and their logos are trademarks (tm) of
+<a href="http://www.xiph.org/">Xiphophorus</a>. These pages are
+copyright (C) 1994-2000 Xiphophorus. All rights reserved.<p>
+
+</body>
+
diff --git a/doc/vorbis/white-ogg.png b/doc/vorbis/white-ogg.png
new file mode 100755
index 0000000..45dc0ac
--- /dev/null
+++ b/doc/vorbis/white-ogg.png
Binary files differ
diff --git a/easytag.desktop b/easytag.desktop
new file mode 100644
index 0000000..b6c2534
--- /dev/null
+++ b/easytag.desktop
@@ -0,0 +1,25 @@
+[Desktop Entry]
+Name=EasyTAG
+Comment=EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, Ogg Vorbis, MusePack and Monkey's Audio files, with a GTK+ GUI.
+Comment[cs]=EasyTAG je utilita na prohlížení, editaci a zápis tagů do vašich MP3, MP2, FLAC, Ogg Vorbis, MusePack a Monkey Audio souborů.
+Comment[da]=Et program til at vise/redigere MP3 og Ogg Vorbis tags med et GTK+ interface.
+Comment[de]=EasyTAG ist ein Werkzeug zum Anschauen, Editieren und Schreiben von Tags Ihrer MP3-, MP2-, FLAC-, Ogg Vorbis-, MusePack- und Monkey's Audio-Dateien.
+Comment[es]=EasyTAG es una utilidad para ver, editar y escribir etiquetas a tus archivos MP3, MP2, FLAC y Ogg Vorbis.
+Comment[fr]=EasyTAG est un utilitaire pour visualiser et éditer les tags des fichiers MP3, MP2, FLAC, Ogg Vorbis, MusePack et Monkey's Audio avec une interface GTK+.
+Comment[hu]=Az EasyTAG egy GTK+-on alapuló címkenéző és -szerkesztő segédeszköz MP3, MP2, FLAC, Ogg Vorbis, MusePack és Monkey's Audio fájlokhoz.
+Comment[it]=EasyTAG è programma per vedere, modificare e scrivere i tag dei file MP3, MP2, FLAC, Ogg Vorbis, MusePack e Monkey's Audio.
+Comment[ja]=EasyTAG 㯠MP3, MP2, FLAC, Ogg Vorbis, MusePack 㨠Monkey's オーディオ・ファイル㮠ID3 タグを表示ã—ãŸã‚Šã€ç·¨é›†ã™ã‚‹ãŸã‚ã®ãƒ„ールã§ã™ã€‚シンプルã§ã‚¯ãƒ¼ãƒ«ãª GTK+ インタフェースを採用ã—ã¦ã„ã‚‹ã®ã§ã€GNU/Linux ã§ç°¡å˜ã«ã‚¿ã‚°ã®ç·¨é›†ãŒã§ãã¾ã™ã€‚
+Comment[nl]=EasyTAG is een programma voor het bewerken van tags van MP2-, MP3-, FLAC-, Ogg Vorbis, MusePack en Monkeys Audio-bestanden. Dit gebeurt in een verzorgde GTK+-omgeving.
+Comment[pl]=EasyTAG jest narzędziem do przeglądania, edytowania i zapisywania tagów w plikach MP3, MP2, FLAC, Ogg Vorbis, MusePack i Monkey's Audio. Jego prosty i miły interface wykonany w GTK+ ułatwia tagowanie.
+Comment[ro]=EasyTAG este un utilitar pentru afisarea, modificarea si scrierea etichtelor fisierelor MP3, MP2, FLAC, Ogg Vorbis, MusePack si Monkey Audio. Interfata sa simpla (GTK+) face etichetarea mai simpla.
+Comment[ru]=EasyTAG -- ЩРРОПÐЦПЮЛЛЮ ДКЪ ОПÐЯЛÐРПЮ Ð¥ ПЕДЮЙРХПÐБЮМХЪ РЕЦÐБ Б ТЮИКЮУ MP3, MP2, FLAC, MusePack, APE Ð¥ Ogg Vorbis Я СДÐÐМШЛ ХМРЕПТЕИЯÐЛ GTK+ ДКЪ GNU/Linux.
+Comment[sv]=EasyTAG är ett verktyg för att undersöka, editera och skriva taggar för dina MP3-, MP2-, FLAC- och Ogg Vorbis-filer, och använder ett enkelt och trevligt GTK+-gränssnitt.
+Comment[uk]=EasyTAG - утиліта Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду, Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу тегів у файли MP3, MP2, FLAC, Ogg Vorbis, MusePack та Monkey's Audio. ПроÑтий та приємний Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ GTK+ допоможе процеÑу запиÑу тегів.
+Exec=easytag %F
+Icon=EasyTAG.xpm
+Terminal=false
+Type=Application
+Encoding=UTF-8
+Categories=Application;AudioVideo;AudioVideoEditing;
+X-Desktop-File-Install-Version=0.3
+MimeType=audio/x-mp3;application/ogg;
diff --git a/easytag.spec b/easytag.spec
new file mode 100644
index 0000000..55a19e7
--- /dev/null
+++ b/easytag.spec
@@ -0,0 +1,156 @@
+%define name easytag
+%define version 2.1.1
+%define release 1
+%define prefix /usr
+
+Summary: Tag editor for MP3 and Ogg Vorbis files.
+Summary(fr): Editeur de tags pour fichiers MP3 et Vorbis Ogg.
+Name: %name
+Version: %version
+Release: %release
+License: GPL
+URL: http://easytag.sourceforge.net
+Group: Applications/Multimedia
+Source: http://prdownloads.sourceforge.net/easytag/%{name}-%{version}.tar.bz2
+BuildRoot: /var/tmp/%name-buildroot
+Vendor: Jerome Couderc <easytag@gmail.com>
+Distribution: Any
+Packager: Jerome Couderc <easytag@gmail.com>
+Requires: glib2 >= 2.8.0
+Requires: gtk2 >= 2.4.1
+Requires: id3lib >= 3.7.12
+Requires: libid3tag >= 0.15
+Requires: libogg >= 1.0
+Requires: libvorbis >= 1.0
+Requires: flac >= 1.1.0
+Requires: libmp4v2 >= 1.5.0.1
+Requires: wavpack >= 4.40
+BuildRequires: glib2-devel >= 2.8.0
+BuildRequires: gtk2-devel >= 2.4.1
+BuildRequires: id3lib-devel >= 3.7.12
+BuildRequires: libid3tag-devel >= 0.15
+BuildRequires: libogg-devel >= 1.0
+BuildRequires: libvorbis-devel >= 1.0
+BuildRequires: flac-devel >= 1.1.0
+BuildRequires: libmp4v2-devel >= 1.5.0.1
+BuildRequires: wavpack-devel >= 4.40
+Prefix: %prefix
+
+%description
+EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, Ogg
+Vorbis, MP4/AAC, MusePack, Monkey's Audio and WavPack files. Its simple and nice
+GTK2 interface makes tagging easier under GNU/Linux or Windows.
+
+Features:
+ o View, edit, write tags of MP3, MP2 files (ID3 tag with pictures), FLAC files
+ (FLAC Vorbis tag), Ogg Vorbis files (Ogg Vorbis tag), MP4/AAC (MP4/AAC tag),
+ MusePack, Monkey's Audio and WavPack files (APE tag),
+ o Can edit more tag fields : Title, Artist, Album, Disc Album, Year, Track
+ Number, Genre, Comment, Composer, Original Artist/Performer, Copyright, URL
+ and Encoder name,
+ o Auto tagging: parse filename and directory to complete automatically the
+ fields (using masks),
+ o Ability to rename files and directories from the tag (using masks) or by
+ loading a text file,
+ o Process selected files of the selected directory,
+ o Ability to browse subdirectories,
+ o Recursion for tagging, removing, renaming, saving...,
+ o Can set a field (artist, title,...) to all other selected files,
+ o Read file header informations (bitrate, time, ...) and display them,
+ o Auto completion of the date if a partial is entered,
+ o Undo and redo last changes,
+ o Ability to process fields of tag and file name (convert letters into
+ uppercase, downcase, ...),
+ o Ability to open a directory or a file with an external program,
+ o Remote and local CDDB support for manual or automatic search,
+ o A tree based browser or a view by Artist & Album,
+ o A list to select files,
+ o A playlist generator window,
+ o A file searching window,
+ o Simple and explicit interface!,
+ o Brazilian Portuguese, Bulgarian, Chinese, Czech, Danish, Dutch, French,
+ German, Greek, Hungarian, Italian, Japanese, Polish, Romanian, Russian,
+ Spanish, Swedish and Ukrainian translation languages,
+ o Written in C and uses GTK+ 2 for the GUI.
+
+%package docs
+Summary: Documentation for using EasyTAG
+Group: Documentation
+
+%description docs
+This package contains the documentation to help you to use EasyTAG and present
+ its features.
+
+
+%prep
+%setup
+
+%build
+./configure --prefix=%{prefix}
+make
+
+%install
+rm -rf ${RPM_BUILD_ROOT}
+make prefix=${RPM_BUILD_ROOT}%{prefix} install
+
+%post
+
+%postun
+
+%clean
+rm -rf ${RPM_BUILD_ROOT}
+
+%files
+%defattr(-, root, root)
+%doc ChangeLog INSTALL COPYING README THANKS USERS-GUIDE
+%prefix/bin/easytag
+%prefix/share/applications/easytag.desktop
+%prefix/share/pixmaps/*
+%prefix/man/*/easytag.*
+%prefix/share/easytag/*
+%prefix/share/locale/*/*/*
+
+%files docs
+%defattr(-,root,root,-)
+%doc COPYING
+%doc doc/*.html
+%doc doc/users_guide_*
+
+
+%changelog
+* Mon Feb 21 2007 Jerome Couderc <easytag@gmail.com>
+ - Updated to generate doc package
+
+* Wed Aug 25 2005 Jerome Couderc <easytag@gmail.com>
+ - Updated (Build)Requires entries for mpeg4ip/faad2
+ - Updated description to add MP4/AAC support
+
+* Wed Sep 17 2004 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated (Build)Requires entries for gtk+ 2.4.0
+
+* Sun Jan 4 2004 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated (Build)Requires entries for FLAC support
+
+* Tue Dec 16 2003 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated for the file easytag.desktop
+
+* Mon Dec 31 2002 Jerome Couderc <j.couderc@ifrance.com>
+ - Added man page
+
+* Fri Aug 9 2002 Jerome Couderc <j.couderc@ifrance.com>
+ - Added swith --disable-flac in the build section
+
+* Thu Dec 18 2001 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated for (Build)Requires entries
+
+* Thu Sep 22 2001 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated for /etc/X11/applnk/Multimedia/easytag.desktop
+
+* Thu Sep 20 2001 Götz Waschk <waschk@linux-mandrake.com> 0.15.1-1
+ - Updated for autoconf
+
+* Fri Jun 2 2000 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated to include po files into the rpm package
+
+* Fri May 5 2000 Jerome Couderc <j.couderc@ifrance.com>
+ - Initial spec file.
diff --git a/easytag.spec.in b/easytag.spec.in
new file mode 100755
index 0000000..27b2d84
--- /dev/null
+++ b/easytag.spec.in
@@ -0,0 +1,156 @@
+%define name @PACKAGE@
+%define version @VERSION@
+%define release 1
+%define prefix /usr
+
+Summary: Tag editor for MP3 and Ogg Vorbis files.
+Summary(fr): Editeur de tags pour fichiers MP3 et Vorbis Ogg.
+Name: %name
+Version: %version
+Release: %release
+License: GPL
+URL: http://easytag.sourceforge.net
+Group: Applications/Multimedia
+Source: http://prdownloads.sourceforge.net/easytag/%{name}-%{version}.tar.bz2
+BuildRoot: /var/tmp/%name-buildroot
+Vendor: Jerome Couderc <easytag@gmail.com>
+Distribution: Any
+Packager: Jerome Couderc <easytag@gmail.com>
+Requires: glib2 >= 2.8.0
+Requires: gtk2 >= 2.4.1
+Requires: id3lib >= 3.7.12
+Requires: libid3tag >= 0.15
+Requires: libogg >= 1.0
+Requires: libvorbis >= 1.0
+Requires: flac >= 1.1.0
+Requires: libmp4v2 >= 1.5.0.1
+Requires: wavpack >= 4.40
+BuildRequires: glib2-devel >= 2.8.0
+BuildRequires: gtk2-devel >= 2.4.1
+BuildRequires: id3lib-devel >= 3.7.12
+BuildRequires: libid3tag-devel >= 0.15
+BuildRequires: libogg-devel >= 1.0
+BuildRequires: libvorbis-devel >= 1.0
+BuildRequires: flac-devel >= 1.1.0
+BuildRequires: libmp4v2-devel >= 1.5.0.1
+BuildRequires: wavpack-devel >= 4.40
+Prefix: %prefix
+
+%description
+EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, Ogg
+Vorbis, MP4/AAC, MusePack, Monkey's Audio and WavPack files. Its simple and nice
+GTK2 interface makes tagging easier under GNU/Linux or Windows.
+
+Features:
+ o View, edit, write tags of MP3, MP2 files (ID3 tag with pictures), FLAC files
+ (FLAC Vorbis tag), Ogg Vorbis files (Ogg Vorbis tag), MP4/AAC (MP4/AAC tag),
+ MusePack, Monkey's Audio and WavPack files (APE tag),
+ o Can edit more tag fields : Title, Artist, Album, Disc Album, Year, Track
+ Number, Genre, Comment, Composer, Original Artist/Performer, Copyright, URL
+ and Encoder name,
+ o Auto tagging: parse filename and directory to complete automatically the
+ fields (using masks),
+ o Ability to rename files and directories from the tag (using masks) or by
+ loading a text file,
+ o Process selected files of the selected directory,
+ o Ability to browse subdirectories,
+ o Recursion for tagging, removing, renaming, saving...,
+ o Can set a field (artist, title,...) to all other selected files,
+ o Read file header informations (bitrate, time, ...) and display them,
+ o Auto completion of the date if a partial is entered,
+ o Undo and redo last changes,
+ o Ability to process fields of tag and file name (convert letters into
+ uppercase, downcase, ...),
+ o Ability to open a directory or a file with an external program,
+ o Remote and local CDDB support for manual or automatic search,
+ o A tree based browser or a view by Artist & Album,
+ o A list to select files,
+ o A playlist generator window,
+ o A file searching window,
+ o Simple and explicit interface!,
+ o Brazilian Portuguese, Bulgarian, Chinese, Czech, Danish, Dutch, French,
+ German, Greek, Hungarian, Italian, Japanese, Polish, Romanian, Russian,
+ Spanish, Swedish and Ukrainian translation languages,
+ o Written in C and uses GTK+ 2 for the GUI.
+
+%package docs
+Summary: Documentation for using EasyTAG
+Group: Documentation
+
+%description docs
+This package contains the documentation to help you to use EasyTAG and present
+ its features.
+
+
+%prep
+%setup
+
+%build
+./configure --prefix=%{prefix}
+make
+
+%install
+rm -rf ${RPM_BUILD_ROOT}
+make prefix=${RPM_BUILD_ROOT}%{prefix} install
+
+%post
+
+%postun
+
+%clean
+rm -rf ${RPM_BUILD_ROOT}
+
+%files
+%defattr(-, root, root)
+%doc ChangeLog INSTALL COPYING README THANKS USERS-GUIDE
+%prefix/bin/easytag
+%prefix/share/applications/easytag.desktop
+%prefix/share/pixmaps/*
+%prefix/man/*/easytag.*
+%prefix/share/easytag/*
+%prefix/share/locale/*/*/*
+
+%files docs
+%defattr(-,root,root,-)
+%doc COPYING
+%doc doc/*.html
+%doc doc/users_guide_*
+
+
+%changelog
+* Mon Feb 21 2007 Jerome Couderc <easytag@gmail.com>
+ - Updated to generate doc package
+
+* Wed Aug 25 2005 Jerome Couderc <easytag@gmail.com>
+ - Updated (Build)Requires entries for mpeg4ip/faad2
+ - Updated description to add MP4/AAC support
+
+* Wed Sep 17 2004 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated (Build)Requires entries for gtk+ 2.4.0
+
+* Sun Jan 4 2004 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated (Build)Requires entries for FLAC support
+
+* Tue Dec 16 2003 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated for the file easytag.desktop
+
+* Mon Dec 31 2002 Jerome Couderc <j.couderc@ifrance.com>
+ - Added man page
+
+* Fri Aug 9 2002 Jerome Couderc <j.couderc@ifrance.com>
+ - Added swith --disable-flac in the build section
+
+* Thu Dec 18 2001 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated for (Build)Requires entries
+
+* Thu Sep 22 2001 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated for /etc/X11/applnk/Multimedia/easytag.desktop
+
+* Thu Sep 20 2001 Götz Waschk <waschk@linux-mandrake.com> 0.15.1-1
+ - Updated for autoconf
+
+* Fri Jun 2 2000 Jerome Couderc <j.couderc@ifrance.com>
+ - Updated to include po files into the rpm package
+
+* Fri May 5 2000 Jerome Couderc <j.couderc@ifrance.com>
+ - Initial spec file.
diff --git a/easytag.win32.setup.iss b/easytag.win32.setup.iss
new file mode 100755
index 0000000..76cf16e
--- /dev/null
+++ b/easytag.win32.setup.iss
@@ -0,0 +1,217 @@
+; ---------------------------------------------------------
+; To build this setup follow these steps:
+;
+; - Download and install Inno Setup QuickStart Pack from
+; http://files.jrsoftware.org/ispack/ispack-5.1.9.exe
+;
+; - Create a subdirectory named "win32-install-dir" of the
+; directory that contains this script. Then, copy into the
+; directory "win32-install-dir" all the EasyTAG's files
+; (easytag.exe, easytag.dll, etc).
+;
+; - Finally open this script in Inno Setup and click on
+; "Build -> Compile", or simply "Compile" in the context
+; menu of the file in Windows Explorer.
+;
+; ---------------------------------------------------------
+
+; Here you can specify the current version of EasyTAG.
+#define APP_NAME "EasyTAG"
+#define APP_VERSION "2.1.1"
+#define APP_URL "http://easytag.sourceforge.net"
+#define APP_NAME_2 "easytag"
+#define DEV_NAME "Jérôme COUDERC"
+
+; Here you can specify the minimum required version of GTK+
+; and the download URL for the Windows version.
+#define GTK_VERSION "2.8"
+#define GTK_DOWNLOAD "http://sourceforge.net/project/showfiles.php?group_id=121075&package_id=132255"
+
+; Defining MULTILANGUAGE the installer will support other
+; languages, not only English. See also below in sections
+; [Languages] and [CustomMessages].
+#define MULTILANGUAGE
+
+[Setup]
+AppVerName={#APP_NAME} {#APP_VERSION}
+VersionInfoVersion={#APP_VERSION}
+AppName={#APP_NAME}
+AppPublisher={#DEV_NAME}
+AppPublisherURL={#APP_URL}
+AppSupportURL={#APP_URL}
+AppUpdatesURL={#APP_URL}
+AppCopyright={#DEV_NAME}
+VersionInfoCopyright=This program is open-source!
+DefaultDirName={pf}\{#APP_NAME}
+DefaultGroupName={#APP_NAME}
+UninstallDisplayIcon={app}\{#APP_NAME}.exe,0
+DisableStartupPrompt=yes
+DirExistsWarning=no
+OutputDir=.\
+OutputBaseFilename={#APP_NAME_2}-{#APP_VERSION}
+Compression=lzma/max
+SolidCompression=yes
+AllowNoIcons=yes
+PrivilegesRequired=poweruser
+ShowLanguageDialog=auto
+
+WizardImageFile=compiler:WizModernImage-IS.bmp
+WizardSmallImageFile=compiler:WizModernSmallImage-IS.bmp
+
+; Here you can specify which languages are available for the setup
+; GUI. Additional languages can be found at this location:
+; http://www.jrsoftware.org/files/istrans/
+[Languages]
+Name: en; MessagesFile: compiler:Default.isl
+#ifdef MULTILANGUAGE
+Name: cs; MessagesFile: compiler:Languages\Czech.isl
+Name: da; MessagesFile: compiler:Languages\Danish.isl
+Name: de; MessagesFile: compiler:Languages\German.isl
+Name: es; MessagesFile: compiler:Languages\Spanish.isl
+Name: fr; MessagesFile: compiler:Languages\French.isl
+Name: hu; MessagesFile: compiler:Languages\Hungarian.isl
+Name: it; MessagesFile: compiler:Languages\Italian.isl
+#endif
+
+; These are the labels displayed in the wizard and not contained in
+; the Inno Setup's translation files
+[CustomMessages]
+; ** ENGLISH **
+en.FoldersLink=Add {#APP_NAME} to folders' context menu
+en.MissingGTK=The GTK+ libraries v{#GTK_VERSION} (or above) are not installed. Would you like do download them now?
+#ifdef MULTILANGUAGE
+; ** CZECH **
+cs.FoldersLink=Pridat {#APP_NAME} do kontextového menu adresáre
+cs.MissingGTK=Knihovny GTK+ v{#GTK_VERSION} (nebo vyšší) nejsou nainstalovány. Chcete je nyní stáhnout?
+; ** DANISH **
+da.FoldersLink=Tilføj {#APP_NAME} til mappers højre-klik menu
+da.MissingGTK=GTK+ bibliotekerne v{#GTK_VERSION} (eller højere) er ikke installeret. Vil du hente dem nu?
+; ** GERMAN **
+de.FoldersLink=Füge {#APP_NAME} zum Kontextmenü von Ordnern hinzu
+de.MissingGTK=GTK+ v{#GTK_VERSION} (oder neuer) ist nicht installiert. Wollen sie es jetzt herunterladen?
+; ** SPANISH ** ---> NOT TRANSLATED YET! <---
+es.FoldersLink=Add {#APP_NAME} to folders' context menu
+es.MissingGTK=The GTK+ libraries v{#GTK_VERSION} (or above) are not installed. Would you like do download them now?
+; ** FRENCH **
+fr.FoldersLink=Ajouter {#APP_NAME} au menu contextuel des dossiers
+fr.MissingGTK=La librairie GTK+ v{#GTK_VERSION} (ou supérieure) n'est pas installée. Voulez-vous la télécharger maintenant?
+; ** HUNGARIAN **
+hu.FoldersLink=Külso program {#APP_NAME} beépítése a menüszerkezetbe
+hu.MissingGTK=A GTK+ {#GTK_VERSION} (vagy nagyobb) környezet nincs telepítve. Szeretné most letölteni?
+; ** ITALIAN **
+it.FoldersLink=Aggiungi {#APP_NAME} al menù contestuale delle cartelle
+it.MissingGTK=Le librerie GTK+ v{#GTK_VERSION} (o superiore) non sono installate. Vuoi scaricarle adesso?
+#endif
+
+[Files]
+Source: .\win32-install-dir\*; DestDir: {app}; Flags: ignoreversion recursesubdirs; Tasks: ; Languages:
+
+[Tasks]
+Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}
+;Name: desktopicon\common; Description: "For all users"; GroupDescription: {cm:AdditionalIcons}; Flags: exclusive
+;Name: desktopicon\user; Description: "For the current user only"; GroupDescription: {cm:AdditionalIcons}; Flags: exclusive unchecked
+Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
+Name: folderslink; Description: {cm:FoldersLink}; GroupDescription: {cm:AdditionalIcons}
+
+[Registry]
+Root: HKCR; Subkey: Directory\shell\{#APP_NAME}; Flags: uninsdeletekey dontcreatekey
+Root: HKCR; Subkey: Directory\shell\{#APP_NAME}; ValueType: string; ValueName: ; ValueData: {#APP_NAME}; Tasks: folderslink
+Root: HKCR; Subkey: Directory\shell\{#APP_NAME}\Command; ValueType: string; ValueName: ; ValueData: """{app}\{#APP_NAME}.exe"" ""%1"""; Tasks: folderslink
+
+[Icons]
+Name: {group}\{#APP_NAME} {#APP_VERSION}; Filename: {app}\{#APP_NAME}.exe; WorkingDir: {app}
+Name: {group}\{cm:UninstallProgram,{#APP_NAME}}; Filename: {uninstallexe}; WorkingDir: {app}
+Name: {group}\{cm:ProgramOnTheWeb,{#APP_NAME}}; Filename: {#APP_URL}
+Name: {commondesktop}\{#APP_NAME}; Filename: {app}\{#APP_NAME}.exe; WorkingDir: {app}; Tasks: desktopicon
+
+[Run]
+Filename: {app}\{#APP_NAME}.exe; Description: {cm:LaunchProgram,{#APP_NAME} {#APP_VERSION}}; Flags: nowait postinstall skipifsilent
+
+[Code]
+// Parse a version string in a array of Integer ('1.2.3.4' -> [1,2,3,4])
+// -- taken from the Inno Setup forum --
+procedure DecodeVersion(i_oStrVersion: String; var o_panVersion: array of Integer);
+var
+ l_nIndex : Integer;
+ l_nPos : Integer;
+ l_oStrTemp : String;
+begin
+ o_panVersion := [0,0,0,0];
+
+ l_nIndex := 0;
+ while ((Length(i_oStrVersion) > 0) and (l_nIndex < 4)) do begin
+ l_nPos := pos('.', i_oStrVersion);
+ if l_nPos > 0 then begin
+ if l_nPos = 1 then begin
+ l_oStrTemp := '0'
+ end else begin
+ l_oStrTemp := Copy(i_oStrVersion, 1, l_nPos - 1);
+ end;
+
+ o_panVersion[l_nIndex] := StrToIntDef(l_oStrTemp, 0);
+ l_nIndex := l_nIndex + 1;
+ i_oStrVersion := Copy(i_oStrVersion, l_nPos + 1, Length(i_oStrVersion));
+ end else begin
+ o_panVersion[l_nIndex] := StrToIntDef(i_oStrVersion, 0);
+ i_oStrVersion := '';
+ end;
+ end;
+end;
+
+// Compare two array of Integer from their string counterpart
+// -- taken from the Inno Setup forum --
+function CompareVersion(i_oStrVersionDest, i_oStrVersionFrom: String) : Integer;
+var
+ l_anVersionDest : array of Integer;
+ l_anVersionFrom : array of Integer;
+ l_nIndex : Integer;
+begin
+ SetArrayLength(l_anVersionDest, 4);
+ DecodeVersion(i_oStrVersionDest, l_anVersionDest);
+
+ SetArrayLength(l_anVersionFrom, 4);
+ DecodeVersion(i_oStrVersionFrom, l_anVersionFrom);
+
+ Result := 0;
+ l_nIndex := 0;
+
+ while ((Result = 0) and (l_nIndex < 4)) do begin
+ if l_anVersionDest[l_nIndex] > l_anVersionFrom[l_nIndex] then begin
+ Result := 1 // i_oStrVersionDest > i_oStrVersionFrom
+ end else begin
+ if l_anVersionDest[l_nIndex] < l_anVersionFrom[l_nIndex] then begin
+ Result := -1 // i_oStrVersionDest < i_oStrVersionFrom
+ end else begin
+ Result := 0; // i_oStrVersionDest = i_oStrVersionFrom
+ end;
+ end;
+
+ l_nIndex := l_nIndex + 1;
+ end;
+end;
+
+// Checks, when setup starts, if the installed version of GTK+ mathches requirements
+function InitializeSetup(): Boolean;
+var
+ iRetVal: Integer;
+ sGtkVer: String;
+begin
+ Result := True;
+ sGtkVer := '0.0.0.0';
+ RegQueryStringValue(HKLM, 'SOFTWARE\GTK\2.0', 'Version', sGtkVer);
+
+ if(CompareVersion(sGtkVer, '{#GTK_VERSION}') = -1) then begin
+ case MsgBox(CustomMessage('MissingGTK'), mbError, MB_YESNOCANCEL) of
+ IDYES: begin
+ Result := False;
+ ShellExec('open', '{#GTK_DOWNLOAD}', '', '', SW_SHOW, ewNoWait, iRetVal);
+ end
+
+ IDCANCEL: begin
+ Result := False;
+ end
+ end
+ end
+end;
+[_ISTool]
+UseAbsolutePaths=false
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..398a88e
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,251 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission. M.I.T. makes no representations about the
+# suitability of this software for any purpose. It is provided "as is"
+# without express or implied warranty.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+ case $1 in
+ -c) instcmd="$cpprog"
+ shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd="$stripprog"
+ shift
+ continue;;
+
+ -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+ shift
+ continue;;
+
+ -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+ shift
+ continue;;
+
+ *) if [ x"$src" = x ]
+ then
+ src=$1
+ else
+ # this colon is to work around a 386BSD /bin/sh bug
+ :
+ dst=$1
+ fi
+ shift
+ continue;;
+ esac
+done
+
+if [ x"$src" = x ]
+then
+ echo "install: no input file specified"
+ exit 1
+else
+ :
+fi
+
+if [ x"$dir_arg" != x ]; then
+ dst=$src
+ src=""
+
+ if [ -d $dst ]; then
+ instcmd=:
+ chmodcmd=""
+ else
+ instcmd=$mkdirprog
+ fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+ if [ -f $src -o -d $src ]
+ then
+ :
+ else
+ echo "install: $src does not exist"
+ exit 1
+ fi
+
+ if [ x"$dst" = x ]
+ then
+ echo "install: no destination specified"
+ exit 1
+ else
+ :
+ fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+ if [ -d $dst ]
+ then
+ dst="$dst"/`basename $src`
+ else
+ :
+ fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+# this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+ '
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+ pathcomp="${pathcomp}${1}"
+ shift
+
+ if [ ! -d "${pathcomp}" ] ;
+ then
+ $mkdirprog "${pathcomp}"
+ else
+ :
+ fi
+
+ pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+ $doit $instcmd $dst &&
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+ if [ x"$transformarg" = x ]
+ then
+ dstfile=`basename $dst`
+ else
+ dstfile=`basename $dst $transformbasename |
+ sed $transformarg`$transformbasename
+ fi
+
+# don't allow the sed command to completely eliminate the filename
+
+ if [ x"$dstfile" = x ]
+ then
+ dstfile=`basename $dst`
+ else
+ :
+ fi
+
+# Make a temp file name in the proper directory.
+
+ dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+ $doit $instcmd $src $dsttmp &&
+
+ trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing. If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
+
+# Now rename the file to the real destination.
+
+ $doit $rmcmd -f $dstdir/$dstfile &&
+ $doit $mvcmd $dsttmp $dstdir/$dstfile
+
+fi &&
+
+
+exit 0
diff --git a/ltmain.sh b/ltmain.sh
new file mode 100755
index 0000000..0223495
--- /dev/null
+++ b/ltmain.sh
@@ -0,0 +1,6911 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ SP2NL='tr \040 \012'
+ NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ SP2NL='tr \100 \n'
+ NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ $lt_var=C
+ export $lt_var
+ fi"
+done
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $mkdir "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || {
+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+ exit $EXIT_FAILURE
+ }
+ fi
+
+ $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+ $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit $EXIT_FAILURE
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+
+ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+ exit $EXIT_FAILURE
+ fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+ my_status=""
+
+ $show "${rm}r $my_gentop"
+ $run ${rm}r "$my_gentop"
+ $show "$mkdir $my_gentop"
+ $run $mkdir "$my_gentop"
+ my_status=$?
+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+ exit $my_status
+ fi
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ extracted_serial=`expr $extracted_serial + 1`
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
+
+ $show "${rm}r $my_xdir"
+ $run ${rm}r "$my_xdir"
+ $show "$mkdir $my_xdir"
+ $run $mkdir "$my_xdir"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+ exit $exit_status
+ fi
+ case $host in
+ *-darwin*)
+ $show "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ if test -z "$run"; then
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ $show "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ lipo -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ ${rm}r unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd "$darwin_orig_dir"
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ fi # $run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+ func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ execute_dlfiles)
+ execute_dlfiles="$execute_dlfiles $arg"
+ ;;
+ tag)
+ tagname="$arg"
+ preserve_args="${preserve_args}=$arg"
+
+ # Check whether tagname contains only valid characters
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ $echo "$progname: invalid tag name: $tagname" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $tagname in
+ CC)
+ # Don't test for the "default" C tag, as we know, it's there, but
+ # not specially marked.
+ ;;
+ *)
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+ else
+ $echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ eval "$prev=\$arg"
+ ;;
+ esac
+
+ prev=
+ prevopt=
+ continue
+ fi
+
+ # Have we seen a non-optional argument yet?
+ case $arg in
+ --help)
+ show_help=yes
+ ;;
+
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+ $echo "Copyright (C) 2005 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $?
+ ;;
+
+ --config)
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+ exit $?
+ ;;
+
+ --debug)
+ $echo "$progname: enabling shell trace mode"
+ set -x
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --dry-run | -n)
+ run=:
+ ;;
+
+ --features)
+ $echo "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ $echo "enable shared libraries"
+ else
+ $echo "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ $echo "enable static libraries"
+ else
+ $echo "disable static libraries"
+ fi
+ exit $?
+ ;;
+
+ --finish) mode="finish" ;;
+
+ --mode) prevopt="--mode" prev=mode ;;
+ --mode=*) mode="$optarg" ;;
+
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
+ --quiet | --silent)
+ show=:
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --tag)
+ prevopt="--tag"
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+
+ -dlopen)
+ prevopt="-dlopen"
+ prev=execute_dlfiles
+ ;;
+
+ -*)
+ $echo "$modename: unrecognized option \`$arg'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+
+ *)
+ nonopt="$arg"
+ break
+ ;;
+ esac
+done
+
+if test -n "$prevopt"; then
+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no)
+ ;;
+shared)
+ build_libtool_libs=no
+ build_old_libs=yes
+ ;;
+static)
+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+ ;;
+esac
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+ for arg
+ do
+ case $arg in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
+ done
+ ;;
+ *db | *dbx | *strace | *truss)
+ mode=execute
+ ;;
+ *install*|cp|mv)
+ mode=install
+ ;;
+ *rm)
+ mode=uninstall
+ ;;
+ *)
+ # If we have no mode, but dlfiles were specified, then do execute mode.
+ test -n "$execute_dlfiles" && mode=execute
+
+ # Just use the default operation mode.
+ if test -z "$mode"; then
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$modename --help --mode=$mode' for more information."
+
+ # These modes are in order of execution frequency so that they run quickly.
+ case $mode in
+ # libtool compile mode
+ compile)
+ modename="$modename: compile"
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ if test -n "$libobj" ; then
+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ arg_mode=target
+ continue
+ ;;
+
+ -static | -prefer-pic | -prefer-non-pic)
+ later="$later $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ base_compile="$base_compile $lastarg"
+ continue
+ ;;
+
+ * )
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, and some SunOS ksh mistreat backslash-escaping
+ # in scan sets (worked around with variable expansion),
+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+ # at all, so we specify them separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+ esac
+
+ base_compile="$base_compile $lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ $echo "$modename: you must specify an argument for -Xcompile"
+ exit $EXIT_FAILURE
+ ;;
+ target)
+ $echo "$modename: you must specify a target with \`-o'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *)
+ # Get the name of the library object.
+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.f90) xform=f90 ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ *.obj) xform=obj ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+ case $libobj in
+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+ *)
+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -static)
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+ case $qlibobj in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qlibobj="\"$qlibobj\"" ;;
+ esac
+ test "X$libobj" != "X$qlibobj" \
+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
+ if test -z "$base_compile"; then
+ $echo "$modename: you must specify a compilation command" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ $run $rm $removelist
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+ $show "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+ $echo "$srcfile" > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+ case $qsrcfile in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qsrcfile="\"$qsrcfile\"" ;;
+ esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ $show "$mv $output_obj $obj"
+ if $run $mv $output_obj $obj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args="$nonopt"
+ base_compile="$nonopt $@"
+ compile_command="$nonopt"
+ finalize_command="$nonopt"
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ notinst_path= # paths that contain not-installed libtool libraries
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$finalize_command @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ if test ! -f "$arg"; then
+ $echo "$modename: symbol file \`$arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat $save_arg`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ done
+ else
+ $echo "$modename: link input file \`$save_arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ darwin_framework|darwin_framework_skip)
+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ prev=
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+ continue
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: more than one -exported-symbols argument is not allowed"
+ exit $EXIT_FAILURE
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework|-arch|-isysroot)
+ case " $CC " in
+ *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+ prev=darwin_framework_skip ;;
+ *) compiler_flags="$compiler_flags $arg"
+ prev=darwin_framework ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ notinst_path="$notinst_path $dir"
+ fi
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs -framework System"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ -model)
+ compile_command="$compile_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ finalize_command="$finalize_command $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m* pass through architecture-specific compiler args for GCC
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -pg pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+ -t[45]*|-txscale*|@*)
+
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done # argument parsing loop
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ # Determine the type of output
+ case $output in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ duplicate_compiler_generated_deps=yes
+ ;;
+ *)
+ duplicate_compiler_generated_deps=$duplicate_deps
+ ;;
+ esac
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$libs $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ case $linkmode in
+ lib)
+ passes="conv link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+ for pass in $passes; do
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if (${SED} -e '2q' $lib |
+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ library_names=
+ old_library=
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ if eval $echo \"$deplib\" 2>/dev/null \
+ | $SED 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ $echo
+ $echo "*** Warning: Trying to link with static lib archive $deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because the file extensions .$libext of this argument makes me believe"
+ $echo "*** that it is just a static archive that I should not used here."
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the"
+ $echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$temp_rpath $absdir" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes ; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on
+ # some systems (darwin)
+ if test "$shouldnotlink" = yes && test "$pass" = link ; then
+ $echo
+ if test "$linkmode" = prog; then
+ $echo "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $echo "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $echo "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+ libname=`eval \\$echo \"$libname_spec\"`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$extract_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$old_archive_from_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a module then we can not link against
+ # it, someone is ignoring the new warnings I added
+ if /usr/bin/file -L $add 2> /dev/null |
+ $EGREP ": [^:]* bundle" >/dev/null ; then
+ $echo "** Warning, lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $echo
+ $echo "** And there doesn't seem to be a static archive available"
+ $echo "** The link will probably fail, sorry"
+ else
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes && \
+ test "$hardcode_minus_L" != yes && \
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ $echo
+ $echo "*** Warning: This system can not link to static lib archive $lib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ $echo "*** But as you try to build a module library, libtool will still create "
+ $echo "*** a static module, that should work as long as the dlopening application"
+ $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ $echo
+ $echo "*** However, this would only work if libtool was able to extract symbol"
+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $echo "*** not find such a program. So, this module is probably useless."
+ $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="$absdir"
+ fi
+ depdepl=
+ case $host in
+ *-*-darwin*)
+ # we do not want to link against static libs,
+ # but need to link against shared
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+ if test -f "$path/$depdepl" ; then
+ depdepl="$path/$depdepl"
+ fi
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+ *) newlib_search_path="$newlib_search_path $path";;
+ esac
+ fi
+ path=""
+ ;;
+ *)
+ path="-L$path"
+ ;;
+ esac
+ ;;
+ -l*)
+ case $host in
+ *-*-darwin*)
+ # Again, we only want to link against shared libraries
+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+ for tmp in $newlib_search_path ; do
+ if test -f "$tmp/lib$tmp_libs.dylib" ; then
+ eval depdepl="$tmp/lib$tmp_libs.dylib"
+ break
+ fi
+ done
+ path=""
+ ;;
+ *) continue ;;
+ esac
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ fi
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ if test "$module" = no; then
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit $EXIT_FAILURE
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the non-libtool"
+ $echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ fi
+
+ set dummy $rpath
+ if test "$#" -gt 2; then
+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ fi
+ install_libdir="$2"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+ fi
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ IFS="$save_ifs"
+
+ if test -n "$8"; then
+ $echo "$modename: too many parameters to \`-version-info'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$2"
+ number_minor="$3"
+ number_revision="$4"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows|none)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$2"
+ revision="$3"
+ age="$4"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current";
+ ;;
+
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+ fi
+
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$echo "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+# for path in $notinst_path; do
+# lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+# deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+# dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+# done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs -framework System"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $rm conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which I believe you do not have"
+ $echo "*** because a test_compile did reveal that the linker did not use it for"
+ $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because a test_compile did reveal that the linker did not use this one"
+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null \
+ | grep " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: linker path does not have real file for library $a_deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $echo "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $echo "*** with $libname and none of the candidates passed a file format test"
+ $echo "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval $echo \"$potent_lib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: linker path does not have real file for library $a_deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $echo "*** with $libname and none of the candidates passed a file format test"
+ $echo "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+ -e 's/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+ done
+ fi
+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
+ | grep . >/dev/null; then
+ $echo
+ if test "X$deplibs_check_method" = "Xnone"; then
+ $echo "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ $echo "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ $echo "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ fi
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ $echo
+ $echo "*** Warning: libtool could not satisfy all declared inter-library"
+ $echo "*** dependencies of module $libname. Therefore, libtool will create"
+ $echo "*** a static module, that should work as long as the dlopening"
+ $echo "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ $echo
+ $echo "*** However, this would only work if libtool was able to extract symbol"
+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $echo "*** not find such a program. So, this module is probably useless."
+ $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ $echo "*** The inter-library dependencies that have been dropped here will be"
+ $echo "*** automatically added whenever a program is linked with this library"
+ $echo "*** or is declared to -dlopen it."
+
+ if test "$allow_undefined" = no; then
+ $echo
+ $echo "*** Since this library must not contain undefined symbols,"
+ $echo "*** because either the platform does not support them or"
+ $echo "*** it was explicitly requested with -no-undefined,"
+ $echo "*** libtool will only create a static version of it."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ $show "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex"; then
+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+ $run eval '$mv "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" &&
+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise.
+ $echo "creating reloadable object files..."
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ delfiles=
+ last_robj=
+ k=1
+ output=$output_objdir/$output_la-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ len=1
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+ if ${skipped_export-false}; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+ # Set up a command to remove the reloadable object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+ done
+
+ $echo "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+
+ # Append the command to remove the reloadable object files
+ # to the just-reset $cmds.
+ eval cmds=\"\$cmds~\$rm $delfiles\"
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ fi
+
+ case $output in
+ *.lo)
+ if test -n "$objs$old_deplibs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $run $rm $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $run eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+ esac
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+ fi
+
+ if test "$preload" = yes; then
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+ test "$dlopen_self_static" = unknown; then
+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+ fi
+ fi
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ if test "$tagname" = CXX ; then
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ fi
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ dlsyms=
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${outputname}S.c"
+ else
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ fi
+ fi
+
+ if test -n "$dlsyms"; then
+ case $dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${outputname}.nm"
+
+ $show "$rm $nlist ${nlist}S ${nlist}T"
+ $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+ # Parse the name list into a source file.
+ $show "creating $output_objdir/$dlsyms"
+
+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ $show "generating symbol list for \`$output'"
+
+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for arg in $progfiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $run $rm $export_symbols
+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ else
+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ fi
+ fi
+
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+ $run eval '$echo ": $name " >> "$nlist"'
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -z "$run"; then
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $mv "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if grep -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ grep -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+ else
+ $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ fi
+
+ $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+ case $host in
+ *cygwin* | *mingw* )
+ $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs */
+struct {
+"
+ ;;
+ * )
+ $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+ ;;
+ esac
+
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ fi
+
+ pic_flag_for_symtable=
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+ esac;;
+ *-*-hpux*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag";;
+ esac
+ esac
+
+ # Now compile the dynamic symbol file.
+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+ case $host in
+ *cygwin* | *mingw* )
+ if test -f "$output_objdir/${outputname}.def" ; then
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ else
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ fi
+ ;;
+ * )
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ ;;
+ esac
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+ exit_status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+ $show "$rm $output_objdir/${outputname}S.${objext}"
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$shlibpath_var"; then
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ $echo "$modename: \`$output' will be relinked during installation" 1>&2
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+
+ # Now create the wrapper script.
+ $show "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+ fi
+
+ # Quote $echo for shipping.
+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if our run command is non-null.
+ if test -z "$run"; then
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ output_name=`basename $output`
+ output_path=`dirname $output`
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $rm $cwrappersource $cwrapper
+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS. */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ DEBUG("(main) argv[0] : %s\n",argv[0]);
+ DEBUG("(main) program_name : %s\n",program_name);
+ newargz = XMALLOC(char *, argc+2);
+EOF
+
+ cat >> $cwrappersource <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = find_executable(argv[0]);
+ if (newargz[1] == NULL)
+ lt_fatal("Couldn't find %s", argv[0]);
+ DEBUG("(main) found exe at : %s\n",newargz[1]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+
+ for (i=0; i<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+ ;;
+ esac
+
+ cat >> $cwrappersource <<"EOF"
+ return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char)name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable(const char * path)
+{
+ struct stat st;
+
+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0) &&
+ (
+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+ ((st.st_mode & S_IXUSR) == S_IXUSR))
+ )
+ return 1;
+ else
+ return 0;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise */
+char *
+find_executable (const char* wrapper)
+{
+ int has_slash = 0;
+ const char* p;
+ const char* p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char* concat_name;
+
+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char* path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char* q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR(*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ return NULL;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert(str != NULL);
+ assert(pat != NULL);
+
+ len = strlen(str);
+ patlen = strlen(pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp(str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variable:
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$echo are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ echo=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$echo will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $echo >> $output "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $echo >> $output "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" || \\
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $mkdir \"\$progdir\"
+ else
+ $rm \"\$progdir/\$file\"
+ fi"
+
+ $echo >> $output "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $echo \"\$relink_command_output\" >&2
+ $rm \"\$progdir/\$file\"
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $rm \"\$progdir/\$program\";
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $rm \"\$progdir/\$file\"
+ fi"
+ else
+ $echo >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $echo >> $output "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $echo >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $echo >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $echo >> $output "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $echo >> $output "\
+ \$echo \"\$0: cannot exec \$program \$*\"
+ exit $EXIT_FAILURE
+ fi
+ else
+ # The program doesn't exist.
+ \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$echo \"This script is just a wrapper for \$program.\" 1>&2
+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi\
+"
+ chmod +x $output
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ $echo "X$obj" | $Xsed -e 's%^.*/%%'
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "copying selected object files to avoid basename conflicts..."
+
+ if test -z "$gentop"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+ exit $exit_status
+ fi
+ fi
+
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ counter=`expr $counter + 1`
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ $run ln "$obj" "$gentop/$newobj" ||
+ $run cp "$obj" "$gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ $echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ eval cmd=\"$cmd\"
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$generated"; then
+ $show "${rm}r$generated"
+ $run ${rm}r$generated
+ fi
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ $show "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+
+ # Only create the output if not a dry run.
+ if test -z "$run"; then
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $rm $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $echo >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ fi
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool install mode
+ install)
+ modename="$modename: install"
+
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $echo "X$nonopt" | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$arg "
+ arg="$1"
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog$arg"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o) prev=$arg ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog $arg"
+ done
+
+ if test -z "$install_prog"; then
+ $echo "$modename: you must specify an install program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prev' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ $echo "$modename: no file or destination specified" 1>&2
+ else
+ $echo "$modename: you must specify a destination" 1>&2
+ fi
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Strip any trailing slash from the destination.
+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$destdir" = "X$dest" && destdir=.
+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files
+ if test "$#" -gt 2; then
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ library_names=
+ old_library=
+ relink_command=
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+ test "X$dir" = "X$file/" && dir=
+ dir="$dir$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ if test "$inst_prefix_dir" = "$destdir"; then
+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
+ else
+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
+ fi
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run eval "$striplib $destdir/$realname" || exit $?
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ if test "$linkname" != "$realname"; then
+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ fi
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ cmds=$postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ instname="$dir/$name"i
+ $show "$install_prog $instname $destdir/$name"
+ $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+ notinst_deplibs=
+ relink_command=
+
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo and FILE.exe exist: automatic-append-.exe
+ # behavior happens only for exec(3), not for open(2)! Also, sourcing
+ # `FILE.' does not work on cygwin managed mounts.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$notinst_deplibs"; then
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo and FILE.exe exist: automatic-append-.exe
+ # behavior happens only for exec(3), not for open(2)! Also, sourcing
+ # `FILE.' does not work on cygwin managed mounts.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+ tmpdir=`func_mktempdir`
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ ${rm}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ $echo "$modename: warning: cannot relink \`$file'" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
+ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+ ;;
+ esac
+ ;;
+ esac
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ test -n "$outputname" && ${rm}r "$tmpdir"
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ $show "$install_prog $file $oldlib"
+ $run eval "$install_prog \$file \$oldlib" || exit $?
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ cmds=$old_postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$future_libdirs"; then
+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+ fi
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ test -n "$run" && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool finish mode
+ finish)
+ modename="$modename: finish"
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ cmds=$finish_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
+ $cmd"
+ done
+ IFS="$save_ifs"
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $run eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ $echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $echo " $libdir"
+ done
+ $echo
+ $echo "If you ever happen to want to link against installed libraries"
+ $echo "in a given directory, LIBDIR, you must either use libtool, and"
+ $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ $echo "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ $echo " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ $echo " - add LIBDIR to the \`$runpath_var' environment variable"
+ $echo " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $echo " - use the \`$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $echo " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ fi
+ $echo
+ $echo "See any operating system documentation about shared libraries for"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool execute mode
+ execute)
+ modename="$modename: execute"
+
+ # The first argument is the command name.
+ cmd="$nonopt"
+ if test -z "$cmd"; then
+ $echo "$modename: you must specify a COMMAND" 1>&2
+ $echo "$help"
+ exit $EXIT_FAILURE
+ fi
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ if test ! -f "$file"; then
+ $echo "$modename: \`$file' is not a file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+ ;;
+
+ *)
+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+ args="$args \"$file\""
+ done
+
+ if test -z "$run"; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+ $echo "export $shlibpath_var"
+ fi
+ $echo "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
+ rm="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ for arg
+ do
+ case $arg in
+ -f) rm="$rm $arg"; rmforce=yes ;;
+ -*) rm="$rm $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ if test -z "$rm"; then
+ $echo "$modename: you must specify an RM program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if (test -L "$file") >/dev/null 2>&1 \
+ || (test -h "$file") >/dev/null 2>&1 \
+ || test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ cmds=$old_postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" \
+ && test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ noexename=`$echo $name|${SED} 's,.exe$,,'`
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$noexename
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles || exit_status=1
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ $show "rmdir $dir"
+ $run rmdir $dir >/dev/null 2>&1
+ fi
+ done
+
+ exit $exit_status
+ ;;
+
+ "")
+ $echo "$modename: you must specify a MODE" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test -z "$exec_cmd"; then
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+ eval exec $exec_cmd
+ exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+ --config show all configuration variables
+ --debug enable verbose shell tracing
+-n, --dry-run display commands without modifying any files
+ --features display basic configuration information and exit
+ --finish same as \`--mode=finish'
+ --help display this help message and exit
+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+ --quiet same as \`--silent'
+ --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ --version print version information
+
+MODE must be one of the following:
+
+ clean remove files from the build directory
+ compile compile a source file into a libtool object
+ execute automatically set library path, then run a program
+ finish complete the installation of libtool libraries
+ install install libraries or executables
+ link create a library or an executable
+ uninstall remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+ exit $EXIT_SUCCESS
+ ;;
+
+clean)
+ $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+compile)
+ $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -static always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
+
+execute)
+ $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+finish)
+ $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
+
+install)
+ $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+link)
+ $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+uninstall)
+ $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+*)
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/missing b/missing
new file mode 100755
index 0000000..dd58370
--- /dev/null
+++ b/missing
@@ -0,0 +1,336 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+case "$1" in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing 0.4 - GNU automake"
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+ aclocal*)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case "$f" in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+ system. You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1Help2man' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f y.tab.h ]; then
+ echo >y.tab.h
+ fi
+ if [ ! -f y.tab.c ]; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f lex.yy.c ]; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+ fi
+ if [ -f "$file" ]; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+ # We have makeinfo, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ fi
+ touch $file
+ ;;
+
+ tar)
+ shift
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ fi
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar ${1+"$@"} && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar ${1+"$@"} && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case "$firstarg" in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" ${1+"$@"} && exit 0
+ ;;
+ esac
+ case "$firstarg" in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" ${1+"$@"} && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+ system. You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequirements for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/mkinstalldirs b/mkinstalldirs
new file mode 100755
index 0000000..3f6353a
--- /dev/null
+++ b/mkinstalldirs
@@ -0,0 +1,101 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+# $Id: mkinstalldirs,v 1.1.1.1 2003/07/29 03:55:02 miq Exp $
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case "${1}" in
+ -h | --help | --h* ) # -h for help
+ echo "${usage}" 1>&2; exit 0 ;;
+ -m ) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
+ dirmode="${1}"
+ shift ;;
+ -- ) shift; break ;; # stop option processing
+ -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
+ * ) break ;; # first non-opt arg
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+0) exit 0 ;;
+esac
+
+case $dirmode in
+'')
+ if mkdir -p -- . 2>/dev/null; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ fi ;;
+*)
+ if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ fi ;;
+esac
+
+for file
+do
+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ shift
+
+ pathcomp=
+ for d
+ do
+ pathcomp="$pathcomp$d"
+ case "$pathcomp" in
+ -* ) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+
+ lasterr=""
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
+
+ pathcomp="$pathcomp/"
+ done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 3
+# End:
+# mkinstalldirs ends here
diff --git a/pixmaps/EasyTAG.ico b/pixmaps/EasyTAG.ico
new file mode 100755
index 0000000..0cfd775
--- /dev/null
+++ b/pixmaps/EasyTAG.ico
Binary files differ
diff --git a/pixmaps/EasyTAG.xpm b/pixmaps/EasyTAG.xpm
new file mode 100755
index 0000000..4c154ff
--- /dev/null
+++ b/pixmaps/EasyTAG.xpm
@@ -0,0 +1,631 @@
+/* XPM */
+static char * EasyTAG_xpm[] = {
+"60 60 568 2",
+" c None",
+". c #FFDB49",
+"+ c #FEDB49",
+"@ c #FEDA49",
+"# c #FEDC49",
+"$ c #FEDC48",
+"% c #FEDD48",
+"& c #FFDC49",
+"* c #FEDD49",
+"= c #FEDE49",
+"- c #FEE04A",
+"; c #FEE24A",
+"> c #FEE349",
+", c #FEE449",
+"' c #FEE649",
+") c #FEE748",
+"! c #FEE848",
+"~ c #FEE948",
+"{ c #FDEA47",
+"] c #FDEB47",
+"^ c #FDEC45",
+"/ c #FDED45",
+"( c #FDEE44",
+"_ c #FDED43",
+": c #FDEB43",
+"< c #FEDD4A",
+"[ c #FEDF4B",
+"} c #FDE04C",
+"| c #FDE34D",
+"1 c #FEE54D",
+"2 c #FDE64E",
+"3 c #FDE74E",
+"4 c #FDE94F",
+"5 c #FDEA4F",
+"6 c #FCEC4F",
+"7 c #FDED4F",
+"8 c #FDEF4F",
+"9 c #FCF04F",
+"0 c #FCF14F",
+"a c #FEE44B",
+"b c #FCF24D",
+"c c #FCF14C",
+"d c #FCF14B",
+"e c #FCF04A",
+"f c #FDF049",
+"g c #FDF048",
+"h c #FDEF48",
+"i c #FDEF47",
+"j c #FDEF46",
+"k c #FDEE46",
+"l c #FDEE45",
+"m c #FDED42",
+"n c #FFDC4A",
+"o c #FEDD4B",
+"p c #FDDF4C",
+"q c #FDE14E",
+"r c #FDE450",
+"s c #FDE651",
+"t c #FDE852",
+"u c #FDEA53",
+"v c #FCEC54",
+"w c #FCED55",
+"x c #FCEF56",
+"y c #FCEA52",
+"z c #FBF056",
+"A c #FAF558",
+"B c #FBF759",
+"C c #FBF658",
+"D c #FBF657",
+"E c #FBF556",
+"F c #FBF555",
+"G c #FBF554",
+"H c #FBF453",
+"I c #FBF452",
+"J c #FCF351",
+"K c #FCF350",
+"L c #FCF24F",
+"M c #FEE24B",
+"N c #FEE046",
+"O c #F9FB62",
+"P c #F9FA61",
+"Q c #FAFA60",
+"R c #FAF95F",
+"S c #FAF95E",
+"T c #FAF95D",
+"U c #FAF85D",
+"V c #FAF85C",
+"W c #FBF258",
+"X c #FBF156",
+"Y c #FAF759",
+"Z c #FEE64B",
+"` c #FFDE4A",
+" . c #FEE843",
+".. c #FEE14E",
+"+. c #FAF65A",
+"@. c #FCED54",
+"#. c #FDEA4C",
+"$. c #FCF14D",
+"%. c #FEEC41",
+"&. c #FFDE48",
+"*. c #FCE451",
+"=. c #FAF85B",
+"-. c #FEDE4B",
+";. c #FDE851",
+">. c #FCEF4D",
+",. c #FDEB4C",
+"'. c #FEE544",
+"). c #FCEC57",
+"!. c #FDE44F",
+"~. c #FEE24D",
+"{. c #FCF24E",
+"]. c #FDE94C",
+"^. c #FEEB41",
+"/. c #FEDB48",
+"(. c #FAF55F",
+"_. c #F9FB63",
+":. c #F9FA62",
+"<. c #FAFA61",
+"[. c #FAF960",
+"}. c #FBEF56",
+"|. c #FAF75A",
+"1. c #FBF659",
+"2. c #FBF557",
+"3. c #FBF454",
+"4. c #FCF04B",
+"5. c #FFE345",
+"6. c #F9FB64",
+"7. c #FAF75B",
+"8. c #FEEA41",
+"9. c #FDE754",
+"0. c #FDE94B",
+"a. c #FEEC40",
+"b. c #FBF05C",
+"c. c #FDE650",
+"d. c #FCF156",
+"e. c #FDEC4C",
+"f. c #FDEA4B",
+"g. c #E0D743",
+"h. c #DACF41",
+"i. c #FCF049",
+"j. c #F4E746",
+"k. c #F9EB46",
+"l. c #EFE143",
+"m. c #C8BC37",
+"n. c #E3D63E",
+"o. c #BEB234",
+"p. c #D9CB3A",
+"q. c #B7AC31",
+"r. c #D6C839",
+"s. c #FEE045",
+"t. c #F9F963",
+"u. c #FAF85E",
+"v. c #FAF75C",
+"w. c #FEE34E",
+"x. c #D8D34A",
+"y. c #A6A238",
+"z. c #BDB73F",
+"A. c #ADA93A",
+"B. c #B0AB3A",
+"C. c #BFB93F",
+"D. c #9F9934",
+"E. c #CEC642",
+"F. c #D9D045",
+"G. c #BEB73C",
+"H. c #E5DC48",
+"I. c #ABA435",
+"J. c #BAA536",
+"K. c #CFB53C",
+"L. c #BAB138",
+"M. c #A79F32",
+"N. c #A79F31",
+"O. c #B0A733",
+"P. c #90882A",
+"Q. c #A59C2F",
+"R. c #A49B2E",
+"S. c #EADC42",
+"T. c #B5AA32",
+"U. c #9F962C",
+"V. c #A69C2E",
+"W. c #A99E2D",
+"X. c #ADA22F",
+"Y. c #FEEC42",
+"Z. c #FEE04D",
+"`. c #F9FB65",
+" + c #FCF055",
+".+ c #9D9935",
+"++ c #DDD74A",
+"@+ c #C0BB40",
+"#+ c #AFAA3A",
+"$+ c #C3BD41",
+"%+ c #BAB33C",
+"&+ c #AAA437",
+"*+ c #A9A336",
+"=+ c #807B28",
+"-+ c #E6DD48",
+";+ c #AAA335",
+">+ c #A99E33",
+",+ c #AC9431",
+"'+ c #D4C13F",
+")+ c #898229",
+"!+ c #B7AE36",
+"~+ c #C1B738",
+"{+ c #A49B2F",
+"]+ c #9E952D",
+"^+ c #C0B636",
+"/+ c #B6AB33",
+"(+ c #D6C93B",
+"_+ c #FBEC45",
+":+ c #BEB233",
+"<+ c #E6D73E",
+"[+ c #FEE444",
+"}+ c #FDE350",
+"|+ c #FEE14D",
+"1+ c #FEE04C",
+"2+ c #E2DD4E",
+"3+ c #787529",
+"4+ c #C2BD41",
+"5+ c #928E31",
+"6+ c #A5A137",
+"7+ c #C8C242",
+"8+ c #B9B33C",
+"9+ c #C5BE3F",
+"0+ c #CCC441",
+"a+ c #B8B13A",
+"b+ c #C5BD3E",
+"c+ c #C6BE3D",
+"d+ c #D3CA40",
+"e+ c #EDD546",
+"f+ c #E7C742",
+"g+ c #F7E94A",
+"h+ c #FDF04A",
+"i+ c #FDEF49",
+"j+ c #FDEE47",
+"k+ c #FDED44",
+"l+ c #FDE753",
+"m+ c #FCF257",
+"n+ c #FDEB52",
+"o+ c #FAF456",
+"p+ c #FCF352",
+"q+ c #FCF250",
+"r+ c #E8D144",
+"s+ c #C1B839",
+"t+ c #F4E745",
+"u+ c #777021",
+"v+ c #534E17",
+"w+ c #5D581A",
+"x+ c #575218",
+"y+ c #3B3810",
+"z+ c #FFE146",
+"A+ c #FBF75A",
+"B+ c #FDE64F",
+"C+ c #FFDD4A",
+"D+ c #FBF457",
+"E+ c #D5CD45",
+"F+ c #4F4C19",
+"G+ c #54511B",
+"H+ c #3C3913",
+"I+ c #413F14",
+"J+ c #4C4918",
+"K+ c #141306",
+"L+ c #FDE74B",
+"M+ c #62541C",
+"N+ c #141206",
+"O+ c #DACF40",
+"P+ c #514D17",
+"Q+ c #877F26",
+"R+ c #EADC40",
+"S+ c #191807",
+"T+ c #FCEC44",
+"U+ c #FEDF4D",
+"V+ c #EEEF5E",
+"W+ c #E3E358",
+"X+ c #D8D854",
+"Y+ c #C8C74D",
+"Z+ c #B8B747",
+"`+ c #A6A53F",
+" @ c #A9A83F",
+".@ c #FBF458",
+"+@ c #FDE850",
+"@@ c #C8C141",
+"#@ c #686522",
+"$@ c #636020",
+"%@ c #96902F",
+"&@ c #FAEF4C",
+"*@ c #F5E94A",
+"=@ c #201C09",
+"-@ c #9E952F",
+";@ c #635E1D",
+">@ c #E3D641",
+",@ c #111005",
+"'@ c #FAEB46",
+")@ c #827A23",
+"!@ c #F4E542",
+"~@ c #FEE942",
+"{@ c #878835",
+"]@ c #5A5A23",
+"^@ c #121207",
+"/@ c #868634",
+"(@ c #9A993B",
+"_@ c #9C9C3B",
+":@ c #323213",
+"<@ c #F4F15A",
+"[@ c #F6F359",
+"}@ c #E3D048",
+"|@ c #9F9233",
+"1@ c #A7A33A",
+"2@ c #B4B03E",
+"3@ c #A4A038",
+"4@ c #88842E",
+"5@ c #757227",
+"6@ c #C6C042",
+"7@ c #676422",
+"8@ c #504E1B",
+"9@ c #716D25",
+"0@ c #696622",
+"a@ c #777326",
+"b@ c #88832B",
+"c@ c #847F29",
+"d@ c #EFE549",
+"e@ c #ACA434",
+"f@ c #5D591C",
+"g@ c #F7EB4A",
+"h@ c #201E09",
+"i@ c #E0D441",
+"j@ c #C9BE39",
+"k@ c #27250B",
+"l@ c #C0B435",
+"m@ c #5F591A",
+"n@ c #3B3710",
+"o@ c #474213",
+"p@ c #B8AD31",
+"q@ c #FEE445",
+"r@ c #FBF05B",
+"s@ c #F9FC64",
+"t@ c #F9FC63",
+"u@ c #E1E257",
+"v@ c #292910",
+"w@ c #868633",
+"x@ c #CECE4E",
+"y@ c #404018",
+"z@ c #D5D54F",
+"A@ c #51501E",
+"B@ c #6A6927",
+"C@ c #3D3C16",
+"D@ c #A9A83D",
+"E@ c #E3E051",
+"F@ c #3D3C15",
+"G@ c #BEBB43",
+"H@ c #ADA93C",
+"I@ c #494719",
+"J@ c #E6E14F",
+"K@ c #8B882F",
+"L@ c #BBB63E",
+"M@ c #6A6723",
+"N@ c #FCF452",
+"O@ c #F3EB4E",
+"P@ c #87822B",
+"Q@ c #797426",
+"R@ c #545019",
+"S@ c #353210",
+"T@ c #605C1D",
+"U@ c #2D2A0D",
+"V@ c #6B651F",
+"W@ c #E8DB42",
+"X@ c #090903",
+"Y@ c #F5E845",
+"Z@ c #5B5518",
+"`@ c #A99F2D",
+" # c #FEED42",
+".# c #FEDF47",
+"+# c #FDE24F",
+"@# c #F1F15D",
+"## c #0E0E05",
+"$# c #919138",
+"%# c #3B3B17",
+"&# c #C3C34A",
+"*# c #C8C74B",
+"=# c #9B9A3A",
+"-# c #666626",
+";# c #9E9C39",
+"># c #54531E",
+",# c #DDDA4E",
+"'# c #353412",
+")# c #A9A53B",
+"!# c #B8B540",
+"~# c #A19D37",
+"{# c #FBF656",
+"]# c #F6F053",
+"^# c #302F10",
+"/# c #EDE74F",
+"(# c #696623",
+"_# c #C2BC40",
+":# c #979230",
+"<# c #696521",
+"[# c #EFE449",
+"}# c #1D1C09",
+"|# c #F6EB49",
+"1# c #FDEA4A",
+"2# c #F5DD47",
+"3# c #171607",
+"4# c #E7DB43",
+"5# c #555018",
+"6# c #746E21",
+"7# c #FCED46",
+"8# c #E1D33D",
+"9# c #1F1D08",
+"0# c #918727",
+"a# c #FEEB42",
+"b# c #FAF660",
+"c# c #FAFB62",
+"d# c #0C0C05",
+"e# c #E9E95A",
+"f# c #8E8E36",
+"g# c #ACAC42",
+"h# c #AEAD42",
+"i# c #DDDC53",
+"j# c #DCDB53",
+"k# c #5A5921",
+"l# c #6F6E29",
+"m# c #424218",
+"n# c #E9E553",
+"o# c #DFDB50",
+"p# c #A5A33B",
+"q# c #938F33",
+"r# c #7E762A",
+"s# c #26250D",
+"t# c #DED94C",
+"u# c #979433",
+"v# c #807D2B",
+"w# c #373512",
+"x# c #FAF353",
+"y# c #A29D34",
+"z# c #504D19",
+"A# c #F9EF4E",
+"B# c #F9EF4D",
+"C# c #E7DE47",
+"D# c #827C28",
+"E# c #343210",
+"F# c #B1A935",
+"G# c #F8DF48",
+"H# c #96822B",
+"I# c #25230B",
+"J# c #373410",
+"K# c #7A7323",
+"L# c #F3E545",
+"M# c #6F691F",
+"N# c #423E12",
+"O# c #4F4A16",
+"P# c #5A5418",
+"Q# c #B6AA31",
+"R# c #B0A52F",
+"S# c #FEE744",
+"T# c #FCE754",
+"U# c #161609",
+"V# c #F4F45F",
+"W# c #DADA54",
+"X# c #D8D853",
+"Y# c #828231",
+"Z# c #BFBE48",
+"`# c #5F5E24",
+" $ c #BAB945",
+".$ c #D7D54F",
+"+$ c #323212",
+"@$ c #878530",
+"#$ c #A6A33C",
+"$$ c #58571F",
+"%$ c #F3EC54",
+"&$ c #F4D246",
+"*$ c #454016",
+"=$ c #DBD64B",
+"-$ c #23220C",
+";$ c #FBF252",
+">$ c #57541C",
+",$ c #4D4A18",
+"'$ c #56531B",
+")$ c #BEB73B",
+"!$ c #938E2E",
+"~$ c #817C27",
+"{$ c #9C952F",
+"]$ c #A19A31",
+"^$ c #F6E348",
+"/$ c #C8AC39",
+"($ c #D9CC40",
+"_$ c #E4D842",
+":$ c #F2E545",
+"<$ c #FFE346",
+"[$ c #FEDB4A",
+"}$ c #EDEF5E",
+"|$ c #CBCB4F",
+"1$ c #131307",
+"2$ c #97973B",
+"3$ c #A1A13E",
+"4$ c #8E8E37",
+"5$ c #333313",
+"6$ c #ABAA40",
+"7$ c #A1A03C",
+"8$ c #414118",
+"9$ c #646325",
+"0$ c #595821",
+"a$ c #575620",
+"b$ c #4E4D1C",
+"c$ c #C9C749",
+"d$ c #6E6C27",
+"e$ c #656323",
+"f$ c #675B1E",
+"g$ c #BFAE3C",
+"h$ c #C5C143",
+"i$ c #B5B03E",
+"j$ c #3E3D15",
+"k$ c #D7D148",
+"l$ c #FCED4B",
+"m$ c #FEEA4A",
+"n$ c #FCED58",
+"o$ c #C5C64E",
+"p$ c #77782F",
+"q$ c #95963A",
+"r$ c #A4A440",
+"s$ c #B4B445",
+"t$ c #C7C74C",
+"u$ c #CECD4E",
+"v$ c #F4F35C",
+"w$ c #F1F05A",
+"x$ c #EFED58",
+"y$ c #FEE54E",
+"z$ c #FEE14C",
+"A$ c #8B8830",
+"B$ c #434117",
+"C$ c #58561E",
+"D$ c #969232",
+"E$ c #FEE74A",
+"F$ c #FBF75B",
+"G$ c #FDE951",
+"H$ c #E0DA4D",
+"I$ c #EFE951",
+"J$ c #FCF453",
+"K$ c #FCF04E",
+"L$ c #FCEE4C",
+"M$ c #FDEB4B",
+"N$ c #FFDD49",
+"O$ c #FFE249",
+"P$ c #FEE148",
+"Q$ c #FEDF48",
+"R$ c #FEDE48",
+"S$ c #FAF961",
+"T$ c #FDEC52",
+"U$ c #FCF255",
+"V$ c #FCEF53",
+"W$ c #FCEE52",
+"X$ c #FCEC51",
+"Y$ c #FDEA50",
+"Z$ c #FDE84F",
+"`$ c #FEE74E",
+" % c #FEE34C",
+".% c #FEE14B",
+"+% c #FEDF4A",
+"@% c #FBF15B",
+"#% c #FAFA62",
+"$% c #FBF65E",
+"%% c #FBF45C",
+"&% c #FBF25A",
+"*% c #FCEF58",
+"=% c #FCED56",
+"-% c #FCEB54",
+";% c #FDE953",
+">% c #FDE751",
+",% c #FDE550",
+"'% c #FCE24E",
+")% c #FDDE4B",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . . . ",
+" . . . . + + + @ . . . . . . . # $ % . ",
+" . . . . . & . @ . . . . . . + . * = - ; > , ' ) ! ~ { ] ^ / ( _ _ : . ",
+" + . . . + + + + . . . . . . . # < [ } | 1 2 3 4 5 6 7 8 9 0 - a b c c d e e f g h i j k l l ( _ _ m $ . ",
+" . n o p q r s t u v w x y . z A B C D D E F F G H H I I J K K L M M b c c d e e f g h i j k l l ( _ _ m N . ",
+" . o O O P Q Q R R S T U V W . X Y B C D D E F F G H H I I J K K L Z ` b c c d e e f g h i j k l l ( _ _ m .. ",
+" . ..O O P Q Q R R S T U V +.. @.Y B C D D E F F G H H I I J K K L #.. $.c c d e e f g h i j k l l ( _ _ m %.&.. ",
+" + *.O O P Q Q R R S T U V =.-.;.Y B C D D E F F G H H I I J K K L >.. ,.c c d e e f g h i j k l l ( _ _ m %.'.. ",
+" . ).O O P Q Q R R S T U V =.!.~.Y B C D D E F F G H H I I J K K L {.].$.c c d e e f g h i j k l l ( _ _ m %.^./.. ",
+" . (._._.:.<.<.[.R R S U U V }.w |.B 1.C D 2.E F F 3.H H I J J K L L {.b $.c d 4.e f f h i i k l l ( _ _ m %.%.5.. ",
+" . o 6._._.:.<.<.[.R R S U U V 7.7.|.B 1.C D 2.E F F 3.H H I J J K L L {.b $.c d 4.e f f h i i k l l ( _ _ m %.%.8.. ",
+" + 9.6._._.:.<.<.[.R R S U U V 7.7.|.B 1.C D 2.E F F 3.H H I J J K L L {.0.- c d 4.e f f h i i k l l ( _ _ m %.%.a.% . ",
+" . b.6._._.:.<.<.[.R R S U U V 7.+.c.d.1.C D 2.E F F 3.H H I J J K L L {.e.. f.g.h.e f i.j.k.l.m.n.o.p.q.r.m %.%.a.s.. ",
+" . t.6._._.:.<.<.[.[.R S u.U V v.7.[ w.1.C C 2.E x.y.z.A.B.C.D.E.J F.G.H.I.J.K.L.M.4.N.O.P.Q.R.S.T.U.V.W.X._ Y.Y.%.'.. ",
+". Z.`.6._._.:.<.<.[.[.R S u.U V v.7.@.. +C C 2.E E .+++@+#+$+%+&+J *+=+-+;+>+,+'+)+4.!+~+{+]+^+/+(+T._+:+<+_ Y.Y.%.[+. ",
+". }+`.6._._.:.<.<.[.[.R S u.U V v.7.|.|+1+C C 2.E 2+3+4+5+6+7+8+9+J 0+a+b+c+d+e+f+g+4.h+f i+h i j+k k l k+k+_ Y.Y.%.5.+ ",
+". l+`.6._._.:.<.<.[.[.R S u.U V v.7.|.m+. n+C 2.E o+F 3.3.H H p+J J q+L L {.$.>.& r+s+h+f i+h t+u+v+w+x+y+k+_ Y.Y.%.z+. ",
+". l+`.6._._.:.<.<.[.[.R S u.U V v.7.|.A+B+C+D+2.E E F 3.3.H H E+F+G+H+I+J+K+$.$.L+M+N+O+f i+h P+Q+k k R+S+T+_ Y.Y.%.$ . ",
+". U+`.6._._.V+W+X+Y+Z+`+ @u.U V v.7.|.A+.@n +@2.E E F 3.3.H H @@#@J $@%@L J+&@$.*@=@-@;@f i+>@,@'@k k l )@!@_ Y.Y.~@. ",
+" . t.6._._.{@]@^@/@(@_@:@u.U V <@[@|.A+1.}@|@1@2@3@4@5@6@7@8@9@0@J a@b@L c@d@$.e@f@g@h@i@i+j@k@j+k l@m@n@o@p@Y.Y.q@+ ",
+" . r@s@t@t@O u@v@Q w@x@y@S z@A@B@C@D@A+E@F@G@H@I@J@K@5@G L@M@N@O@J P@Q@L {.b $.R@S@T@U@V@f W@X@Y@k k l Z@`@_ #Y..#+ ",
+" + +#s@t@t@O @###$#%#&#*#S =#-#V ;#>#A+,#'#)#!#~#{#]#^#/#(#_#N@J J :#<#L {.b [#}#|#1#2#3#4#h 5#6#7#k 8#9#0#_ #a#@ ",
+" . b#s@s@_.c#d#e#f#g#h#i#j#-#k#l#m#n#o#p#q#r#s#t#E u#v#w#x#N@p+J y#z#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#_ #S#. ",
+" + T#s@s@_.c#U#V#W#X#Y#Z#`# $V .$+$@$#$$$%$&$*$=$E ]#-$5@H N@;$>$,$F+'$)$!$~${$]$^$/$($_$:$h i k k l k+k+_ #<$+ ",
+" [$:.s@}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$F j$k$H N@p+J K K L {.{.$.c c l$. m$f h h i k k l k+k+_ #z++ ",
+" . n$s@o$p$q$r$s$t$u$v$S w$x$V =.A+A+B C y$z$A$B$C$D$3.H N@p+J K K L {.{.$.c c 4.. E$f h h i k k l k+k+_ Y..#+ ",
+" . U+s@_.c#c#<.<.Q R R S T U V =.F$A+B 1.G$C+D H$I$F 3.3.J$p+p+J K q+L {.K$>.L$M$N$O$E$' , > P$Q$R$% # + . . . ",
+" . S$_.c#c#<.<.Q R R S T U V =.F$A+B 1.T$. U$V$W$X$Y$Z$`$1 %.%+%< N$. . . . . . . . . + . + @ . + ",
+" . @%_.#%[.$%%%&%*%=%-%;%>%,%'%|+)%< + . . . . . . . + + + + . + . ",
+" n C+n . . . . . . @ + + & . + . . . ",
+" . ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/pixmaps/EasyTAG2.ico b/pixmaps/EasyTAG2.ico
new file mode 100755
index 0000000..437df00
--- /dev/null
+++ b/pixmaps/EasyTAG2.ico
Binary files differ
diff --git a/pixmaps/EasyTAG2.xpm b/pixmaps/EasyTAG2.xpm
new file mode 100755
index 0000000..6de7ca8
--- /dev/null
+++ b/pixmaps/EasyTAG2.xpm
@@ -0,0 +1,1318 @@
+/* XPM */
+static char * EasyTAG2_xpm[] = {
+"61 61 1254 2",
+" c None",
+". c #8C877A",
+"+ c #9B9585",
+"@ c #8D8675",
+"# c #8D8674",
+"$ c #767162",
+"% c #756E61",
+"& c #847D6D",
+"* c #938B7A",
+"= c #938C7B",
+"- c #787569",
+"; c #8D887B",
+"> c #979180",
+", c #9A9381",
+"' c #716C5E",
+") c #3B3933",
+"! c #36352F",
+"~ c #767062",
+"{ c #968F7F",
+"] c #928A78",
+"^ c #6F695B",
+"/ c #3A3932",
+"( c #555247",
+"_ c #9F9785",
+": c #66635A",
+"< c #867F70",
+"[ c #938A76",
+"} c #6D6757",
+"| c #37352E",
+"1 c #42413A",
+"2 c #978F7E",
+"3 c #626057",
+"4 c #6F695A",
+"5 c #767063",
+"6 c #2E5F7F",
+"7 c #316991",
+"8 c #2F5E80",
+"9 c #626156",
+"0 c #837B6A",
+"a c #807A68",
+"b c #615C4E",
+"c c #353430",
+"d c #535047",
+"e c #9B9481",
+"f c #78715E",
+"g c #71726A",
+"h c #8C8C80",
+"i c #427391",
+"j c #3681B5",
+"k c #497795",
+"l c #7B8079",
+"m c #757568",
+"n c #484740",
+"o c #28729D",
+"p c #297EAF",
+"q c #706C5F",
+"r c #8F897A",
+"s c #746D5B",
+"t c #364950",
+"u c #306F95",
+"v c #496370",
+"w c #949081",
+"x c #7F8078",
+"y c #978F79",
+"z c #71756D",
+"A c #485E68",
+"B c #5A686A",
+"C c #67665C",
+"D c #647577",
+"E c #4F7B90",
+"F c #3F7D9E",
+"G c #2F89BB",
+"H c #2A92CE",
+"I c #2C98D6",
+"J c #2986BD",
+"K c #928C7C",
+"L c #66625A",
+"M c #5A5945",
+"N c #32596B",
+"O c #3375A4",
+"P c #66777F",
+"Q c #968B74",
+"R c #9A8F78",
+"S c #A29882",
+"T c #9A8F79",
+"U c #76776B",
+"V c #68716E",
+"W c #606E6F",
+"X c #5E7579",
+"Y c #6E7976",
+"Z c #81847A",
+"` c #8C8B7E",
+" . c #81887E",
+".. c #66838B",
+"+. c #49819E",
+"@. c #2D576D",
+"#. c #9A9484",
+"$. c #A89B3E",
+"%. c #C7B93F",
+"&. c #CCBE3D",
+"*. c #C3B638",
+"=. c #969339",
+"-. c #7F836C",
+";. c #A99F8A",
+">. c #A49B85",
+",. c #6C6555",
+"'. c #534E42",
+"). c #6F6652",
+"!. c #254B65",
+"~. c #296591",
+"{. c #26638C",
+"]. c #227FB3",
+"^. c #237BAE",
+"/. c #2272A0",
+"(. c #29688C",
+"_. c #3C677C",
+":. c #596F74",
+"<. c #84867C",
+"[. c #918F80",
+"}. c #7F7A6D",
+"|. c #504E45",
+"1. c #878072",
+"2. c #6F6C61",
+"3. c #C1B142",
+"4. c #CFC03F",
+"5. c #C6BC38",
+"6. c #ADA736",
+"7. c #948E3A",
+"8. c #99936C",
+"9. c #A69C86",
+"0. c #A29983",
+"a. c #4F4C40",
+"b. c #6E6551",
+"c. c #335369",
+"d. c #337FB5",
+"e. c #2F79AB",
+"f. c #2997D7",
+"g. c #2A97D7",
+"h. c #3297D3",
+"i. c #3D9ACF",
+"j. c #4197C7",
+"k. c #3E8EBC",
+"l. c #397DA3",
+"m. c #366883",
+"n. c #5C625E",
+"o. c #938A77",
+"p. c #958F7E",
+"q. c #737066",
+"r. c #938C7C",
+"s. c #A89C3E",
+"t. c #D0C040",
+"u. c #C4BA37",
+"v. c #878435",
+"w. c #686250",
+"x. c #9F957F",
+"y. c #A99F89",
+"z. c #9B937B",
+"A. c #6C6634",
+"B. c #5B5820",
+"C. c #706853",
+"D. c #2D5775",
+"E. c #327AAF",
+"F. c #2F7EB1",
+"G. c #309AD8",
+"H. c #3F9ED6",
+"I. c #47A2D6",
+"J. c #49A2D6",
+"K. c #48A2D7",
+"L. c #47A2D7",
+"M. c #46A0D4",
+"N. c #419ACD",
+"O. c #277DAE",
+"P. c #21282C",
+"Q. c #5E5B50",
+"R. c #918977",
+"S. c #8D8676",
+"T. c #8A8575",
+"U. c #605D55",
+"V. c #C5B740",
+"W. c #CCC03A",
+"X. c #999335",
+"Y. c #5C584E",
+"Z. c #8C8775",
+"`. c #4D5441",
+" + c #8E872B",
+".+ c #A09B33",
+"++ c #3A3C39",
+"@+ c #485455",
+"#+ c #296189",
+"$+ c #3272A4",
+"%+ c #3A90C3",
+"&+ c #49A3D6",
+"*+ c #49A3D8",
+"=+ c #4AA3D7",
+"-+ c #3A9DD6",
+";+ c #246892",
+">+ c #676356",
+",+ c #9D9683",
+"'+ c #7C776B",
+")+ c #716D61",
+"!+ c #868173",
+"~+ c #A79B44",
+"{+ c #A29644",
+"]+ c #A79A44",
+"^+ c #8F873E",
+"/+ c #C9BB3E",
+"(+ c #CCC039",
+"_+ c #747032",
+":+ c #58594E",
+"<+ c #35535A",
+"[+ c #B2A939",
+"}+ c #B7B13A",
+"|+ c #3D7A9F",
+"1+ c #327CB0",
+"2+ c #2D6A98",
+"3+ c #3882B2",
+"4+ c #47A0D4",
+"5+ c #4BA4D7",
+"6+ c #49A3D7",
+"7+ c #44A1D6",
+"8+ c #2F94CF",
+"9+ c #1A3748",
+"0+ c #8B8473",
+"a+ c #878172",
+"b+ c #898373",
+"c+ c #9E9241",
+"d+ c #CEBD4E",
+"e+ c #DAC951",
+"f+ c #DDCB52",
+"g+ c #DDCB51",
+"h+ c #DECC52",
+"i+ c #C7B84C",
+"j+ c #C8BB3A",
+"k+ c #CCC139",
+"l+ c #7A7431",
+"m+ c #2979A7",
+"n+ c #296789",
+"o+ c #42635D",
+"p+ c #C3B73A",
+"q+ c #B6B138",
+"r+ c #457184",
+"s+ c #3373A5",
+"t+ c #3376A8",
+"u+ c #3986B7",
+"v+ c #4CA4D7",
+"w+ c #4DA4D8",
+"x+ c #3E9FD6",
+"y+ c #2678A8",
+"z+ c #827B6C",
+"A+ c #969080",
+"B+ c #787467",
+"C+ c #7F796A",
+"D+ c #C7B74C",
+"E+ c #D1C04F",
+"F+ c #C0B43A",
+"G+ c #CBC038",
+"H+ c #AFA436",
+"I+ c #31505B",
+"J+ c #298FC9",
+"K+ c #2A96D5",
+"L+ c #2F7DA7",
+"M+ c #949743",
+"N+ c #C6BB37",
+"O+ c #B8AF3A",
+"P+ c #CCBD51",
+"Q+ c #B5B15A",
+"R+ c #75937A",
+"S+ c #458FB7",
+"T+ c #459DD0",
+"U+ c #47A0D5",
+"V+ c #4DA5D8",
+"W+ c #4FA6D8",
+"X+ c #50A6D8",
+"Y+ c #4FA5D8",
+"Z+ c #46A2D7",
+"`+ c #3198D3",
+" @ c #1D465E",
+".@ c #827C6C",
+"+@ c #9B9484",
+"@@ c #9C9583",
+"#@ c #47453F",
+"$@ c #CFBE4E",
+"%@ c #E0CE55",
+"&@ c #E0CE54",
+"*@ c #E0CE53",
+"=@ c #DFCC53",
+"-@ c #DCCA51",
+";@ c #BEB144",
+">@ c #C4BA36",
+",@ c #A7A744",
+"'@ c #728E66",
+")@ c #739067",
+"!@ c #A7A743",
+"~@ c #CABF3A",
+"{@ c #BEB637",
+"]@ c #BFB246",
+"^@ c #BDB658",
+"/@ c #7F9876",
+"(@ c #488AA9",
+"_@ c #449DD0",
+":@ c #46A0D5",
+"<@ c #52A7D8",
+"[@ c #54A8D9",
+"}@ c #4EA5D8",
+"|@ c #3FA0D7",
+"1@ c #2883B6",
+"2@ c #6A675A",
+"3@ c #9F9684",
+"4@ c #857F71",
+"5@ c #8D897D",
+"6@ c #A59E8C",
+"7@ c #797467",
+"8@ c #E2D259",
+"9@ c #E3D35D",
+"0@ c #E3D25D",
+"a@ c #E3D25E",
+"b@ c #E2D25C",
+"c@ c #DACA59",
+"d@ c #BCB146",
+"e@ c #C9BE38",
+"f@ c #C8BE39",
+"g@ c #C4BA38",
+"h@ c #BAB337",
+"i@ c #BAAF42",
+"j@ c #D7C650",
+"k@ c #C4B954",
+"l@ c #4C88A0",
+"m@ c #449BCD",
+"n@ c #4FA3D4",
+"o@ c #53A7D8",
+"p@ c #57A9D9",
+"q@ c #56A9D9",
+"r@ c #51A7D8",
+"s@ c #359BD6",
+"t@ c #215777",
+"u@ c #736E5F",
+"v@ c #938C79",
+"w@ c #99907E",
+"x@ c #928B7A",
+"y@ c #605C52",
+"z@ c #E1CF54",
+"A@ c #E3D25F",
+"B@ c #E3D261",
+"C@ c #E3D263",
+"D@ c #E3D366",
+"E@ c #E3D368",
+"F@ c #E3D364",
+"G@ c #E3D262",
+"H@ c #DECD5F",
+"I@ c #C7BA53",
+"J@ c #BAB145",
+"K@ c #B8B03F",
+"L@ c #B7AF3F",
+"M@ c #BBB145",
+"N@ c #CABC51",
+"O@ c #DDCC56",
+"P@ c #DFCD53",
+"Q@ c #DECC51",
+"R@ c #548188",
+"S@ c #408FBC",
+"T@ c #4F9FCD",
+"U@ c #54A6D5",
+"V@ c #59AAD9",
+"W@ c #58AAD9",
+"X@ c #42A1D7",
+"Y@ c #2A8AC3",
+"Z@ c #9C9141",
+"`@ c #E2D056",
+" # c #E3D260",
+".# c #E3D46E",
+"+# c #E3D571",
+"@# c #E3D570",
+"## c #E3D46B",
+"$# c #E0D060",
+"%# c #DDCD60",
+"&# c #E2D260",
+"*# c #E2D25A",
+"=# c #E2D058",
+"-# c #DECD52",
+";# c #D9C851",
+"># c #366983",
+",# c #3D82AB",
+"'# c #4C97C3",
+")# c #54A4D3",
+"!# c #58A9D9",
+"~# c #5AABDA",
+"{# c #379CD5",
+"]# c #236389",
+"^# c #B4A647",
+"/# c #E3D158",
+"(# c #E3D46D",
+"_# c #E3D678",
+":# c #E4D87E",
+"<# c #E4D77D",
+"[# c #E3D46C",
+"}# c #E3D369",
+"|# c #E3D367",
+"1# c #E3D469",
+"2# c #E3D46A",
+"3# c #E3D363",
+"4# c #E2D158",
+"5# c #CCBE50",
+"6# c #2F6380",
+"7# c #3D7DA2",
+"8# c #4B94BE",
+"9# c #53A3D0",
+"0# c #58A8D8",
+"a# c #5CACDA",
+"b# c #60ADDB",
+"c# c #5DACDA",
+"d# c #43A1D6",
+"e# c #2D92CC",
+"f# c #BCAD48",
+"g# c #E3D15A",
+"h# c #E3D572",
+"i# c #E4D880",
+"j# c #E4DA8B",
+"k# c #E4DA8D",
+"l# c #E4D988",
+"m# c #E3D77A",
+"n# c #E3D677",
+"o# c #E3D674",
+"p# c #E3D675",
+"q# c #E3D676",
+"r# c #ACA752",
+"s# c #336888",
+"t# c #3F7DA2",
+"u# c #4B93BD",
+"v# c #55A3D1",
+"w# c #5AAAD8",
+"x# c #62AEDB",
+"y# c #67B1DC",
+"z# c #63AFDB",
+"A# c #46A3D8",
+"B# c #246F9A",
+"C# c #CABA4C",
+"D# c #E3D25C",
+"E# c #E4D987",
+"F# c #E4DC94",
+"G# c #E5DD99",
+"H# c #E4DC97",
+"I# c #E4DB92",
+"J# c #E4DA8C",
+"K# c #E4DA89",
+"L# c #E4D883",
+"M# c #E3D779",
+"N# c #E3D365",
+"O# c #E3D259",
+"P# c #909456",
+"Q# c #386E8F",
+"R# c #4483A7",
+"S# c #5098C1",
+"T# c #58A6D3",
+"U# c #5FADDA",
+"V# c #68B1DC",
+"W# c #6CB3DD",
+"X# c #69B2DC",
+"Y# c #60AEDB",
+"Z# c #3096D2",
+"`# c #1B3E52",
+" $ c #D8C64F",
+".$ c #E5DD9A",
+"+$ c #E5DEA1",
+"@$ c #E5DE9F",
+"#$ c #E5DD9C",
+"$$ c #E4DD98",
+"%$ c #E4DC98",
+"&$ c #E4DC95",
+"*$ c #E3D56F",
+"=$ c #7A875E",
+"-$ c #3E7594",
+";$ c #4D89AD",
+">$ c #569CC6",
+",$ c #5EA9D6",
+"'$ c #67B0DB",
+")$ c #70B5DD",
+"!$ c #73B7DE",
+"~$ c #71B5DD",
+"{$ c #3D9ED6",
+"]$ c #277AAA",
+"^$ c #DFCD52",
+"/$ c #E4D77C",
+"($ c #E4DB8F",
+"_$ c #E5DE9D",
+":$ c #E5DFA4",
+"<$ c #E5DFA7",
+"[$ c #E5DFA5",
+"}$ c #E5DFA3",
+"|$ c #E4DB90",
+"1$ c #E4D87F",
+"2$ c #E1D055",
+"3$ c #647C6E",
+"4$ c #447B9A",
+"5$ c #4F8EB2",
+"6$ c #5BA1CA",
+"7$ c #66AED8",
+"8$ c #71B6DD",
+"9$ c #7ABADF",
+"0$ c #7EBCDF",
+"a$ c #74B7DE",
+"b$ c #44A2D7",
+"c$ c #3298D4",
+"d$ c #1E4D68",
+"e$ c #E2D054",
+"f$ c #E4DB91",
+"g$ c #E5DFA6",
+"h$ c #E5E0A8",
+"i$ c #E3D264",
+"j$ c #517276",
+"k$ c #427B9B",
+"l$ c #4F8FB4",
+"m$ c #5FA5CD",
+"n$ c #6BB1DA",
+"o$ c #77B8DE",
+"p$ c #80BDE0",
+"q$ c #81BDE0",
+"r$ c #7FBCE0",
+"s$ c #64AFDB",
+"t$ c #409FD6",
+"u$ c #2A84B9",
+"v$ c #A29641",
+"w$ c #E4D882",
+"x$ c #E5E0A9",
+"y$ c #E4DB8D",
+"z$ c #E3D77B",
+"A$ c #D9C852",
+"B$ c #3E6A81",
+"C$ c #407A9C",
+"D$ c #5092B9",
+"E$ c #63A8D1",
+"F$ c #71B5DB",
+"G$ c #7DBBDF",
+"H$ c #76B8DE",
+"I$ c #6BB3DC",
+"J$ c #5EADDA",
+"K$ c #379CD6",
+"L$ c #215C7E",
+"M$ c #B6A848",
+"N$ c #E3D573",
+"O$ c #E4D984",
+"P$ c #E4DC96",
+"Q$ c #E5DEA2",
+"R$ c #E5DD9B",
+"S$ c #E3D35C",
+"T$ c #C1B753",
+"U$ c #3A6B86",
+"V$ c #437EA1",
+"W$ c #5597BE",
+"X$ c #68ACD4",
+"Y$ c #76B7DD",
+"Z$ c #82BEE0",
+"`$ c #72B6DE",
+" % c #66B0DC",
+".% c #5AADDF",
+"+% c #2C8EC6",
+"@% c #C1B149",
+"#% c #E3D25A",
+"$% c #E4DA88",
+"%% c #E3D35A",
+"&% c #A8A555",
+"*% c #3B6F8E",
+"=% c #4682A5",
+"-% c #5B9CC3",
+";% c #6EB0D7",
+">% c #7BB9DE",
+",% c #79BEE7",
+"'% c #66A8D1",
+")% c #4E89AE",
+"!% c #54ABE1",
+"~% c #246992",
+"{% c #CAB94C",
+"]% c #E4DA8A",
+"^% c #E5E0AA",
+"/% c #E4D985",
+"(% c #E3D258",
+"_% c #899059",
+":% c #3C7292",
+"<% c #4C88AB",
+"[% c #60A1C7",
+"}% c #72B3D9",
+"|% c #7EBBDF",
+"1% c #81BEE1",
+"2% c #7FBFE6",
+"3% c #6790AA",
+"4% c #465057",
+"5% c #303232",
+"6% c #407595",
+"7% c #51A9DE",
+"8% c #45A2D6",
+"9% c #2E93CE",
+"0% c #193241",
+"a% c #DBC951",
+"b% c #E4D983",
+"c% c #E2D157",
+"d% c #73835F",
+"e% c #3E7495",
+"f% c #508CB0",
+"g% c #63A5CB",
+"h% c #77B6DA",
+"i% c #81BDDF",
+"j% c #83C2E5",
+"k% c #7CB1D1",
+"l% c #5F727F",
+"m% c #505355",
+"n% c #4A5054",
+"o% c #3A3D3E",
+"p% c #303E48",
+"q% c #53A8DC",
+"r% c #4CA4D8",
+"s% c #47A3D7",
+"t% c #3C9ED6",
+"u% c #2676A5",
+"v% c #E5DE9E",
+"w% c #E5DEA0",
+"x% c #E4DB93",
+"y% c #E2D15E",
+"z% c #E1CF55",
+"A% c #58756B",
+"B% c #407899",
+"C% c #518FB3",
+"D% c #64A7CD",
+"E% c #79B7DB",
+"F% c #83C1E4",
+"G% c #6A8A9E",
+"H% c #565B5E",
+"I% c #5A656B",
+"J% c #719CB5",
+"K% c #7BBBE2",
+"L% c #6292AF",
+"M% c #333638",
+"N% c #3C6682",
+"O% c #51AAE2",
+"P% c #1B4157",
+"Q% c #E1CE54",
+"R% c #DECC53",
+"S% c #426871",
+"T% c #3F799B",
+"U% c #5190B6",
+"V% c #65A9D0",
+"W% c #78B8DC",
+"X% c #81BFE3",
+"Y% c #83C2E8",
+"Z% c #75A2BF",
+"`% c #5D6B73",
+" & c #55585A",
+".& c #5D6970",
+"+& c #82BEE2",
+"@& c #81BFE2",
+"#& c #7EBCE0",
+"$& c #7CC0E6",
+"%& c #4D697A",
+"&& c #2C3134",
+"*& c #437FA5",
+"=& c #4DA7DB",
+"-& c #3FA0D6",
+";& c #2881B5",
+">& c #A99B44",
+",& c #E2D156",
+"'& c #D6C551",
+")& c #34647D",
+"!& c #3E7A9C",
+"~& c #5093B9",
+"{& c #64AAD2",
+"]& c #77BCE4",
+"^& c #78B0D3",
+"/& c #637B8A",
+"(& c #575C5F",
+"_& c #555859",
+":& c #555758",
+"<& c #5E6C75",
+"[& c #82BFE6",
+"}& c #6FAACD",
+"|& c #373F43",
+"1& c #3B6179",
+"2& c #55B0E8",
+"3& c #46A3D7",
+"4& c #20526F",
+"5& c #B3A646",
+"6& c #E3D25B",
+"7& c #B9B052",
+"8& c #2F6381",
+"9& c #3B7A9E",
+"0& c #4F97BF",
+"a& c #64ADD8",
+"b& c #5A8097",
+"c& c #4F565A",
+"d& c #586269",
+"e& c #7096AD",
+"f& c #719AB3",
+"g& c #585E62",
+"h& c #56585A",
+"i& c #7096AE",
+"j& c #84C3E8",
+"k& c #7CBEE4",
+"l& c #6EB2DC",
+"m& c #65B1DF",
+"n& c #58AADA",
+"o& c #42A1D6",
+"p& c #2B8BC3",
+"q& c #C5B54A",
+"r& c #A3A154",
+"s& c #2F6787",
+"t& c #3B7CA3",
+"u& c #53A5D9",
+"v& c #32424C",
+"w& c #3A3B3C",
+"x& c #51636E",
+"y& c #7AB5D8",
+"z& c #82C1E5",
+"A& c #84C3E9",
+"B& c #6C8CA1",
+"C& c #5B656B",
+"D& c #7DB5D6",
+"E& c #82BFE1",
+"F& c #76B8DF",
+"G& c #389DD6",
+"H& c #226085",
+"I& c #CEBD4D",
+"J& c #E4D462",
+"K& c #E8DF6B",
+"L& c #E6DB79",
+"M& c #E4DB8B",
+"N& c #E2D15F",
+"O& c #E1D158",
+"P& c #848D5A",
+"Q& c #2F698A",
+"R& c #397DA4",
+"S& c #4A99CA",
+"T& c #252E34",
+"U& c #333536",
+"V& c #679ABB",
+"W& c #7BBEE5",
+"X& c #82BEE1",
+"Y& c #81BDE1",
+"Z& c #5C686E",
+"`& c #555759",
+" * c #657E8E",
+".* c #83C2E6",
+"+* c #7BBADF",
+"@* c #73B6DE",
+"#* c #59AADA",
+"$* c #44A2D6",
+"%* c #E5E060",
+"&* c #939446",
+"** c #979758",
+"=* c #BEBF7B",
+"-* c #D7D795",
+";* c #E4E3A3",
+">* c #E8E5A9",
+",* c #EAE9A9",
+"'* c #E9E8A9",
+")* c #E8E4A9",
+"!* c #E6E1A9",
+"~* c #E0D056",
+"{* c #697C5F",
+"]* c #2F6A8D",
+"^* c #387EA6",
+"/* c #4B9ECF",
+"(* c #427EA4",
+"_* c #2B3133",
+":* c #557B91",
+"<* c #79BEE5",
+"[* c #75A1BB",
+"}* c #56595B",
+"|* c #76A4BF",
+"1* c #82BFE2",
+"2* c #78B9DE",
+"3* c #6EB4DD",
+"4* c #3A9ED6",
+"5* c #26709B",
+"6* c #DCDA5C",
+"7* c #434529",
+"8* c #404138",
+"9* c #545653",
+"0* c #6C6E6C",
+"a* c #7E817B",
+"b* c #8F9284",
+"c* c #9FA38B",
+"d* c #B0B390",
+"e* c #BFC296",
+"f* c #CBCD9B",
+"g* c #D6D7A0",
+"h* c #DFDFA2",
+"i* c #E6E49F",
+"j* c #EAE890",
+"k* c #EBE67D",
+"l* c #E4D76E",
+"m* c #4D6F69",
+"n* c #2F6D91",
+"o* c #3980AA",
+"p* c #4596C6",
+"q* c #4FACE3",
+"r* c #3D6D8A",
+"s* c #374044",
+"t* c #6DA7CB",
+"u* c #7EBFE5",
+"v* c #647B88",
+"w* c #5D6971",
+"x* c #7CBBDF",
+"y* c #45A2D7",
+"z* c #2F97D3",
+"A* c #1C3C4F",
+"B* c #E9DF65",
+"C* c #DCD969",
+"D* c #DCDD79",
+"E* c #D0D287",
+"F* c #7D7F74",
+"G* c #727577",
+"H* c #7A7D7C",
+"I* c #888B81",
+"J* c #848880",
+"K* c #80837E",
+"L* c #7D807D",
+"M* c #7B7E79",
+"N* c #75786F",
+"O* c #71725E",
+"P* c #888953",
+"Q* c #EBE56A",
+"R* c #DCCB52",
+"S* c #2B596A",
+"T* c #2D6F94",
+"U* c #3983AE",
+"V* c #4297C7",
+"W* c #4CA2D4",
+"X* c #50A7DA",
+"Y* c #364C5A",
+"Z* c #4B5E6B",
+"`* c #7DBFE9",
+" = c #7CB2D2",
+".= c #5A6368",
+"+= c #6D91A6",
+"@= c #82C0E5",
+"#= c #6DB4DD",
+"$= c #287CAE",
+"%= c #B0A246",
+"&= c #E5D983",
+"*= c #E9E596",
+"== c #94977E",
+"-= c #737678",
+";= c #A8AB8D",
+">= c #E9EAA9",
+",= c #E2E2A6",
+"'= c #DADCA2",
+")= c #D1D59D",
+"!= c #C6C898",
+"~= c #B0B28C",
+"{= c #7B7E6F",
+"]= c #494B4C",
+"^= c #434436",
+"/= c #E5E264",
+"(= c #D4C34E",
+"_= c #1B3846",
+":= c #266E97",
+"<= c #3A87B3",
+"[= c #4499CB",
+"}= c #4AA2D5",
+"|= c #51A9DC",
+"1= c #4580A3",
+"2= c #51768E",
+"3= c #7AC1EC",
+"4= c #83C3E7",
+"5= c #6E92A9",
+"6= c #596064",
+"7= c #7CB1D3",
+"8= c #78BADF",
+"9= c #70BAE4",
+"0= c #64B5E7",
+"a= c #329AD6",
+"b= c #204E69",
+"c= c #B6A747",
+"d= c #E4D986",
+"e= c #E7E497",
+"f= c #8A8D7C",
+"g= c #757879",
+"h= c #C2C498",
+"i= c #E7E2A9",
+"j= c #DBDDA1",
+"k= c #E2E4A2",
+"l= c #EBE9A4",
+"m= c #D6D890",
+"n= c #51524C",
+"o= c #60603E",
+"p= c #ECE767",
+"q= c #0D1011",
+"r= c #1E628A",
+"s= c #3688B6",
+"t= c #439ACC",
+"u= c #58B2E6",
+"v= c #66B7E5",
+"w= c #71B6DE",
+"x= c #82BEE3",
+"y= c #5F6F79",
+"z= c #535556",
+"A= c #617886",
+"B= c #7CBFE5",
+"C= c #6AA4C5",
+"D= c #445B6A",
+"E= c #4E88AD",
+"F= c #55ADDE",
+"G= c #2986BC",
+"H= c #C6B54B",
+"I= c #E1E096",
+"J= c #828479",
+"K= c #787B7A",
+"L= c #CFD09E",
+"M= c #E4E3A6",
+"N= c #8C8F83",
+"O= c #A9AC8C",
+"P= c #EAE7A3",
+"Q= c #E1E093",
+"R= c #4C4D47",
+"S= c #818149",
+"T= c #EDE467",
+"U= c #E4D35A",
+"V= c #A89A40",
+"W= c #17394D",
+"X= c #2C85BA",
+"Y= c #439BCE",
+"Z= c #47A1D6",
+"`= c #6AB2DC",
+" - c #75B8DE",
+".- c #81BFE4",
+"+- c #76A7C5",
+"@- c #515557",
+"#- c #4D5153",
+"$- c #5A7586",
+"%- c #547487",
+"&- c #383F43",
+"*- c #2F3B42",
+"=- c #4B90BA",
+"-- c #51ABE0",
+";- c #43A0D6",
+">- c #2C99D8",
+",- c #1F5370",
+"'- c #D2C14E",
+")- c #DBDB94",
+"!- c #7A7D77",
+"~- c #7A7D7B",
+"{- c #DBDCA3",
+"]- c #E6E2A9",
+"^- c #DEDEA3",
+"/- c #83867F",
+"(- c #ABAE8D",
+"_- c #E8E3A2",
+":- c #CECE8A",
+"<- c #3F413F",
+"[- c #8D8D4A",
+"}- c #E8DD67",
+"|- c #92873B",
+"1- c #2372A0",
+"2- c #3B99CF",
+"3- c #46A1D6",
+"4- c #6FB5DD",
+"5- c #78B9DF",
+"6- c #7EC0E9",
+"7- c #556A76",
+"8- c #404243",
+"9- c #38393A",
+"0- c #333B40",
+"a- c #406A84",
+"b- c #51A0D0",
+"c- c #52AADF",
+"d- c #2C98D7",
+"e- c #1A4056",
+"f- c #DCCA52",
+"g- c #E5DD8E",
+"h- c #D2D492",
+"i- c #747776",
+"j- c #777A7A",
+"k- c #B3B692",
+"l- c #CFD29D",
+"m- c #D3D59F",
+"n- c #B6B893",
+"o- c #7B7E7C",
+"p- c #C1C494",
+"q- c #E7E2A1",
+"r- c #B9B97E",
+"s- c #393B3A",
+"t- c #94934B",
+"u- c #E6D865",
+"v- c #726A30",
+"w- c #2E95CF",
+"x- c #5BABDA",
+"y- c #7ABCE2",
+"z- c #71B0D6",
+"A- c #414D55",
+"B- c #32373A",
+"C- c #3C5E73",
+"D- c #529CCB",
+"E- c #54ACE0",
+"F- c #4EA6D9",
+"G- c #399DD6",
+"H- c #2A8BC3",
+"I- c #205574",
+"J- c #E4D25E",
+"K- c #E8E290",
+"L- c #C5C88E",
+"M- c #727576",
+"N- c #7C7F7D",
+"O- c #939686",
+"P- c #7C7F7C",
+"Q- c #D3D49C",
+"R- c #E6E09F",
+"S- c #E2E28A",
+"T- c #9A9B5B",
+"U- c #D7D463",
+"V- c #E3D464",
+"W- c #E0D054",
+"X- c #534D25",
+"Y- c #2777A4",
+"Z- c #72B7DF",
+"`- c #73B9E1",
+" ; c #577D95",
+".; c #363E43",
+"+; c #2F3B41",
+"@; c #4884A8",
+"#; c #56AEE4",
+"$; c #50A9DC",
+"%; c #46A2D6",
+"&; c #2E92CB",
+"*; c #236288",
+"=; c #101C22",
+"-; c #E4D881",
+";; c #E6DE93",
+">; c #B3B589",
+",; c #9C9F89",
+"'; c #E9EBA9",
+"); c #E6E4A8",
+"!; c #DCDEA3",
+"~; c #969987",
+"{; c #7E807D",
+"]; c #DDDDA0",
+"^; c #E6DE8E",
+"/; c #EAE27C",
+"(; c #E6DA6C",
+"_; c #242216",
+":; c #2D94CF",
+"<; c #61AEDB",
+"[; c #68B4E0",
+"}; c #5990B5",
+"|; c #2C3033",
+"1; c #355366",
+"2; c #52A1D0",
+"3; c #52ABDE",
+"4; c #3F9FD6",
+"5; c #3096D1",
+"6; c #256F9B",
+"7; c #152833",
+"8; c #E7E096",
+"9; c #9FA282",
+"0; c #ADB090",
+"a; c #E9E7A9",
+"b; c #E8E6A9",
+"c; c #AAAD8E",
+"d; c #80837D",
+"e; c #E6E7A2",
+"f; c #E5DF9C",
+"g; c #EBE78A",
+"h; c #E0DC73",
+"i; c #EBE26A",
+"j; c #CDBD4D",
+"k; c #276F98",
+"l; c #5BB0E2",
+"m; c #4F99C9",
+"n; c #52A8DE",
+"o; c #4DA5D9",
+"p; c #42A0D6",
+"q; c #349AD4",
+"r; c #19394B",
+"s; c #B7A847",
+"t; c #E8E395",
+"u; c #8F927B",
+"v; c #BABD93",
+"w; c #999C88",
+"x; c #8A8D81",
+"y; c #E6E7A1",
+"z; c #E8E39A",
+"A; c #A4A56A",
+"B; c #4E4E37",
+"C; c #D6D35D",
+"D; c #E4D25A",
+"E; c #BBAB48",
+"F; c #2B8EC8",
+"G; c #4FA6D9",
+"H; c #369BD5",
+"I; c #2986BB",
+"J; c #1C4863",
+"K; c #C5B54B",
+"L; c #E4D567",
+"M; c #E5E292",
+"N; c #7E8172",
+"O; c #6E7171",
+"P; c #C6C895",
+"Q; c #E6E1A5",
+"R; c #E9E6A7",
+"S; c #C4C796",
+"T; c #EAE8A2",
+"U; c #797B57",
+"V; c #292A26",
+"W; c #D3CD5D",
+"X; c #A39740",
+"Y; c #266589",
+"Z; c #349BD6",
+"`; c #45A1D6",
+" > c #205879",
+".> c #0E1519",
+"+> c #D7C550",
+"@> c #E7DA62",
+"#> c #E2E061",
+"$> c #D7D667",
+"%> c #E4E27B",
+"&> c #D1D180",
+"*> c #61635C",
+"=> c #606261",
+"-> c #CED090",
+";> c #E5DF9D",
+">> c #E5DF9F",
+",> c #E5DFA0",
+"'> c #EAE7A1",
+")> c #E8E4A1",
+"!> c #E5DD9D",
+"~> c #EAE891",
+"{> c #707150",
+"]> c #3D3E2A",
+"^> c #E6DC64",
+"/> c #E3D257",
+"(> c #8E8339",
+"_> c #2A88BD",
+":> c #3F9FD7",
+"<> c #3E9ED6",
+"[> c #2E94CF",
+"}> c #23668E",
+"|> c #13212A",
+"1> c #E7DF61",
+"2> c #444520",
+"3> c #2A2C1D",
+"4> c #4E5035",
+"5> c #45463A",
+"6> c #3C3D3E",
+"7> c #424444",
+"8> c #949567",
+"9> c #D1D083",
+"0> c #E1E28B",
+"a> c #E6E58F",
+"b> c #E8E593",
+"c> c #E8E495",
+"d> c #EAE594",
+"e> c #E0DF83",
+"f> c #4B4C3C",
+"g> c #585931",
+"h> c #EBE164",
+"i> c #E2D055",
+"j> c #6E662F",
+"k> c #3199D5",
+"l> c #3298D3",
+"m> c #2674A2",
+"n> c #162F3E",
+"o> c #E0CF54",
+"p> c #EBE660",
+"q> c #A2A244",
+"r> c #6A6A30",
+"s> c #5C5D30",
+"t> c #525230",
+"u> c #45462F",
+"v> c #35362C",
+"w> c #2D2E2D",
+"x> c #333431",
+"y> c #41433A",
+"z> c #555744",
+"A> c #6B6D4F",
+"B> c #7F8058",
+"C> c #838459",
+"D> c #5D5D43",
+"E> c #232423",
+"F> c #646531",
+"G> c #EBE361",
+"H> c #524C25",
+"I> c #48A2D6",
+"J> c #2881B3",
+"K> c #1B4056",
+"L> c #9B8F41",
+"M> c #E2D35E",
+"N> c #E3D360",
+"O> c #E6D861",
+"P> c #E6DC62",
+"Q> c #E5DF62",
+"R> c #E5E262",
+"S> c #E0DE62",
+"T> c #CBC65C",
+"U> c #AFAE52",
+"V> c #949548",
+"W> c #7D7D41",
+"X> c #66673B",
+"Y> c #525334",
+"Z> c #3C3D2C",
+"`> c #242520",
+" , c #141413",
+"., c #797934",
+"+, c #E8DC5F",
+"@, c #E4D35D",
+"#, c #222115",
+"$, c #2A94D2",
+"%, c #309BD8",
+"&, c #319BD8",
+"*, c #2A8AC2",
+"=, c #1F5271",
+"-, c #B1A347",
+";, c #E5D664",
+">, c #E8DC65",
+",, c #E8E065",
+"', c #E7E163",
+"), c #E2DE60",
+"!, c #D0CE56",
+"~, c #B8B74A",
+"{, c #E3DE5A",
+"], c #E4D45F",
+"^, c #CCBB4B",
+"/, c #266184",
+"(, c #23668D",
+"_, c #111C23",
+":, c #968B40",
+"<, c #E5D661",
+"[, c #E7DA5F",
+"}, c #BBAC48",
+"|, c #8C813C",
+"1, c #A79A43",
+"2, c #B4A645",
+"3, c #C2B24A",
+"4, c #E2D057",
+"5, c #A29540",
+"6, c #39361D",
+"7, c #665E2C",
+"8, c #827935",
+"9, c #9B8E3E",
+"0, c #B5A746",
+"a, c #C1B14A",
+"b, c #D7C651",
+"c, c #DDCC53",
+"d, c #E2D35B",
+"e, c #8C8037",
+"f, c #494522",
+"g, c #6A622E",
+"h, c #8B8038",
+"i, c #9D903F",
+"j, c #B9AA47",
+"k, c #C8B84B",
+"l, c #DAC851",
+"m, c #E0CD52",
+"n, c #DBC950",
+"o, c #595427",
+"p, c #4F4923",
+"q, c #706830",
+"r, c #93883B",
+"s, c #625B2A",
+" ",
+" . + @ # $ % & * = - ",
+" ; > , ' ) ! ~ { ",
+" = ] ^ / ( _ : ",
+" < [ } | 1 2 3 ",
+" 4 5 6 7 8 9 0 a b c d e ",
+" } f g h i j k l m n o p q r ",
+" s t u v w x y z A B C D E F G H I J K L ",
+" M N O P Q R S T U V W X Y Z ` ...+.@. #. ",
+" $.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|. 1.2. ",
+" 3.4.5.6.7.8.9.0.a. b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q. r. ",
+" s.t.u.v.w.x.y.z.A.B. C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S. T.U. ",
+" V.W.X. Y.Z.`. +.+ ++@+#+$+%+I.&+*+=+K.K.L.L.-+;+ >+,+'+ )+!+ ",
+" ~+{+]+^+/+(+_+ :+<+[+}+|+1+2+2+3+4+K.=+=+5+5+6+K.L.7+8+9+ 0+a+ b+ ",
+" c+d+e+f+g+h+h+i+j+k+l+ m+n+o+p+q+r+s+t+u+4+K.6+5+v+w+w+v+6+K.L.x+y+ z+A+ B+C+ ",
+" D+g+g+g+g+g+g+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+J.5+V+W+X+Y+5+K.L.Z+`+ @ .@+@ @@#@ ",
+" $@h+%@&@*@=@h+-@;@>@G+,@'@)@!@~@{@]@-@g+f+^@/@(@_@:@W+<@[@<@}@=+K.L.|@1@ 2@3@4@ 5@6@7@ ",
+" e+8@9@0@a@a@a@b@c@d@{@5.e@f@g@h@i@j@g+g+g+g+-@k@l@m@n@o@p@q@r@v+=+K.Z+s@t@ u@v@w@x@y@ ",
+" z@a@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@%@P@h+Q@g+g+-@R@S@T@U@V@W@[@X+v+K.L.X@Y@ ",
+" Z@`@A@ #C@E@.#+#@###D@C@$#%#%#$#&#G@ #a@0@*#=#-#;#>#,#'#)#!#~#V@q@X+5+K.L.{#]# ",
+" ^#/#A@ #F@(#_#:#<#_#+#[#}#|#|#E@1#2#E@3# #A@9@4#5#6#7#8#9#0#a#b#c#[@V+K.L.d#e# ",
+" f#g#A@B@|#h#i#j#k#l#i#m#n#o#p#q#n#p#+#1#C@ #a@*#r#s#t#u#v#w#x#y#z#~#r@5+K.A#-+B# ",
+" C#D# #G@}#q#E#F#G#H#I#J#K#E#E#l#l#L#M#(#N# #a@O#P#Q#R#S#T#U#V#W#X#Y#p@}@6+L.7+Z#`# ",
+" $0@ #C@##M#j#.$+$+$@$#$G#$$$$%$&$J#:#*$N# #A@=#=$-$;$>$,$'$)$!$~$X#U#[@v+K.A#{$]$ ",
+" ^$a@ #C@[#/$($_$:$<$[$:$:$}$}$+$#$|$1$*$F@ #a@2$3$4$5$6$7$8$9$0$9$a$X#c#r@=+K.b$c$d$ ",
+" e$A@ #F@*$1$f$@$g$h$h$h$h$h$<$:$_$|$<#(#i$ #a@&@j$k$l$m$n$o$p$q$r$9$~$s$W@}@K.L.t$u$ ",
+" v$`@A@ #N#+#w$F#+$<$x$x$x$x$x$h$[$#$y$z$[#C@ #9@A$B$C$D$E$F$G$q$q$p$G$H$I$J$<@v+K.A#K$L$ ",
+" M$/#A@B@|#N$O$P$Q$<$x$x$x$x$x$h$:$R$j#M#2#G@ #S$T$U$V$W$X$Y$p$Z$Z$q$r$9$`$ %.%Y+6+L.d#+% ",
+" @%#%A@B@E@p#E#$$}$h$x$x$x$x$x$h$}$G#$%q#E@B@ #%%&%*%=%-%;%>%q$Z$Z$Z$p$G$,%'%)%!%v+K.L.-+~% ",
+" {%D# #G@1#_#]%.$:$h$x$x$^%x$x$h$}$H#/%o#|#B@A@(%_%:%<%[%}%|%Z$Z$Z$Z$1%2%3%4%5%6%7%=+L.8%9%0% ",
+" a%0@ #C@##m#k##$[$h$x$x$x$x$x$<$+$&$b%+#N# #A@c%d%e%f%g%h%i%Z$Z$Z$j%k%l%m%n%o%p%q%r%K.s%t%u% ",
+" ^$a@ #C@(#<#|$v%[$x$x$x$x$x$x$<$w%x%i#*$F@ #y%z%A%B%C%D%E%q$Z$F%q$G%H%I%J%K%L%M%N%O%=+K.Z+`+P% ",
+" Q%A@ #F@*$i#I#w%<$x$x$x$x$x$x$[$@$|$<#(#i$ #y%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&K.L.-&;& ",
+" >&,&A@ #N#+#L#F#+$<$x$x$x$x$x$h$[$#$y$z$##C@ #0@'&)&!&~&{&]&^&/&(&_&:&<&[&1%p$G$}&|&1&2&5+K.3&s@4& ",
+" 5&=#A@B@|#N$/%H#Q$<$x$x$x$x$x$h$:$R$j#_#1#G@ #6&7&8&9&0&a&b&c&d&e&f&g&h&i&j&q$r$k&l&m&n&}@K.L.o&p& ",
+" q&#%A@B@E@p#$%G#}$h$x$x$x$x$x$h$}$G#l#p#E@B@A@*#r&s&t&u&v&w&x&y&z&A&B&:&C&D&E&p$G$F&W#U#[@v+K.L.G&H& ",
+" I&D# #J&K&L&M&R$:$h$x$x$^%x$x$h$Q$H#/%N$|#B@N&O&P&Q&R&S&T&U&V&W&r$X&Y&Z&`& *.*q$r$+*@*y##*W+6+L.$*e# ",
+" -@a@ #%*&***=*-*;*>*,*'*)*!*x$<$+$F#w$+#N# #y%~*{*]*^*/*(*_*:*<*0$q$E&[*}*H%|*1*q$0$2*3*Y#[@v+K.L.4*5* ",
+" *@a@ #6*7*8*9*0*a*b*c*d*e*f*g*h*i*j*k*l*F@ #a@%@m*n*o*p*q*r*s*t*u*p$Z$j%v*:&w*1*q$r$x*!$y#~#X+=+L.y*z*A* ",
+" e$a@ #B*C*D*E*F*G*H*I*J*K*L*L*M*N*O*P*Q*G@ #a@R*S*T*U*V*W*X*Y*Z*`*r$q$E& =.=:&+=@=p$0$o$#=b#[@v+K.L.x+$= ",
+" %=`@A@ #N#h#&=*===-=;=>=,='=)=!=~={=]=^=/=3# #0@(=_=:=<=[=}=|=1=2=3=G$p$q$4=5=h&6=7=X%0$8=9=0=q@v+K.L.Z+a=b= ",
+" c=4#A@B@|#o#d=e=f=g=h=i=x$>*j=k=l=m=n=o=p=G@ #6&f#q=r=s=t=U+}@u=v=w=9$r$q$X&x=y=z=A=u*B=C=D=E=F=v+K.L.L.x+G= ",
+" H=6&A@B@E@n#K#I=J=K=L=x$^%M=N=O=P=Q=R=S=T=B@A@U=V= W=X=Y=Z==+<@c#`= -x*p$q$.-+-@-#-$-%-&-*-=---5+K.L.L.;->-,- ",
+" '-D# #G@2#M#M&)-!-~-{-]-^%^-/-(-_-:-<-[-}-B@A@(%|- 1-2-3-K.w+q@z#4-5-0$r$0$6-7-8-9-0-a-b-c-v+K.L.L.I.-+d-e- ",
+" f-0@ #C@[#z$g-h-i-j-k-l-m-n-o-p-q-r-s-t-u- #A@,&v- w-y*L.=+X+x-V#@*9$+*y-z-A-B-C-D-E-F-=+K.L.I.7+G-H-I- ",
+" &@J- #i$(#:#K-L-M-N-O-b*/-j-P-Q-R-S-T-U-V- #J-W-X- Y-4*L.K.v+[@b#I$Z-`- ;.;+;@;#;$;v+K.K.I.%;{$&;*;=; ",
+" z%a@ #N#@#-;;;>;G*,;';);!;~;{;];_$^;/;(;C@ #0@f-_; :;$*L.6+Y+W@<;[;};|;1;2;3;v+6+K.L.%;4;5;6;7; ",
+" %=,&A@B@D@h#b%8;9;G*0;a;x$b;c;d;e;f;g;h;i;G@ #S$j; k;K$L.K.5+X+q@~#l;m;n;o;=+K.L.I.p;q;$=r; ",
+" s;(%A@B@|#N$/%t;u;M-v;)*x$>*w;x;y;z;A;B;C;G@ #D;E; F;p;L.K.5+V+X+G;o;=+K.L.I.7+H;I;J; ",
+" K;#%A@B@L;o#O$M;N;O;P;Q;g$R;S;p-T;*=U;V;W;B@A@O#X; Y;Z;Z+L.K.K.=+K.K.L.L.`;-++% >.> ",
+" +>D#A@@>#>$>%>&>*>=>->;>>>,>'>)>!>~>{>]>^>B@A@/>(> _>:>L.L.L.L.L.L.%;<>[>}>|> ",
+" f+0@A@1>2>3>4>5>6>7>8>9>0>a>b>c>d>e>f>g>h> #a@i>j> k>%;L.L.L.%;t$l>m>n> ",
+" o>a@A@p>q>r>s>t>u>v>w>x>y>z>A>B>C>D>E>F>G> #J-&@H> p -+I.I>p;H;J>K> ",
+" L>z%M>A@A@N>O>P>Q>R>S>T>U>V>W>X>Y>Z>`> ,.,+,A@@,f-#, $,%,&,*,=, ",
+" -,P@b@a@A@A@A@ # #B@B@G@3#;,>,,,',),!,~,{,],A@D#^, /,;&(,_, ",
+" :,-@&@O##%D#D#0@a@a@a@ # # # # #B@B@<,[, #A@A@#%}, ",
+" |,1,2,3,j@R%2$4,4#*#6&D#0@0@a@a@a@a@A@A@A@A@4#5, ",
+" 6,7,8,9,0,a,b,c,%@4,4#*#d,S$S$9@6&*@e, ",
+" f,g,h,i,j,k,l,&@z%m,n,o, ",
+" p,q,r,s, ",
+" "};
diff --git a/pixmaps/EasyTAG_logo.xpm b/pixmaps/EasyTAG_logo.xpm
new file mode 100755
index 0000000..8c09077
--- /dev/null
+++ b/pixmaps/EasyTAG_logo.xpm
@@ -0,0 +1,2300 @@
+/* XPM */
+static char * EasyTAG_logo_xpm[] = {
+"287 150 2147 2",
+" c None",
+". c #FEDB49",
+"+ c #FFDB49",
+"@ c #FEDA49",
+"# c #FFDD48",
+"$ c #FFDE48",
+"% c #FFDF47",
+"& c #FFE047",
+"* c #FFE147",
+"= c #FFE246",
+"- c #FFE346",
+"; c #FEE445",
+"> c #FEE544",
+", c #FEE644",
+"' c #FEE743",
+") c #FEE843",
+"! c #FFE046",
+"~ c #FFDC49",
+"{ c #FFDF48",
+"] c #FEE048",
+"^ c #FEE147",
+"/ c #FEE247",
+"( c #FEE347",
+"_ c #FEE446",
+": c #FEE646",
+"< c #FEE746",
+"[ c #FEE845",
+"} c #FEE944",
+"| c #FEEA44",
+"1 c #FEEB44",
+"2 c #FEEC43",
+"3 c #FEEC42",
+"4 c #FEEC41",
+"5 c #FFDE49",
+"6 c #FFDF49",
+"7 c #FEE148",
+"8 c #FEE248",
+"9 c #FEE448",
+"0 c #FEE547",
+"a c #FEE647",
+"b c #FEE747",
+"c c #FEE847",
+"d c #FDEA47",
+"e c #FDEB46",
+"f c #FDEC45",
+"g c #FDED45",
+"h c #FDED44",
+"i c #FDED43",
+"j c #FEED43",
+"k c #FFDD49",
+"l c #FEE049",
+"m c #FEE149",
+"n c #FEE349",
+"o c #FEE449",
+"p c #FEE548",
+"q c #FEE648",
+"r c #FEE848",
+"s c #FEE948",
+"t c #FDEA48",
+"u c #FDEB48",
+"v c #FDED48",
+"w c #FDEE47",
+"x c #FDEF47",
+"y c #FDEE46",
+"z c #FDEE45",
+"A c #FEE942",
+"B c #FEDF49",
+"C c #FEE14A",
+"D c #FEE34A",
+"E c #FEE44A",
+"F c #FEE54A",
+"G c #FDE74A",
+"H c #FDE84A",
+"I c #FDE94A",
+"J c #FEEB4A",
+"K c #FDEC4A",
+"L c #FDED4A",
+"M c #FDEF4A",
+"N c #FDF04A",
+"O c #FDF049",
+"P c #FDEF49",
+"Q c #FDEF48",
+"R c #FFDD4A",
+"S c #FEDF4A",
+"T c #FDE84B",
+"U c #FDEA4C",
+"V c #FDEB4B",
+"W c #FDED4B",
+"X c #FCEE4C",
+"Y c #FCEF4C",
+"Z c #FCF14C",
+"` c #FCF04C",
+" . c #FCF04B",
+".. c #FCF04A",
+"+. c #FFDF4A",
+"@. c #FEE04B",
+"#. c #FEE24B",
+"$. c #FEE34B",
+"%. c #FEE44B",
+"&. c #FEE64C",
+"*. c #FDE74C",
+"=. c #FDE94D",
+"-. c #FDEA4D",
+";. c #FDEC4D",
+">. c #FDED4E",
+",. c #FCEF4D",
+"'. c #FCF04E",
+"). c #FCF14E",
+"!. c #FCF24E",
+"~. c #FCF14D",
+"{. c #FEE34C",
+"]. c #FDE54D",
+"^. c #FDE64D",
+"/. c #FDE84D",
+"(. c #FDE94E",
+"_. c #FCEB4E",
+":. c #FDEC4F",
+"<. c #FDEE4F",
+"[. c #FCEF50",
+"}. c #FCF150",
+"|. c #FCF250",
+"1. c #FCF350",
+"2. c #FCF24F",
+"3. c #FFDE4A",
+"4. c #FEDF4B",
+"5. c #FEE24C",
+"6. c #FEE34D",
+"7. c #FDE64E",
+"8. c #FDE84F",
+"9. c #FDE94F",
+"0. c #FCEB4F",
+"a. c #FCED50",
+"b. c #FCEE51",
+"c. c #FCF051",
+"d. c #FBF152",
+"e. c #FBF353",
+"f. c #FBF452",
+"g. c #FBF352",
+"h. c #FBF351",
+"i. c #FCF351",
+"j. c #FEE54B",
+"k. c #FEDE4B",
+"l. c #FEE04C",
+"m. c #FDE54E",
+"n. c #FDE74F",
+"o. c #FDE850",
+"p. c #FDEA50",
+"q. c #FCEB51",
+"r. c #FCED51",
+"s. c #FCEF52",
+"t. c #FCF053",
+"u. c #FBF254",
+"v. c #FBF454",
+"w. c #FBF555",
+"x. c #FBF554",
+"y. c #FBF453",
+"z. c #FCF04D",
+"A. c #FEE24D",
+"B. c #FDE34E",
+"C. c #FDE54F",
+"D. c #FCEA51",
+"E. c #FCEC52",
+"F. c #FCEE53",
+"G. c #FCEF54",
+"H. c #FCF154",
+"I. c #FBF355",
+"J. c #FBF456",
+"K. c #FBF657",
+"L. c #FBF656",
+"M. c #FBF556",
+"N. c #FDE94C",
+"O. c #FFDC4A",
+"P. c #FEE44F",
+"Q. c #FDE751",
+"R. c #FEE14D",
+"S. c #FAF559",
+"T. c #FAF75A",
+"U. c #FAF759",
+"V. c #FAF659",
+"W. c #FBF658",
+"X. c #FBF557",
+"Y. c #FBF455",
+"Z. c #FDEC4C",
+"`. c #FEEB41",
+" + c #FFDE4B",
+".+ c #FEE24E",
+"++ c #FDE650",
+"@+ c #FDE752",
+"#+ c #FDE953",
+"$+ c #FCEB54",
+"%+ c #FCEC55",
+"&+ c #FCEE56",
+"*+ c #FBF058",
+"=+ c #FBF259",
+"-+ c #FBF45A",
+";+ c #FAF65A",
+">+ c #FAF75C",
+",+ c #FAF85C",
+"'+ c #FAF75B",
+")+ c #FDE550",
+"!+ c #FEDF4C",
+"~+ c #FCEE4D",
+"{+ c #FEE04D",
+"]+ c #FDE44F",
+"^+ c #FDE651",
+"/+ c #FCE954",
+"(+ c #FCEB55",
+"_+ c #FBED57",
+":+ c #FCEF57",
+"<+ c #FBF159",
+"[+ c #FBF25A",
+"}+ c #FBF45C",
+"|+ c #FAF65D",
+"1+ c #FAF85E",
+"2+ c #FAF95F",
+"3+ c #FAF95E",
+"4+ c #FAF85D",
+"5+ c #FDE851",
+"6+ c #FDE64B",
+"7+ c #FFDD4B",
+"8+ c #FDE450",
+"9+ c #FDE853",
+"0+ c #FCEB56",
+"a+ c #FBED58",
+"b+ c #FBEF59",
+"c+ c #FBF15B",
+"d+ c #FAF35C",
+"e+ c #FAF55D",
+"f+ c #FAF75F",
+"g+ c #F9F960",
+"h+ c #F9FA61",
+"i+ c #F9FA60",
+"j+ c #FCEB53",
+"k+ c #FEE24A",
+"l+ c #FAF35D",
+"m+ c #F9FB63",
+"n+ c #F9FB62",
+"o+ c #F9FA62",
+"p+ c #FCED55",
+"q+ c #FBF358",
+"r+ c #FEE344",
+"s+ c #FAF45D",
+"t+ c #FBF057",
+"u+ c #FBF156",
+"v+ c #FEE941",
+"w+ c #FAF55E",
+"x+ c #FCEE55",
+"y+ c #FCED4C",
+"z+ c #FEEB40",
+"A+ c #FAF65F",
+"B+ c #FAF95D",
+"C+ c #FAF85B",
+"D+ c #FCEB52",
+"E+ c #FCF34F",
+"F+ c #FDED4D",
+"G+ c #FCF14B",
+"H+ c #FDF048",
+"I+ c #FDEF46",
+"J+ c #FDEE44",
+"K+ c #FEED42",
+"L+ c #FEED41",
+"M+ c #FEEC40",
+"N+ c #FDE74B",
+"O+ c #FEE444",
+"P+ c #FDE750",
+"Q+ c #FDE652",
+"R+ c #FCEC53",
+"S+ c #FBF458",
+"T+ c #FEE64B",
+"U+ c #FFE245",
+"V+ c #FBF157",
+"W+ c #FBEF55",
+"X+ c #FDEB4D",
+"Y+ c #FEEA41",
+"Z+ c #FBF05A",
+"`+ c #FCEA52",
+" @ c #FFE146",
+".@ c #FEE04A",
+"+@ c #FEE842",
+"@@ c #FDEB4C",
+"#@ c #FEE643",
+"$@ c #FCE854",
+"%@ c #FCED54",
+"&@ c #FBF056",
+"*@ c #FCE952",
+"=@ c #F9F961",
+"-@ c #FEE34E",
+";@ c #FCF24D",
+">@ c #FFDC48",
+",@ c #FEE14E",
+"'@ c #FFE344",
+")@ c #FCE955",
+"!@ c #FEEA40",
+"~@ c #FBF25B",
+"{@ c #FBF258",
+"]@ c #FEEC3F",
+"^@ c #FFE145",
+"/@ c #F9F962",
+"(@ c #FEE841",
+"_@ c #FEE34F",
+":@ c #FFDE47",
+"<@ c #FCEC58",
+"[@ c #FCEF55",
+"}@ c #FEE543",
+"|@ c #FAF660",
+"1@ c #F9FB64",
+"2@ c #FAF960",
+"3@ c #FBF659",
+"4@ c #FCF352",
+"5@ c #FDF04B",
+"6@ c #FEED44",
+"7@ c #FDE753",
+"8@ c #FBF05B",
+"9@ c #FDED4C",
+"0@ c #FEE742",
+"a@ c #FCED59",
+"b@ c #FAF761",
+"c@ c #FAF658",
+"d@ c #FEE443",
+"e@ c #FDEC4B",
+"f@ c #FCEF4B",
+"g@ c #BCAF32",
+"h@ c #847B23",
+"i@ c #7D7421",
+"j@ c #A4992B",
+"k@ c #F2E240",
+"l@ c #DBD141",
+"m@ c #2A280C",
+"n@ c #23210A",
+"o@ c #040301",
+"p@ c #625C1D",
+"q@ c #F2E443",
+"r@ c #CABE38",
+"s@ c #C5B936",
+"t@ c #E9DB40",
+"u@ c #E3D53E",
+"v@ c #9B912A",
+"w@ c #988F29",
+"x@ c #7E7622",
+"y@ c #D8CB3B",
+"z@ c #494514",
+"A@ c #0E0D04",
+"B@ c #211E09",
+"C@ c #E7D83E",
+"D@ c #34310E",
+"E@ c #131105",
+"F@ c #5D5719",
+"G@ c #655E1B",
+"H@ c #1E1C08",
+"I@ c #191707",
+"J@ c #CDC036",
+"K@ c #FEE940",
+"L@ c #FDE94B",
+"M@ c #FAEF4A",
+"N@ c #D6CB3F",
+"O@ c #D7CC40",
+"P@ c #22210A",
+"Q@ c #484515",
+"R@ c #F3E546",
+"S@ c #EEE144",
+"T@ c #F8EB47",
+"U@ c #B7AC34",
+"V@ c #8F8729",
+"W@ c #99912C",
+"X@ c #DED23E",
+"Y@ c #DCCF3E",
+"Z@ c #4B4615",
+"`@ c #030301",
+" # c #1C1A08",
+".# c #1D1B08",
+"+# c #010100",
+"@# c #494414",
+"## c #E0D23E",
+"$# c #C1B535",
+"%# c #67611C",
+"&# c #3E3A11",
+"*# c #000000",
+"=# c #222009",
+"-# c #A49A2D",
+";# c #E4D73D",
+"># c #827923",
+",# c #CEC037",
+"'# c #474213",
+")# c #E9D93D",
+"!# c #F3E340",
+"~# c #312E0D",
+"{# c #28250A",
+"]# c #FEEB3F",
+"^# c #FDE551",
+"/# c #F9FC64",
+"(# c #FBF251",
+"_# c #E7DF4A",
+":# c #D7D045",
+"<# c #C4BD3F",
+"[# c #CFC742",
+"}# c #544F19",
+"|# c #383511",
+"1# c #CDC23B",
+"2# c #706A20",
+"3# c #6D671F",
+"4# c #524E18",
+"5# c #D7CB3E",
+"6# c #444114",
+"7# c #3A3710",
+"8# c #B5AB33",
+"9# c #27250B",
+"0# c #2D2B0D",
+"a# c #5F5A1B",
+"b# c #322F0E",
+"c# c #070702",
+"d# c #B6AC33",
+"e# c #E2D63F",
+"f# c #161506",
+"g# c #403C12",
+"h# c #DBCE3D",
+"i# c #D1C53A",
+"j# c #28260B",
+"k# c #211F09",
+"l# c #F0E242",
+"m# c #CDC138",
+"n# c #575218",
+"o# c #F5E642",
+"p# c #585218",
+"q# c #A79C2D",
+"r# c #E1D23C",
+"s# c #948A28",
+"t# c #FDEC43",
+"u# c #EADA3E",
+"v# c #DACB39",
+"w# c #71691E",
+"x# c #D5C738",
+"y# c #FCED58",
+"z# c #EFE950",
+"A# c #EFE850",
+"B# c #E7E04C",
+"C# c #D5CF46",
+"D# c #BBB63E",
+"E# c #9E9A34",
+"F# c #918D30",
+"G# c #8F8B2F",
+"H# c #ABA638",
+"I# c #E6E04B",
+"J# c #4B4818",
+"K# c #2B290E",
+"L# c #1B1A09",
+"M# c #0B0B04",
+"N# c #171607",
+"O# c #F5EB4B",
+"P# c #DBD043",
+"Q# c #E2C542",
+"R# c #F8E249",
+"S# c #847F28",
+"T# c #28260C",
+"U# c #060602",
+"V# c #706B21",
+"W# c #5D591C",
+"X# c #D1C73C",
+"Y# c #928B2A",
+"Z# c #5D581B",
+"`# c #201E09",
+" $ c #A99F31",
+".$ c #F8EA48",
+"+$ c #E4D841",
+"@$ c #302D0E",
+"#$ c #4D4816",
+"$$ c #FBED47",
+"%$ c #36330F",
+"&$ c #2F2C0D",
+"*$ c #69631E",
+"=$ c #100F05",
+"-$ c #EEE042",
+";$ c #CFC339",
+">$ c #8F8627",
+",$ c #E5D83F",
+"'$ c #7D7622",
+")$ c #F1E341",
+"!$ c #38340F",
+"~$ c #4B4614",
+"{$ c #EFDF40",
+"]$ c #151306",
+"^$ c #0C0B03",
+"/$ c #33300D",
+"($ c #DFD03B",
+"_$ c #FBF558",
+":$ c #A39F37",
+"<$ c #6B6924",
+"[$ c #706D26",
+"}$ c #696624",
+"|$ c #59561E",
+"1$ c #3C3A14",
+"2$ c #161507",
+"3$ c #86832D",
+"4$ c #8D892F",
+"5$ c #28270D",
+"6$ c #514E1B",
+"7$ c #5A571E",
+"8$ c #474517",
+"9$ c #020201",
+"0$ c #626020",
+"a$ c #F4ED50",
+"b$ c #0A0A03",
+"c$ c #514E1A",
+"d$ c #9A9532",
+"e$ c #AFA938",
+"f$ c #BFB83D",
+"g$ c #CBC341",
+"h$ c #343211",
+"i$ c #111005",
+"j$ c #CAC341",
+"k$ c #E9E049",
+"l$ c #AAA335",
+"m$ c #8E882C",
+"n$ c #938D2E",
+"o$ c #CDC53F",
+"p$ c #D7CE42",
+"q$ c #64601F",
+"r$ c #605C1E",
+"s$ c #423F14",
+"t$ c #0B0A03",
+"u$ c #1E1A09",
+"v$ c #BEA336",
+"w$ c #524717",
+"x$ c #888229",
+"y$ c #D3CA3F",
+"z$ c #CDC33D",
+"A$ c #635E1D",
+"B$ c #040401",
+"C$ c #181707",
+"D$ c #645F1D",
+"E$ c #98902B",
+"F$ c #ABA231",
+"G$ c #807924",
+"H$ c #F4E644",
+"I$ c #2C2A0C",
+"J$ c #4C4815",
+"K$ c #555017",
+"L$ c #F5E743",
+"M$ c #807923",
+"N$ c #C5B835",
+"O$ c #898025",
+"P$ c #DCCE3A",
+"Q$ c #ECDC3E",
+"R$ c #A59A2C",
+"S$ c #EEDE3F",
+"T$ c #FDE951",
+"U$ c #8A872F",
+"V$ c #646222",
+"W$ c #676423",
+"X$ c #A09C35",
+"Y$ c #B0AC3B",
+"Z$ c #E2DC4C",
+"`$ c #F1EA51",
+" % c #D4CE47",
+".% c #F0E950",
+"+% c #424016",
+"@% c #E9E34D",
+"#% c #F9F252",
+"$% c #989332",
+"%% c #4A4818",
+"&% c #ADA738",
+"*% c #F8EF50",
+"=% c #524F1A",
+"-% c #131206",
+";% c #CBC441",
+">% c #827C29",
+",% c #444115",
+"'% c #666220",
+")% c #3E3C13",
+"!% c #99932F",
+"~% c #E2D946",
+"{% c #9D9731",
+"]% c #7B7626",
+"^% c #201F0A",
+"/% c #757024",
+"(% c #F0E649",
+"_% c #E5DB46",
+":% c #332D0F",
+"<% c #181507",
+"[% c #FCD848",
+"}% c #BCA236",
+"|% c #9B8A2D",
+"1% c #423E13",
+"2% c #080802",
+"3% c #E5D942",
+"4% c #948C2B",
+"5% c #BCB135",
+"6% c #C1B637",
+"7% c #A0972D",
+"8% c #28250B",
+"9% c #504B16",
+"0% c #756E20",
+"a% c #F2E241",
+"b% c #6D661D",
+"c% c #CFC136",
+"d% c #C9BC35",
+"e% c #22220C",
+"f% c #1E1D0A",
+"g% c #6D6A24",
+"h% c #E7E14D",
+"i% c #797628",
+"j% c #B6B13C",
+"k% c #2F2D0F",
+"l% c #ABA438",
+"m% c #F9F050",
+"n% c #56531C",
+"o% c #141306",
+"p% c #CDC642",
+"q% c #CEC540",
+"r% c #6F6B23",
+"s% c #4C4917",
+"t% c #2A280D",
+"u% c #F2E94B",
+"v% c #2D2B0E",
+"w% c #ADA134",
+"x% c #C6AA39",
+"y% c #776622",
+"z% c #F9D647",
+"A% c #8E862A",
+"B% c #F5E949",
+"C% c #F5E847",
+"D% c #948B2B",
+"E% c #CCC13A",
+"F% c #B9AF35",
+"G% c #B4AA32",
+"H% c #CEC33A",
+"I% c #524D17",
+"J% c #1D1C08",
+"K% c #FCED46",
+"L% c #EFE142",
+"M% c #080702",
+"N% c #736C1F",
+"O% c #181606",
+"P% c #635E1B",
+"Q% c #726A1F",
+"R% c #A89C2C",
+"S% c #E0D13B",
+"T% c #302D0D",
+"U% c #413D11",
+"V% c #FCEE59",
+"W% c #FDE64F",
+"X% c #343312",
+"Y% c #0E0E05",
+"Z% c #7D7A29",
+"`% c #D8D247",
+" & c #DDD748",
+".& c #676422",
+"+& c #5C581D",
+"@& c #0F0F05",
+"#& c #21200B",
+"$& c #BEB73D",
+"%& c #E1D847",
+"&& c #484516",
+"*& c #E3DA47",
+"=& c #2C2A0E",
+"-& c #0A0903",
+";& c #686320",
+">& c #D7CD42",
+",& c #AA9231",
+"'& c #64561D",
+")& c #A49B31",
+"!& c #E6DA44",
+"~& c #857E26",
+"{& c #DCD03F",
+"]& c #A9A030",
+"^& c #C3B837",
+"/& c #BEB335",
+"(& c #BAB034",
+"_& c #837C24",
+":& c #F8E945",
+"<& c #5B5519",
+"[& c #E6D93F",
+"}& c #0D0D04",
+"|& c #A39A2D",
+"1& c #9A9129",
+"2& c #FCEB43",
+"3& c #FAE943",
+"4& c #6A631C",
+"5& c #1A1907",
+"6& c #25220A",
+"7& c #504A15",
+"8& c #EDDD3F",
+"9& c #FAF45E",
+"0& c #FCF256",
+"a& c #444217",
+"b& c #F8F253",
+"c& c #C8C242",
+"d& c #0F0E05",
+"e& c #3F3D15",
+"f& c #85802B",
+"g& c #B5AE3A",
+"h& c #3C3913",
+"i& c #C5BE3E",
+"j& c #FAF04E",
+"k& c #BEB63B",
+"l& c #807B28",
+"m& c #413E14",
+"n& c #050502",
+"o& c #191808",
+"p& c #F5EC4C",
+"q& c #716C22",
+"r& c #E8DE47",
+"s& c #9A852C",
+"t& c #7D6B24",
+"u& c #E8C742",
+"v& c #A79E31",
+"w& c #746E21",
+"x& c #E8DB42",
+"y& c #928A2A",
+"z& c #F5E746",
+"A& c #B3AA32",
+"B& c #6F691F",
+"C& c #DED13E",
+"D& c #8D8528",
+"E& c #6A641D",
+"F& c #615B1B",
+"G& c #161406",
+"H& c #B7AC33",
+"I& c #595418",
+"J& c #5C5719",
+"K& c #F7E742",
+"L& c #EADB3E",
+"M& c #BDB032",
+"N& c #BFB232",
+"O& c #E8D83D",
+"P& c #FFE244",
+"Q& c #F9F963",
+"R& c #54521C",
+"S& c #EAE44E",
+"T& c #9D9834",
+"U& c #B8B33D",
+"V& c #1D1D0A",
+"W& c #333211",
+"X& c #C6BF40",
+"Y& c #E1D948",
+"Z& c #E9E14B",
+"`& c #656220",
+" * c #E5DC48",
+".* c #151406",
+"+* c #625E1F",
+"@* c #87822A",
+"#* c #D1C942",
+"$* c #AEA736",
+"%* c #E5DC47",
+"&* c #C0B83B",
+"** c #C9C13E",
+"=* c #27250C",
+"-* c #65601F",
+";* c #F8ED4C",
+">* c #897C28",
+",* c #CAAD3A",
+"'* c #786722",
+")* c #FDEF4B",
+"!* c #6A6520",
+"~* c #C0B639",
+"{* c #BFB637",
+"]* c #A49B2F",
+"^* c #2B280C",
+"/* c #787223",
+"(* c #E0D441",
+"_* c #817A25",
+":* c #3E3A12",
+"<* c #C0B537",
+"[* c #464314",
+"}* c #131205",
+"|* c #454113",
+"1* c #403D12",
+"2* c #9E952C",
+"3* c #DDD03D",
+"4* c #908828",
+"5* c #726B1F",
+"6* c #7B7422",
+"7* c #AAA02F",
+"8* c #F3E443",
+"9* c #F9FC65",
+"0* c #FBF357",
+"a* c #646122",
+"b* c #DAD549",
+"c* c #ADA839",
+"d* c #A8A338",
+"e* c #FAF352",
+"f* c #0B0A04",
+"g* c #D5CD45",
+"h* c #807B29",
+"i* c #504D19",
+"j* c #EAE149",
+"k* c #A59F33",
+"l* c #D6CD42",
+"m* c #6D6922",
+"n* c #706C23",
+"o* c #363411",
+"p* c #54501A",
+"q* c #FBF04D",
+"r* c #67621F",
+"s* c #FBDB48",
+"t* c #F8D547",
+"u* c #716120",
+"v* c #60521B",
+"w* c #AB9331",
+"x* c #A89731",
+"y* c #111105",
+"z* c #454114",
+"A* c #A9A132",
+"B* c #FBEE48",
+"C* c #5C571A",
+"D* c #746E22",
+"E* c #827B25",
+"F* c #7D7624",
+"G* c #E1D541",
+"H* c #BDB236",
+"I* c #D4C83C",
+"J* c #E0D340",
+"K* c #FEE350",
+"L* c #747127",
+"M* c #CAC544",
+"N* c #BCB73E",
+"O* c #989432",
+"P* c #C3BE40",
+"Q* c #827E2A",
+"R* c #ABA538",
+"S* c #7B7628",
+"T* c #F5EC4F",
+"U* c #D5CE45",
+"V* c #787426",
+"W* c #ECE34A",
+"X* c #D9D044",
+"Y* c #26250C",
+"Z* c #B5AE38",
+"`* c #635F1F",
+" = c #BDB63B",
+".= c #9C9630",
+"+= c #6D6821",
+"@= c #878129",
+"#= c #4F4B18",
+"$= c #29270C",
+"%= c #4C4116",
+"&= c #AC9431",
+"*= c #574A19",
+"== c #362E0F",
+"-= c #453B14",
+";= c #857C27",
+">= c #E1D543",
+",= c #938C2C",
+"'= c #B6AD36",
+")= c #B5AB35",
+"!= c #E5D943",
+"~= c #FDE955",
+"{= c #FAF558",
+"]= c #83802C",
+"^= c #BAB63E",
+"/= c #CCC744",
+"(= c #88852D",
+"_= c #F2EB4F",
+":= c #353411",
+"<= c #121206",
+"[= c #E8E14C",
+"}= c #E5DD4B",
+"|= c #0C0C04",
+"1= c #353311",
+"2= c #DED647",
+"3= c #C7C040",
+"4= c #151407",
+"5= c #E3DB48",
+"6= c #DDD445",
+"7= c #181708",
+"8= c #4E4B19",
+"9= c #373511",
+"0= c #858029",
+"a= c #4F4C19",
+"b= c #BDB53A",
+"c= c #5F5B1D",
+"d= c #7F7A27",
+"e= c #8E882B",
+"f= c #8F882C",
+"g= c #AFA735",
+"h= c #C5BD3C",
+"i= c #D5CC41",
+"j= c #EEE448",
+"k= c #FBF04C",
+"l= c #FFDF46",
+"m= c #FBF356",
+"n= c #938F32",
+"o= c #A9A539",
+"p= c #CBC543",
+"q= c #55531C",
+"r= c #F2EB50",
+"s= c #F1EA50",
+"t= c #D7D147",
+"u= c #959131",
+"v= c #25240C",
+"w= c #BFBA3E",
+"x= c #BEB83E",
+"y= c #1D1C09",
+"z= c #333110",
+"A= c #413F15",
+"B= c #494617",
+"C= c #D8D045",
+"D= c #ECE24A",
+"E= c #A6A034",
+"F= c #928D2E",
+"G= c #A9A235",
+"H= c #E8DF49",
+"I= c #FBF14E",
+"J= c #F8EF4D",
+"K= c #FEE94A",
+"L= c #FBF35E",
+"M= c #FEE54E",
+"N= c #BCB840",
+"O= c #BCB740",
+"P= c #4B4A1A",
+"Q= c #353412",
+"R= c #7D792A",
+"S= c #5B581E",
+"T= c #E4DD4C",
+"U= c #686623",
+"V= c #3E3C15",
+"W= c #181808",
+"X= c #24230C",
+"Y= c #747126",
+"Z= c #E5DE4B",
+"`= c #F8EF51",
+" - c #979231",
+".- c #B1AA39",
+"+- c #FAF55F",
+"@- c #FBF055",
+"#- c #FCF054",
+"$- c #EAE44F",
+"%- c #171608",
+"&- c #312F10",
+"*- c #474518",
+"=- c #5D5B1F",
+"-- c #696623",
+";- c #6E6A25",
+">- c #6F6C25",
+",- c #E9E34E",
+"'- c #AFAA3B",
+")- c #9A9633",
+"!- c #BAB53E",
+"~- c #DFD94A",
+"{- c #E8E14D",
+"]- c #E9E24D",
+"^- c #FEE64A",
+"/- c #FBEA42",
+"(- c #CEC036",
+"_- c #E7D83D",
+":- c #FEE741",
+"<- c #FDEE4B",
+"[- c #ACA22F",
+"}- c #797221",
+"|- c #5E591A",
+"1- c #29260B",
+"2- c #26230A",
+"3- c #433F12",
+"4- c #67601C",
+"5- c #9E932A",
+"6- c #EEDE40",
+"7- c #514C15",
+"8- c #090802",
+"9- c #FDEB52",
+"0- c #FAEB45",
+"a- c #4C4714",
+"b- c #D4C639",
+"c- c #201E08",
+"d- c #A79C2C",
+"e- c #FAF861",
+"f- c #FBF457",
+"g- c #FAED49",
+"h- c #DED341",
+"i- c #E4D843",
+"j- c #968D29",
+"k- c #020100",
+"l- c #817923",
+"m- c #2D2A0C",
+"n- c #A0962A",
+"o- c #FAF862",
+"p- c #FBF559",
+"q- c #A79430",
+"r- c #32300F",
+"s- c #E0D542",
+"t- c #F7E844",
+"u- c #4A4514",
+"v- c #1F1D08",
+"w- c #746D20",
+"x- c #ADA32F",
+"y- c #CABE37",
+"z- c #EADC40",
+"A- c #F1E342",
+"B- c #E9DB3F",
+"C- c #C9BD36",
+"D- c #968C28",
+"E- c #3F3B11",
+"F- c #998F28",
+"G- c #FCEE54",
+"H- c #FCF255",
+"I- c #F7ED4C",
+"J- c #DFD645",
+"K- c #CAC23F",
+"L- c #B6AF38",
+"M- c #A29C32",
+"N- c #7A7425",
+"O- c #66621F",
+"P- c #797325",
+"Q- c #D6CD41",
+"R- c #FCEE4B",
+"S- c #D9BB3E",
+"T- c #060502",
+"U- c #363310",
+"V- c #E8DA41",
+"W- c #1F1D09",
+"X- c #ABA12F",
+"Y- c #D3C538",
+"Z- c #2E2B0C",
+"`- c #938927",
+" ; c #F9FA63",
+".; c #ECE34C",
+"+; c #D9D246",
+"@; c #C3BC3E",
+"#; c #B7B13A",
+"$; c #ACA637",
+"%; c #A09A33",
+"&; c #958F2F",
+"*; c #89842B",
+"=; c #7D7827",
+"-; c #736E24",
+";; c #615D1F",
+">; c #1F1E0A",
+",; c #61531C",
+"'; c #A0982F",
+"); c #26240B",
+"!; c #544F17",
+"~; c #F6E844",
+"{; c #F8E842",
+"]; c #403C11",
+"^; c #8C8325",
+"/; c #F9FB65",
+"(; c #FCF257",
+"_; c #D5CD44",
+":; c #F5D346",
+"<; c #0D0B04",
+"[; c #FAEE49",
+"}; c #68621D",
+"|; c #5A5419",
+"1; c #F6E542",
+"2; c #1C1A07",
+"3; c #FBF15C",
+"4; c #050401",
+"5; c #23210B",
+"6; c #C4BC3C",
+"7; c #A99130",
+"8; c #24200A",
+"9; c #A69E31",
+"0; c #CDC23A",
+"a; c #9B9029",
+"b; c #716A1E",
+"c; c #444216",
+"d; c #343311",
+"e; c #656120",
+"f; c #2B2A0E",
+"g; c #C2BA3D",
+"h; c #F8EE4E",
+"i; c #F7EE4D",
+"j; c #B0A936",
+"k; c #D5CB41",
+"l; c #504417",
+"m; c #796823",
+"n; c #877E27",
+"o; c #FCEF4A",
+"p; c #464214",
+"q; c #CBBF38",
+"r; c #575117",
+"s; c #FDEA52",
+"t; c #666221",
+"u; c #161607",
+"v; c #ABA537",
+"w; c #A09932",
+"x; c #A59E33",
+"y; c #E1D745",
+"z; c #EFCD44",
+"A; c #070602",
+"B; c #CCB03B",
+"C; c #ECD244",
+"D; c #AEA533",
+"E; c #DDD03E",
+"F; c #35320E",
+"G; c #FEE24F",
+"H; c #959030",
+"I; c #AEA738",
+"J; c #9E9832",
+"K; c #B7B039",
+"L; c #F3E84B",
+"M; c #D9CF42",
+"N; c #9C872D",
+"O; c #211D0A",
+"P; c #FDEE4A",
+"Q; c #66611E",
+"R; c #34310F",
+"S; c #8B8327",
+"T; c #9C932C",
+"U; c #171606",
+"V; c #F9F85F",
+"W; c #DDDC54",
+"X; c #ABAB40",
+"Y; c #B6B545",
+"Z; c #F6F55D",
+"`; c #B9B23B",
+" > c #F3EA4E",
+".> c #BCB53C",
+"+> c #B0A937",
+"@> c #BFB73A",
+"#> c #433C14",
+"$> c #736D22",
+"%> c #D4C93E",
+"&> c #B6AD35",
+"*> c #4B4715",
+"=> c #E6D841",
+"-> c #918727",
+";> c #37330E",
+">> c #EBEC5B",
+",> c #DDDE56",
+"'> c #CDCE50",
+")> c #BEBE49",
+"!> c #AFAE43",
+"~> c #9F9E3D",
+"{> c #8F8E37",
+"]> c #7F7F31",
+"^> c #6F6F2B",
+"/> c #605F25",
+"(> c #50501E",
+"_> c #44441A",
+":> c #2C2C11",
+"<> c #0E0E06",
+"[> c #3B3B16",
+"}> c #F8F65D",
+"|> c #CDC541",
+"1> c #A09A32",
+"2> c #22200A",
+"3> c #E4D944",
+"4> c #C6BC3B",
+"5> c #464315",
+"6> c #3C3911",
+"7> c #181607",
+"8> c #FCEC44",
+"9> c #AB9F2D",
+"0> c #9F952A",
+"a> c #EBDB3E",
+"b> c #FBEE59",
+"c> c #F1F260",
+"d> c #848534",
+"e> c #50501F",
+"f> c #42431A",
+"g> c #414119",
+"h> c #3E3F19",
+"i> c #383816",
+"j> c #303013",
+"k> c #292910",
+"l> c #20200C",
+"m> c #131307",
+"n> c #C8C74B",
+"o> c #D3CB44",
+"p> c #F2E94E",
+"q> c #DDD546",
+"r> c #918B2D",
+"s> c #746F23",
+"t> c #8F882A",
+"u> c #BEB437",
+"v> c #F6E945",
+"w> c #35320F",
+"x> c #EDDD3E",
+"y> c #FDEC42",
+"z> c #838434",
+"A> c #BEBC47",
+"B> c #FEE14C",
+"C> c #FDEB51",
+"D> c #F1E94E",
+"E> c #C4BD40",
+"F> c #999432",
+"G> c #706C25",
+"H> c #757126",
+"I> c #B4AD39",
+"J> c #CFC843",
+"K> c #EDE44B",
+"L> c #817C28",
+"M> c #363410",
+"N> c #6F6921",
+"O> c #444013",
+"P> c #E7DA41",
+"Q> c #F3E442",
+"R> c #CDBF37",
+"S> c #C2B534",
+"T> c #C0B333",
+"U> c #BEB133",
+"V> c #B9AD32",
+"W> c #B2A630",
+"X> c #AA9F2E",
+"Y> c #A3982B",
+"Z> c #9C9229",
+"`> c #8A8125",
+" , c #756D1F",
+"., c #585217",
+"+, c #36330E",
+"@, c #1D1B07",
+"#, c #D9C938",
+"$, c #8F9039",
+"%, c #24240E",
+"&, c #3C3C17",
+"*, c #4E4E1E",
+"=, c #5E5E24",
+"-, c #6E6D2A",
+";, c #7D7D30",
+">, c #8D8D36",
+",, c #9D9C3C",
+"', c #B0AF43",
+"), c #BABA47",
+"!, c #B9B846",
+"~, c #A1A13D",
+"{, c #5F5F24",
+"], c #C9C74C",
+"^, c #FEE44E",
+"/, c #F1EB53",
+"(, c #F9F355",
+"_, c #DED84A",
+":, c #777428",
+"<, c #726F26",
+"[, c #E3DC4C",
+"}, c #969232",
+"|, c #151507",
+"1, c #121106",
+"2, c #2A290E",
+"3, c #393813",
+"4, c #3B3A14",
+"5, c #2D2C0F",
+"6, c #0E0D05",
+"7, c #21200A",
+"8, c #A39D34",
+"9, c #FBF150",
+"0, c #030201",
+"a, c #716C23",
+"b, c #22210B",
+"c, c #3D3A13",
+"d, c #DACF41",
+"e, c #C2B839",
+"f, c #948D2B",
+"g, c #C6BB39",
+"h, c #E0D43F",
+"i, c #484314",
+"j, c #A0972C",
+"k, c #9A8F28",
+"l, c #FBF25C",
+"m, c #F7F862",
+"n, c #94953A",
+"o, c #6F6F2C",
+"p, c #9A9A3C",
+"q, c #CACB50",
+"r, c #E3E459",
+"s, c #CBCC50",
+"t, c #4D4D1E",
+"u, c #1A1A0A",
+"v, c #D7D854",
+"w, c #78782E",
+"x, c #D4D350",
+"y, c #F0CE45",
+"z, c #867729",
+"A, c #6D6824",
+"B, c #656323",
+"C, c #696724",
+"D, c #7F7C2C",
+"E, c #B0AC3D",
+"F, c #F2EC54",
+"G, c #B1AD3D",
+"H, c #050402",
+"I, c #333212",
+"J, c #F8F255",
+"K, c #C7C244",
+"L, c #131306",
+"M, c #25240D",
+"N, c #2F2E10",
+"O, c #2B2A0F",
+"P, c #656222",
+"Q, c #323111",
+"R, c #817D2A",
+"S, c #615D1E",
+"T, c #A39C32",
+"U, c #98912E",
+"V, c #837C27",
+"W, c #FBEE4A",
+"X, c #F2E647",
+"Y, c #4B4716",
+"Z, c #3D3A11",
+"`, c #524D16",
+" ' c #322F0D",
+".' c #E6D63C",
+"+' c #FDE854",
+"@' c #EDEE5D",
+"#' c #090903",
+"$' c #686828",
+"%' c #DBDA53",
+"&' c #D3D24F",
+"*' c #BAAF3D",
+"=' c #646123",
+"-' c #646223",
+";' c #DDD74C",
+">' c #3F3E16",
+",' c #827E2B",
+"'' c #938F30",
+")' c #313010",
+"!' c #464417",
+"~' c #C2BB3F",
+"{' c #C1BA3F",
+"]' c #CDC543",
+"^' c #E1D949",
+"/' c #A49E35",
+"(' c #514E19",
+"_' c #EFE449",
+":' c #EADF47",
+"<' c #BDB234",
+"[' c #605A1A",
+"}' c #7C7321",
+"|' c #7F7722",
+"1' c #464113",
+"2' c #423D11",
+"3' c #FEDE4C",
+"4' c #2F2F12",
+"5' c #74752D",
+"6' c #DEDD55",
+"7' c #565521",
+"8' c #636225",
+"9' c #F3F25C",
+"0' c #BEBD48",
+"a' c #C2C047",
+"b' c #868531",
+"c' c #55551F",
+"d' c #333313",
+"e' c #1B1B0A",
+"f' c #0F0F06",
+"g' c #121207",
+"h' c #27260E",
+"i' c #4A491B",
+"j' c #74722A",
+"k' c #CFCC4B",
+"l' c #EFEA55",
+"m' c #494719",
+"n' c #E6E04F",
+"o' c #A39F38",
+"p' c #141307",
+"q' c #4C4A1A",
+"r' c #C2BC41",
+"s' c #BDB73F",
+"t' c #FAF354",
+"u' c #ACA739",
+"v' c #F5EC50",
+"w' c #9C9732",
+"x' c #86812B",
+"y' c #312F0F",
+"z' c #CEC53E",
+"A' c #BDB338",
+"B' c #DACE40",
+"C' c #534F18",
+"D' c #FAEB46",
+"E' c #5A5418",
+"F' c #C5B834",
+"G' c #404119",
+"H' c #696929",
+"I' c #5E5D24",
+"J' c #99993A",
+"K' c #9F9E3C",
+"L' c #F8F65C",
+"M' c #898732",
+"N' c #111106",
+"O' c #646324",
+"P' c #F6F359",
+"Q' c #F5F057",
+"R' c #302F11",
+"S' c #070703",
+"T' c #5D5B21",
+"U' c #9D9937",
+"V' c #C2BF44",
+"W' c #D2CE49",
+"X' c #C9C546",
+"Y' c #ACA73B",
+"Z' c #666423",
+"`' c #E9E350",
+" ) c #DCD74B",
+".) c #928E30",
+"+) c #938E30",
+"@) c #413E15",
+"#) c #767124",
+"$) c #E3D743",
+"%) c #EFE347",
+"&) c #DDD242",
+"*) c #CDC33C",
+"=) c #BDB437",
+"-) c #ADA433",
+";) c #9D952E",
+">) c #8A8329",
+",) c #67621E",
+"') c #D4C83D",
+")) c #3B3811",
+"!) c #D5C83C",
+"~) c #A89D2D",
+"{) c #595A23",
+"]) c #545420",
+"^) c #656526",
+"/) c #7B7A2E",
+"() c #CDCB4C",
+"_) c #1C1C0A",
+":) c #0D0D05",
+"<) c #605F23",
+"[) c #737129",
+"}) c #53511D",
+"|) c #EDE853",
+"1) c #DDD84D",
+"2) c #2A290F",
+"3) c #E7E14F",
+"4) c #2C2B0F",
+"5) c #403E15",
+"6) c #E7DF4B",
+"7) c #514D1A",
+"8) c #1F1E09",
+"9) c #5B561A",
+"0) c #978E2A",
+"a) c #B5A930",
+"b) c #F2E140",
+"c) c #606025",
+"d) c #494A1D",
+"e) c #6D6D2A",
+"f) c #595922",
+"g) c #141407",
+"h) c #555420",
+"i) c #D0CF4D",
+"j) c #2A2A10",
+"k) c #979637",
+"l) c #E1E053",
+"m) c #CECC4B",
+"n) c #504F1D",
+"o) c #C5C347",
+"p) c #F8F358",
+"q) c #100F06",
+"r) c #F7F256",
+"s) c #D6D14A",
+"t) c #E0DA4D",
+"u) c #F9F354",
+"v) c #B2AD3C",
+"w) c #E5DE4C",
+"x) c #474417",
+"y) c #605D1F",
+"z) c #C2B93A",
+"A) c #DACE3F",
+"B) c #B2A832",
+"C) c #4A4615",
+"D) c #AA9E2D",
+"E) c #E7D73D",
+"F) c #FBEE5A",
+"G) c #70702B",
+"H) c #3A3A17",
+"I) c #858433",
+"J) c #5C5C23",
+"K) c #151508",
+"L) c #383715",
+"M) c #414118",
+"N) c #6B6A27",
+"O) c #F8F65B",
+"P) c #5F5E23",
+"Q) c #666525",
+"R) c #D9D44D",
+"S) c #7C792B",
+"T) c #383613",
+"U) c #D2CD48",
+"V) c #A5A038",
+"W) c #383713",
+"X) c #949031",
+"Y) c #9E9833",
+"Z) c #706C24",
+"`) c #FBF14F",
+" ! c #25230B",
+".! c #343210",
+"+! c #545019",
+"@! c #847D27",
+"#! c #A49C30",
+"$! c #B3AA34",
+"%! c #716B21",
+"&! c #F5E745",
+"*! c #E1D43E",
+"=! c #7F8032",
+"-! c #7B7B2F",
+";! c #666526",
+">! c #ECEA58",
+",! c #78772C",
+"'! c #DAD84F",
+")! c #26260E",
+"!! c #D5D14C",
+"~! c #7A782B",
+"{! c #54521D",
+"]! c #C3BE43",
+"^! c #F9F254",
+"/! c #29280E",
+"(! c #B9B43E",
+"_! c #080803",
+":! c #EDE54D",
+"<! c #EEE44A",
+"[! c #F8ED4B",
+"}! c #E0D341",
+"|! c #6C661E",
+"1! c #645E1C",
+"2! c #312D0D",
+"3! c #B6AA30",
+"4! c #FAF45F",
+"5! c #8F9038",
+"6! c #101006",
+"7! c #F7F860",
+"8! c #E4E358",
+"9! c #23230D",
+"0! c #F7F65D",
+"a! c #A3A23D",
+"b! c #9A9A3A",
+"c! c #F2F05B",
+"d! c #E2E054",
+"e! c #A7A63D",
+"f! c #F8F55A",
+"g! c #F8F559",
+"h! c #F3EE56",
+"i! c #F1EC55",
+"j! c #83802D",
+"k! c #DFDA4C",
+"l! c #A49F37",
+"m! c #E5DF4C",
+"n! c #908A2E",
+"o! c #DED545",
+"p! c #B6AE37",
+"q! c #E8DC45",
+"r! c #FDEB4A",
+"s! c #FDEB49",
+"t! c #D8CD3E",
+"u! c #6B651F",
+"v! c #C7BB37",
+"w! c #B6AA31",
+"x! c #9F9F3E",
+"y! c #5E5E25",
+"z! c #A7A841",
+"A! c #A7A640",
+"B! c #898835",
+"C! c #73732C",
+"D! c #49491C",
+"E! c #5B5A22",
+"F! c #F9F75C",
+"G! c #171709",
+"H! c #7E7D2E",
+"I! c #A2A03B",
+"J! c #E4E152",
+"K! c #444218",
+"L! c #9A9736",
+"M! c #DED94E",
+"N! c #F8F256",
+"O! c #C6C144",
+"P! c #E4DE4E",
+"Q! c #BFBA40",
+"R! c #A8A237",
+"S! c #CEC641",
+"T! c #5E591C",
+"U! c #3C3912",
+"V! c #FEE549",
+"W! c #4D4916",
+"X! c #E5D841",
+"Y! c #7D7623",
+"Z! c #DFD23E",
+"`! c #E2D33D",
+" ~ c #191807",
+".~ c #68611B",
+"+~ c #F9FA64",
+"@~ c #AEAF44",
+"#~ c #4D4D1D",
+"$~ c #AAA83F",
+"%~ c #E1DF53",
+"&~ c #F9F65A",
+"*~ c #949236",
+"=~ c #D4D14C",
+"-~ c #C9C547",
+";~ c #24230D",
+">~ c #414017",
+",~ c #58551E",
+"'~ c #898630",
+")~ c #C8C345",
+"!~ c #FAF456",
+"~~ c #A39E36",
+"{~ c #454317",
+"]~ c #0D0C04",
+"^~ c #F3EA4F",
+"/~ c #B0A938",
+"(~ c #BEB63C",
+"_~ c #F4E949",
+":~ c #8B8429",
+"<~ c #FFE049",
+"[~ c #BDB337",
+"}~ c #736D21",
+"|~ c #FAEC46",
+"1~ c #1B1907",
+"2~ c #D2C53A",
+"3~ c #C4B734",
+"4~ c #39350F",
+"5~ c #FFE345",
+"6~ c #BEBF4A",
+"7~ c #181809",
+"8~ c #313113",
+"9~ c #424219",
+"0~ c #3D3C17",
+"a~ c #19190A",
+"b~ c #353414",
+"c~ c #E0DF53",
+"d~ c #AAA93F",
+"e~ c #B7B643",
+"f~ c #F4F25A",
+"g~ c #D4D14D",
+"h~ c #201F0C",
+"i~ c #C4C247",
+"j~ c #B0AD3F",
+"k~ c #726F27",
+"l~ c #EEE952",
+"m~ c #F8F153",
+"n~ c #27260D",
+"o~ c #C6C042",
+"p~ c #E6E04C",
+"q~ c #5A581E",
+"r~ c #C0B83D",
+"s~ c #AEA737",
+"t~ c #A9A233",
+"u~ c #D9CE40",
+"v~ c #2B290C",
+"w~ c #ECDE42",
+"x~ c #6B651E",
+"y~ c #FDEC44",
+"z~ c #70691E",
+"A~ c #FCEB42",
+"B~ c #F9FA65",
+"C~ c #CECF50",
+"D~ c #7D7E31",
+"E~ c #6D6C2A",
+"F~ c #161608",
+"G~ c #D1CF4D",
+"H~ c #8A8933",
+"I~ c #55541F",
+"J~ c #B4B241",
+"K~ c #E7E251",
+"L~ c #7D7A2C",
+"M~ c #22210C",
+"N~ c #201F0B",
+"O~ c #A19D36",
+"P~ c #4C4919",
+"Q~ c #B1AC3B",
+"R~ c #D0C842",
+"S~ c #FEE84A",
+"T~ c #645E1D",
+"U~ c #37340F",
+"V~ c #66601C",
+"W~ c #827A23",
+"X~ c #898125",
+"Y~ c #827A24",
+"Z~ c #69631D",
+"`~ c #E1D23B",
+" { c #FEEB42",
+".{ c #F9FC63",
+"+{ c #DDDF56",
+"@{ c #C2C24B",
+"#{ c #FAFA60",
+"${ c #D9D953",
+"%{ c #EEEE5A",
+"&{ c #FAFA5F",
+"*{ c #F4F45C",
+"={ c #808030",
+"-{ c #5E5E23",
+";{ c #CDCC4D",
+">{ c #F6F55B",
+",{ c #A3A23C",
+"'{ c #585720",
+"){ c #636324",
+"!{ c #74732A",
+"~{ c #A5A33B",
+"{{ c #FBF759",
+"]{ c #FBF758",
+"^{ c #D3CE4A",
+"/{ c #A9A63B",
+"({ c #737128",
+"_{ c #605E21",
+":{ c #4E4C1B",
+"<{ c #413F16",
+"[{ c #313011",
+"}{ c #161508",
+"|{ c #434217",
+"1{ c #26250D",
+"2{ c #CBC644",
+"3{ c #434116",
+"4{ c #F6EF51",
+"5{ c #FCF452",
+"6{ c #FCF451",
+"7{ c #DFD747",
+"8{ c #8D872C",
+"9{ c #E3D944",
+"0{ c #4D4917",
+"a{ c #FDF14B",
+"b{ c #FEE649",
+"c{ c #EFE345",
+"d{ c #6F6920",
+"e{ c #4F4B16",
+"f{ c #3E3B12",
+"g{ c #66601D",
+"h{ c #EFE243",
+"i{ c #B8AC31",
+"j{ c #857C23",
+"k{ c #27250A",
+"l{ c #FAEA42",
+"m{ c #FEE744",
+"n{ c #EDEF5C",
+"o{ c #B5B647",
+"p{ c #CACA4D",
+"q{ c #74732C",
+"r{ c #27260F",
+"s{ c #F9F85C",
+"t{ c #8A8A33",
+"u{ c #4F4E1D",
+"v{ c #919035",
+"w{ c #E8E654",
+"x{ c #A6A43C",
+"y{ c #959336",
+"z{ c #E3E051",
+"A{ c #2F2E11",
+"B{ c #999636",
+"C{ c #E0C140",
+"D{ c #4F4A19",
+"E{ c #DAD54B",
+"F{ c #A09C36",
+"G{ c #52501B",
+"H{ c #646121",
+"I{ c #E4DC49",
+"J{ c #676320",
+"K{ c #F5EA4A",
+"L{ c #474415",
+"M{ c #1C1B08",
+"N{ c #CEC53D",
+"O{ c #F2E748",
+"P{ c #D7CD40",
+"Q{ c #AEA634",
+"R{ c #9C942E",
+"S{ c #E2C241",
+"T{ c #4A3F15",
+"U{ c #1B1708",
+"V{ c #201C09",
+"W{ c #99902B",
+"X{ c #E7D940",
+"Y{ c #020200",
+"Z{ c #454012",
+"`{ c #928927",
+" ] c #F8E742",
+".] c #B3A72F",
+"+] c #040402",
+"@] c #A5A640",
+"#] c #B0B043",
+"$] c #45451A",
+"%] c #5D5D23",
+"&] c #414018",
+"*] c #81802F",
+"=] c #C5C348",
+"-] c #F6F45B",
+";] c #B5B442",
+">] c #858430",
+",] c #474619",
+"'] c #8B8831",
+")] c #393814",
+"!] c #A9A53A",
+"~] c #D1CB45",
+"{] c #DCD345",
+"]] c #FAF04D",
+"^] c #F4EA4C",
+"/] c #F3EA4A",
+"(] c #958E2D",
+"_] c #8C852B",
+":] c #938C2D",
+"<] c #706B22",
+"[] c #1E1D09",
+"}] c #C0B638",
+"|] c #FEE249",
+"1] c #756522",
+"2] c #C6BB38",
+"3] c #D0C43A",
+"4] c #958C29",
+"5] c #746E20",
+"6] c #625C1B",
+"7] c #7F7723",
+"8] c #A69C2D",
+"9] c #EBDC3F",
+"0] c #FEEE44",
+"a] c #F9FB61",
+"b] c #141408",
+"c] c #96963A",
+"d] c #B6B645",
+"e] c #A8A73E",
+"f] c #7A792D",
+"g] c #E9E756",
+"h] c #75742A",
+"i] c #1F1F0B",
+"j] c #A4A23A",
+"k] c #21200C",
+"l] c #8B8830",
+"m] c #A19D37",
+"n] c #9F9B35",
+"o] c #59561D",
+"p] c #191908",
+"q] c #F9F04F",
+"r] c #ECE44B",
+"s] c #F4EB4D",
+"t] c #E5DD49",
+"u] c #ADA637",
+"v] c #383612",
+"w] c #494616",
+"x] c #A29B32",
+"y] c #5B581C",
+"z] c #9F972E",
+"A] c #9D872D",
+"B] c #4E4A17",
+"C] c #575219",
+"D] c #68621E",
+"E] c #7C7523",
+"F] c #918929",
+"G] c #D8CC3D",
+"H] c #FEEA42",
+"I] c #FAF760",
+"J] c #23240E",
+"K] c #868734",
+"L] c #575721",
+"M] c #ECEC5A",
+"N] c #939337",
+"O] c #48481B",
+"P] c #9D9C3A",
+"Q] c #BEBD45",
+"R] c #666425",
+"S] c #D6D24C",
+"T] c #EFEB54",
+"U] c #FDE950",
+"V] c #817C2B",
+"W] c #24240C",
+"X] c #6E6B24",
+"Y] c #9F9A33",
+"Z] c #4D4A18",
+"`] c #3A3812",
+" ^ c #1A1908",
+".^ c #23220A",
+"+^ c #24220B",
+"@^ c #2C290D",
+"#^ c #655F1E",
+"$^ c #C3A738",
+"%^ c #ECCB44",
+"&^ c #FEE849",
+"*^ c #FDE954",
+"=^ c #333314",
+"-^ c #76772E",
+";^ c #F7F75F",
+">^ c #C0C049",
+",^ c #E2E256",
+"'^ c #B7B645",
+")^ c #1C1C0B",
+"!^ c #838230",
+"~^ c #56551F",
+"{^ c #F0EC55",
+"]^ c #F8F458",
+"^^ c #807E2D",
+"/^ c #FAD647",
+"(^ c #28250D",
+"_^ c #F3ED53",
+":^ c #9E9A35",
+"<^ c #C5BF41",
+"[^ c #29280D",
+"}^ c #DAD143",
+"|^ c #494516",
+"1^ c #5A561C",
+"2^ c #7D7826",
+"3^ c #97902D",
+"4^ c #C3BB3B",
+"5^ c #D9CF41",
+"6^ c #EEE348",
+"7^ c #43431A",
+"8^ c #676728",
+"9^ c #C9C94C",
+"0^ c #EAE855",
+"a^ c #454519",
+"b^ c #23220D",
+"c^ c #E0DC4F",
+"d^ c #F7F357",
+"e^ c #F1CF45",
+"f^ c #524718",
+"g^ c #827F2C",
+"h^ c #F7F153",
+"i^ c #FAF353",
+"j^ c #6A6622",
+"k^ c #56531B",
+"l^ c #767225",
+"m^ c #918C2D",
+"n^ c #A39C33",
+"o^ c #AFA837",
+"p^ c #B6AF39",
+"q^ c #B9B23A",
+"r^ c #BCB53B",
+"s^ c #BEB73B",
+"t^ c #BCB53A",
+"u^ c #C4BC3D",
+"v^ c #ECE349",
+"w^ c #FCEC57",
+"x^ c #525320",
+"y^ c #575722",
+"z^ c #FAFA61",
+"A^ c #C1C049",
+"B^ c #EFEE5A",
+"C^ c #302F12",
+"D^ c #E7E556",
+"E^ c #EEEC57",
+"F^ c #3D3C16",
+"G^ c #28280E",
+"H^ c #171708",
+"I^ c #D1CE4A",
+"J^ c #6C6A26",
+"K^ c #ADAA3D",
+"L^ c #D3CF4A",
+"M^ c #DFDA4E",
+"N^ c #E5CC45",
+"O^ c #D2B53C",
+"P^ c #67591E",
+"Q^ c #090803",
+"R^ c #414016",
+"S^ c #F7F355",
+"T^ c #989533",
+"U^ c #7B7729",
+"V^ c #FCF453",
+"W^ c #D0C943",
+"X^ c #C0BA3E",
+"Y^ c #F4EB4E",
+"Z^ c #FDF14C",
+"`^ c #FEEE45",
+" / c #FEED45",
+"./ c #616226",
+"+/ c #43441A",
+"@/ c #858533",
+"#/ c #6B6A28",
+"$/ c #4D4C1D",
+"%/ c #F3F15A",
+"&/ c #F7F55B",
+"*/ c #9C9B39",
+"=/ c #1C1B0A",
+"-/ c #AEAC3F",
+";/ c #E6E453",
+">/ c #8F8E34",
+",/ c #E1DD50",
+"'/ c #F1ED55",
+")/ c #625E21",
+"!/ c #F9F455",
+"~/ c #C8C343",
+"{/ c #DED749",
+"]/ c #5D5E24",
+"^/ c #F8F961",
+"// c #F8F75E",
+"(/ c #ABAB41",
+"_/ c #21210C",
+":/ c #8D8C34",
+"</ c #C1BF47",
+"[/ c #CAC94A",
+"}/ c #B3B142",
+"|/ c #949336",
+"1/ c #676626",
+"2/ c #191909",
+"3/ c #C6C448",
+"4/ c #353413",
+"5/ c #A3A03A",
+"6/ c #55541E",
+"7/ c #C7AB39",
+"8/ c #FCED52",
+"9/ c #9B9834",
+"0/ c #4E4C1A",
+"a/ c #FEEA4A",
+"b/ c #FEEA43",
+"c/ c #F0F25F",
+"d/ c #878734",
+"e/ c #EBEB5B",
+"f/ c #F5F55E",
+"g/ c #E8E859",
+"h/ c #D8D853",
+"i/ c #C8C84D",
+"j/ c #B8B847",
+"k/ c #A8A841",
+"l/ c #99993B",
+"m/ c #898934",
+"n/ c #79792E",
+"o/ c #686827",
+"p/ c #46461B",
+"q/ c #7C7C2F",
+"r/ c #8B8A34",
+"s/ c #353513",
+"t/ c #DDDB51",
+"u/ c #656525",
+"v/ c #D8D54E",
+"w/ c #23220C",
+"x/ c #0C0B04",
+"y/ c #E4E151",
+"z/ c #E8E351",
+"A/ c #A09D38",
+"B/ c #696725",
+"C/ c #464519",
+"D/ c #383714",
+"E/ c #3C3A15",
+"F/ c #4D4216",
+"G/ c #5C4F1A",
+"H/ c #8A7627",
+"I/ c #DEBF40",
+"J/ c #88842E",
+"K/ c #1D1C0A",
+"L/ c #D1CC47",
+"M/ c #FBF35D",
+"N/ c #F5F760",
+"O/ c #AAAB43",
+"P/ c #93943A",
+"Q/ c #999B3C",
+"R/ c #7C7D31",
+"S/ c #27270F",
+"T/ c #838331",
+"U/ c #A1A03C",
+"V/ c #373614",
+"W/ c #F8F65A",
+"X/ c #908E34",
+"Y/ c #383814",
+"Z/ c #1A1A09",
+"`/ c #48471A",
+" ( c #929034",
+".( c #EFEB56",
+"+( c #FBF75A",
+"@( c #E0DD50",
+"#( c #AAA73C",
+"$( c #DCD84E",
+"%( c #8F8C31",
+"&( c #8E8B30",
+"*( c #58551D",
+"=( c #606126",
+"-( c #2E2E11",
+";( c #E6E556",
+">( c #F4F35B",
+",( c #AFAE41",
+"'( c #75752C",
+")( c #54531F",
+"!( c #3E3E17",
+"~( c #454419",
+"{( c #53531F",
+"]( c #696827",
+"^( c #989738",
+"/( c #373613",
+"(( c #C6C142",
+"_( c #E4DE4C",
+":( c #FAF961",
+"<( c #333414",
+"[( c #323213",
+"}( c #52521F",
+"|( c #626226",
+"1( c #71712C",
+"2( c #818131",
+"3( c #919137",
+"4( c #A2A23E",
+"5( c #AFAF42",
+"6( c #B8B746",
+"7( c #C5C44B",
+"8( c #C8C74C",
+"9( c #C7C64B",
+"0( c #D1D04E",
+"a( c #F9F85D",
+"b( c #353312",
+"c( c #D5D048",
+"d( c #AAA639",
+"e( c #BDB83F",
+"f( c #AAAC43",
+"g( c #26260F",
+"h( c #1B1B0B",
+"i( c #353515",
+"j( c #4B4B1D",
+"k( c #626327",
+"l( c #797A30",
+"m( c #909138",
+"n( c #A7A941",
+"o( c #BBBB49",
+"p( c #DDDD56",
+"q( c #ECED5C",
+"r( c #716F27",
+"s( c #ACA83A",
+"t( c #C8C344",
+"u( c #BBB73F",
+"v( c #908D31",
+"w( c #FEDF4D",
+"x( c #FEE74A",
+"y( c #111006",
+"z( c #F4EE52",
+"A( c #FEEB43",
+"B( c #FEE44D",
+"C( c #C2BD42",
+"D( c #817E2C",
+"E( c #5C5A1F",
+"F( c #53511C",
+"G( c #59571E",
+"H( c #757227",
+"I( c #A29E37",
+"J( c #F4EE53",
+"K( c #FEEB46",
+"L( c #FEE946",
+"M( c #FEE546",
+"N( c #FFE447",
+"O( c #FFE347",
+"P( c #FAF962",
+"Q( c #FDEC47",
+"R( c #FEE348",
+"S( c #FFE048",
+"T( c #FDEE49",
+"U( c #FDEA49",
+"V( c #FEE949",
+"W( c #FDEA51",
+"X( c #FDF04C",
+"Y( c #FDEF4C",
+"Z( c #FBF354",
+"`( c #FCF14F",
+" _ c #FCEF4F",
+"._ c #FDEC4E",
+"+_ c #FDEA4E",
+"@_ c #FEE14B",
+"#_ c #FCF251",
+"$_ c #FDEF50",
+"%_ c #FDED50",
+"&_ c #FDEB4F",
+"*_ c #FDE84E",
+"=_ c #FEE74D",
+"-_ c #FEE54C",
+";_ c #FEE44C",
+">_ c #FCF253",
+",_ c #FCF052",
+"'_ c #FCEC50",
+")_ c #FDE74E",
+"!_ c #FCF055",
+"~_ c #FCED53",
+"{_ c #FAF65C",
+"]_ c #FCEF56",
+"^_ c #FCEA54",
+"/_ c #FDE952",
+"(_ c #FBF65D",
+"__ c #FBF45B",
+":_ c #FCF058",
+"<_ c #FBF35C",
+"[_ c #FBF15A",
+"}_ c #FBEF58",
+"|_ c #FCED56",
+"1_ c #FCEA55",
+"2_ c #FCE853",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . + ",
+" + + + + @ + + + + + + + + + + + + @ ",
+" + + @ + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" + . . + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" + + . + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" + . + + . @ . + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" . + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" + + + . + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # $ % & * = - ; > , ' ) ! + + + + + + ",
+" + + . + + @ + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~ $ { ] ^ / ( _ : < [ } | 1 2 2 2 3 3 3 3 3 3 3 4 4 4 4 ; + + + + + + ",
+" + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~ 5 6 ] 7 8 9 0 a b c d e f g g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 , + + + + + + ",
+" + + + + @ @ + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~ k 6 l m n o p q r s t u v w x w w w w w y y y y y y y z z z g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 A + + + + + + ",
+" + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~ k B l C D E F G H I J K L M N O P P P P P P Q Q Q Q Q Q Q x x w w w w w y y y y y y y z z z g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 4 + + + + + + + ",
+" + . + + + + . + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~ R ~ + + + + + S T U V W X Y Z Z ` . . . . . . .....N N N N N O P P P P P P Q Q Q Q Q Q Q x x w w w w w y y y y y y y z z z g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 4 % + + + + + @ ",
+" + + + + + @ + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~ R +.@.#.$.%.&.*.=.-.;.>.,.'.).!.!.C + + + + + C ~.~.Z Z Z Z Z Z ` . . . . . . .....N N N N N O P P P P P P Q Q Q Q Q Q Q x x w w w w w y y y y y y y z z z g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 4 ; + + + + + + ",
+" + + + . @ + @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + R S @.#.{.].^./.(._.:.<.[.}.|.1.1.1.|.|.|.2.2.2.2.2.2.2.!.!.!.!.!.$.+ + + + + 3.~.~.Z Z Z Z Z Z ` . . . . . . .....N N N N N O P P P P P P Q Q Q Q Q Q Q x x w w w w w y y y y y y y z z z g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 4 A + + + + + + + ",
+" + + + + + @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + R 4.@.5.6.].7.8.9.0.a.b.c.d.e.f.f.f.g.g.g.g.h.h.h.h.i.i.i.i.1.1.1.1.|.|.|.2.2.2.2.2.2.2.!.!.!.!.!.j.+ + + + + ~ ~.~.Z Z Z Z Z Z ` . . . . . . .....N N N N N O P P P P P P Q Q Q Q Q Q Q x x w w w w w y y y y y y y z z z g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 # + + + + + @ ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + R k.l.5.6.m.n.o.p.q.r.s.t.u.v.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.g.g.g.g.h.h.h.h.i.i.i.i.1.1.1.1.|.|.|.2.2.2.2.2.2.2.!.!.!.!.!.*.+ + + + + + z.~.Z Z Z Z Z Z ` . . . . . . .....N N N N N O P P P P P P Q Q Q Q Q Q Q x x w w w w w y y y y y y y z z z g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 = + + + + + + ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + R k.l.A.B.C.n.o.D.E.F.G.H.I.J.K.K.K.K.L.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.g.g.g.g.h.h.h.h.i.i.i.i.1.1.1.1.|.|.|.2.2.2.2.2.2.2.!.!.!.!.!.N.+ + + + + + X ~.Z Z Z Z Z Z ` . . . . . . .....N N N N N O P P P P P P Q Q Q Q Q Q Q x x w w w w w y y y y y y y z z z g g g g h h h h h h h i j j j j 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 ' + + + + + + ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + O.k.l.A.P.C.Q.4.+ + + + + R.S.T.T.T.T.U.V.V.V.V.V.V.W.W.W.W.W.W.W.K.K.K.X.X.X.X.M.M.M.M.M.M.M.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.e.g.g.g.g.g.g.g.i.i.i.i.i.i.i.1.|.|.|.|.|.|.2.2.2.2.2.2.2.!.!.;.+ + + + + + Z.~.~.~.Z Z Z Z ` ` ` . . . . . . .N N N N N N M P P P P P P P Q Q Q Q Q Q Q w w w w w w w y y y y y y y z g g g g g h h h h h h h j j j j 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 `.~ + + + + + + ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + O. +l..+P.++@+#+$+%+&+*+=+-+;+>+,+,+,+,+,+'+'+)++ + + + + !+T.T.T.T.T.U.V.V.V.V.V.V.W.W.W.W.W.W.W.K.K.K.X.X.X.X.M.M.M.M.M.M.M.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.e.g.g.g.g.g.g.g.i.i.i.i.i.i.i.1.|.|.|.|.|.|.2.2.2.2.2.2.2.!.!.~++ + + + + + U ~.~.~.Z Z Z Z ` ` ` . . . . . . .N N N N N N M P P P P P P P Q Q Q Q Q Q Q w w w w w w w y y y y y y y z g g g g g h h h h h h h j j j j 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 `.! + + + + + + ",
+" + + + + + + + + + + + + + + + + + + + + + O.k.{+.+]+^+@+/+(+_+:+<+[+}+|+1+2+3+3+3+3+3+1+4+4+4+4+4+4+4+,+,+,+,+,+,+,+'+'+5++ + + + + R T.T.T.T.T.U.V.V.V.V.V.V.W.W.W.W.W.W.W.K.K.K.X.X.X.X.M.M.M.M.M.M.M.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.e.g.g.g.g.g.g.g.i.i.i.i.i.i.i.1.|.|.|.|.|.|.2.2.2.2.2.2.2.!.!.'.+ + + + + + 6+~.~.~.Z Z Z Z ` ` ` . . . . . . .N N N N N N M P P P P P P P Q Q Q Q Q Q Q w w w w w w w y y y y y y y z g g g g g h h h h h h h j j j j 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 `.' + + + + + + + ",
+" + + + + + + 7+{+.+8+^+9+/+0+a+b+c+d+e+f+g+h+h+h+i+i+i+g+g+g+g+2+2+2+2+2+2+2+3+3+3+3+3+1+4+4+4+4+4+4+4+,+,+,+,+,+,+,+'+'+j++ + + + + + V.T.T.T.T.U.V.V.V.V.V.V.W.W.W.W.W.W.W.K.K.K.X.X.X.X.M.M.M.M.M.M.M.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.e.g.g.g.g.g.g.g.i.i.i.i.i.i.i.1.|.|.|.|.|.|.2.2.2.2.2.2.2.!.!.).3.+ + + + + k+~.~.~.Z Z Z Z ` ` ` . . . . . . .N N N N N N M P P P P P P P Q Q Q Q Q Q Q w w w w w w w y y y y y y y z g g g g g h h h h h h h j j j j 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 `.`.# + + + + + + ",
+" + + + + + + l+m+m+m+n+n+o+o+o+o+o+h+h+h+h+h+h+h+i+i+i+g+g+g+g+2+2+2+2+2+2+2+3+3+3+3+3+1+4+4+4+4+4+4+4+,+,+,+,+,+,+,+'+'+p++ + + + + + q+T.T.T.T.U.V.V.V.V.V.V.W.W.W.W.W.W.W.K.K.K.X.X.X.X.M.M.M.M.M.M.M.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.e.g.g.g.g.g.g.g.i.i.i.i.i.i.i.1.|.|.|.|.|.|.2.2.2.2.2.2.2.!.!.).k++ + + + + S ~.~.~.Z Z Z Z ` ` ` . . . . . . .N N N N N N M P P P P P P P Q Q Q Q Q Q Q w w w w w w w y y y y y y y z g g g g g h h h h h h h j j j j 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 `.`.r++ + + + + + ",
+" + + + + + + s+m+m+m+n+n+o+o+o+o+o+h+h+h+h+h+h+h+i+i+i+g+g+g+g+2+2+2+2+2+2+2+3+3+3+3+3+1+4+4+4+4+4+4+4+,+,+,+,+,+,+,+'+'+t++ + + + + + u+T.T.T.T.U.V.V.V.V.V.V.W.W.W.W.W.W.W.K.K.K.X.X.X.X.M.M.M.M.M.M.M.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.e.g.g.g.g.g.g.g.i.i.i.i.i.i.i.1.|.|.|.|.|.|.2.2.2.2.2.2.2.!.!.).j.+ + + + + ~ ~.~.~.Z Z Z Z ` ` ` . . . . . . .N N N N N N M P P P P P P P Q Q Q Q Q Q Q w w w w w w w y y y y y y y z g g g g g h h h h h h h j j j j 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 `.`.v++ + + + + + + ",
+" + + + + + + w+m+m+m+n+n+o+o+o+o+o+h+h+h+h+h+h+h+i+i+i+g+g+g+g+2+2+2+2+2+2+2+3+3+3+3+3+1+4+4+4+4+4+4+4+,+,+,+,+,+,+,+'+'+q++ + + + + + x+T.T.T.T.U.V.V.V.V.V.V.W.W.W.W.W.W.W.K.K.K.X.X.X.X.M.M.M.M.M.M.M.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.e.g.g.g.g.g.g.g.i.i.i.i.i.i.i.1.|.|.|.|.|.|.2.2.2.2.2.2.2.!.!.).N.+ + + + + + y+~.~.Z Z Z Z ` ` ` . . . . . . .N N N N N N M P P P P P P P Q Q Q Q Q Q Q w w w w w w w y y y y y y y z g g g g g h h h h h h h j j j j 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 `.`.z+! + + + + + + ",
+" + + + + + + A+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+;++ + + + + + D+T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.F++ + + + + + U ~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+' + + + + + + + ",
+" + + + + + + f+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+R + + + + + ++T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.).+ + + + + + N+~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+# + + + + + @ ",
+" + + + + + + O.o+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+A.+ + + + + R.T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.3.+ + + + + D ~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+O++ + + + + + + ",
+" + + + + + + {+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+P++ + + + + R T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.#.+ + + + + 3.~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+`.~ + + + + + @ ",
+" . + + + + + Q+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+R++ + + + + + S+T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.T++ + + + + + ,.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+U++ + + + + + ",
+" @ + + + + + 0+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+V++ + + + + + W+T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.X++ + + + + + U ~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+Y++ + + + + + @ ",
+" + + + + + + Z+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+;++ + + + + + `+T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.).+ + + + + + %.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+ @+ + + + + + ",
+" + + + + + + w+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+7++ + + + + ++T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!..@+ + + + + S ~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M++@+ + + + + + + ",
+" . + + + + + ~ o+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+.++ + + + + R.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.j.+ + + + + + ,.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+% + + + + + + ",
+" @ + + + + + {+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+Q.+ + + + + O.;+T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.@@+ + + + + + U Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+#@+ + + + + + + ",
+" @ + + + + + $@m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+%@+ + + + + + &@T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.'.+ + + + + + %.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+# + + + + + @ ",
+" + + + + + + c+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+S++ + + + + + *@T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.S + + + 3.$.@@Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+> + + + + + + + ",
+" + + + + + + + =@m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+ ++ + + + + -@T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.*.%.U z.;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+z+>@+ + + + + + ",
+" + + + + + + ,@m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C.+ + + + + O.;+T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+'@+ + + + + + + ",
+" + + + + + + )@m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+$++ + + + + + u+T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+!@+ + + + + + + ",
+" + + + + + + ~@m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+{@+ + + + + + `+T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+]@^@+ + + + + + ",
+" + + + + + + ~ /@m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+'+7++ + + + + -@T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+]@(@+ + + + + + . ",
+" + + + + + + _@m+m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+'+]++ + l.P+x+S.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+]@]@:@+ + + + + + ",
+" + + + + + + <@m+m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+'+t+[@V.T.T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+]@]@}@+ + + + + + + ",
+" + + + + + + + |@m+m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+'+'+T.T.T.T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+]@]@z+~ + + + + + + ",
+" @ + + + + + {+1@m+m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+'+'+T.T.T.T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+]@]@]@^@+ + + + + + ",
+" + + + + + + )@1@m+m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+'+'+T.T.T.T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+]@]@]@(@+ + + + + + + ",
+" + + + + + + l+1@m+m+m+m+m+m+m+n+n+n+n+n+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+i+2+2+2+2+2+2+2+3+3+3+3+3+3+B+B+B+4+4+4+4+,+,+,+,+,+,+,+C+C+C+C+C+'+'+T.T.T.T.T.T.T.U.U.U.U.U.U.U.W.W.W.W.W.W.W.K.K.K.K.K.K.K.L.L.M.M.M.M.M.w.w.w.w.w.w.x.x.x.x.x.v.v.y.y.y.y.y.y.y.f.f.f.f.f.f.f.i.i.i.i.i.i.i.1.1.1.1.1.1.1.E+E+2.2.2.2.2.!.!.!.!.!.!.!.;@;@;@;@~.~.Z Z Z Z Z Z Z G+G+G+G+G+G+G+N N N N N N N O O O O O O O H+H+Q Q Q Q Q x x x x x x x I+I+I+I+y y y z z z z z z J+J+J+J+J+J+J+j j j j j j j K+K+K+K+K+K+K+L+L+4 4 4 4 4 M+M+M+M+M+M+M+]@]@]@]@:@+ + + + + @ ",
+" + + + + + + 7+1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.~.~.~.Z Z Z Z Z Z Z G+G+5@5@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+O++ + + + + + ",
+" + + + + + + 7@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.~.X 6+Z Z Z Z Z Z Z G+G+5@5@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+(@+ + + + + + + ",
+" + + + + + + 8@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.9@k++ + W Z Z Z Z Z Z G+G+5@5@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+# + + + + + @ ",
+" + + + + + + O./@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.Z.k++ + + + k+Z Z Z Z Z Z G+G+5@5@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+U++ + + + + + ",
+" @ + + + + + 8+1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.z.~ + + + + + + W Z Z Z Z Z G+G+5@5@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+0@+ + + + + + ",
+" + + + + + + a@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.6++ + + + + + k+Z Z Z Z Z G+G+5@5@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+>@+ + + + + + ",
+" + + + + + + + b@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.z.~ + + + + + + W Z Z Z Z G+G+5@5@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+! + + + + + @ ",
+" @ + + + + + ,@1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.V.D.l.c@U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.T++ + + + + + k+Z Z Z Z G+G+5@5@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+d@+ + + + + + ",
+" + + + + + + 0+1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.S.*@R + + D+U.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.,.~ + + + + + + e@Z Z Z G+G+5@5@5@f@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@g@h@i@j@k@j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+0@+ + + + + + ",
+" + + + + + + w+1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.*@O.+ + + + k.V.U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.j.+ + + + + + .@Z Z Z G+l@m@n@o@p@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y q@r@s@t@y y z u@v@w@x@y@z@A@B@v@6@6@C@D@E@F@G@H@I@J@j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+K@+ + + + + + ",
+" @ + + + + + R 1@1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.R.+ + + + + + D+U.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.,.~ + + + + + + L@Z Z G+M@N@O@P@Q@5@N N N N N N N O O O O P P R@S@Q Q T@U@V@W@X@x x x x x Y@Z@`@ #.#+#@###z $#%#&#*#=#-#;#>#+#,#6@'#=#)#j j !#~#{#j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#~ + + + + + + ",
+" @ + + + + + ^#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.W++ + + + + + k.V.3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.(#_#:#<#[#1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.N++ + + + + + 5 ` Z G+G+5@5@}#|#5@N N N N N N N 1#2#3#4#5#6#`@*#7#8#9#0#a#b#c#d#x x x e#f#g#h#y y i#j#k#l#z z m#*#n#z o#p#*#q#r#*#s#j t#u#v#w#*#x#K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#:@+ + + + + . ",
+" + + + + + + y#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.R.+ + + + + + R+3@3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.z#A#B#C#D#E#F#G#H#I#f.f.f.4@4@J#K#L#M#*#*#*#*#N#1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.O#P#Q#@ + + + + + R#S#T#U#N#V#W#T#5@N N N N N N N X#Y#Z#*#`# $.$+$@$*##$$$Q $$%$&$x x x *$=$-$y y y y ;$*#>$z z ,$*#'$z )$!$~${$g@*#]$^$*#*#A@H@/$($K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#! + + + + + + ",
+" + + + + + + A+/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.W++ + + + + + k._$3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.:$<$[$}$|$1$2$3$4$*#*#*#*#5$6$7$8$2$9$0$a$f.4@4@b$c$d$e$f$g$h$i$j$1.1.1.1.1.|.|.2.2.2.k$l$m$n$o$!.!.!.p$q$r$s$p$q$t$2$9$u$v$+ + + + w$c#x$y$z$A$B$C$5@N N N N N N N O O X#*#D$P P Q E$*#F$Q Q Q G$+#H$x x I$J$y y y y y y .#K$z z L$*#M$z J+6@6@6@N$*#O$P$Q$t#j j R$S$K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#'@+ + + + + + ",
+" + + + + + + 7+/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.R.+ + + + + + T$3@W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.U$V$W$+#c#X$Y$Z$`$ %.%+%*#@%y.y.y.#%$%B$%%f.4@4@2$&%i.i.*%=%-%;%i.1.1.1.1.1.|.|.2.2.>%U#,%'%)%*#!%!.!.~%{%]%*#^%/%(%~._%:%<%[%+ + }%*#|%G+G+5@5@1%2%5@N N N N N N N O O 3%*#4%P P Q 5%*#6%Q Q Q 7%*#X@x x 8%9%y y y y y y m@~$z z z 2%0%z J+6@6@6@a%B$b%j j j j c%*#d%K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#O++ + + + + + ",
+" @ + + + + + Q+/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.W++ + + + + + O.q+W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.e%f%x.v.v.v.v.v.g%*#h%y.y.y.y.f.i%*#j%4@4@k%l%i.m%n%o%p%i.i.1.1.1.1.1.|.|.2.q%*#r%2.2.2.s%t%!.!.!.!.u%*#v%~.~.~.~.w%*#x%+ + y%B$z%e@G+5@5@A%*#B%N N N N N N N O O C%*#D%P P Q E%*#F%Q Q Q G%*#H%x x I%J%K%y y y y L%M%N%z z z O%P%z J+6@6@6@6@Q%9$R%j j S%T%U%j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#r++ + + + + + ",
+" + + + + + + V%/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.A.+ + + + + + W%W.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.X%Y%x.v.v.v.v.v.Z%*#`%y.y.y.y.f. &*#.&4@4@4@4@i.+&*#@&#&J#$&1.1.1.1.1.|.|.2.%&i$&&2.2.*&=&-&!.!.!.!.!.c#;&~.~.~.~.>&*#,&+ + '&t$+ B G+5@5@)&*#!&N N N N N N N O O O c#~&P P Q {&*#]&Q Q Q ^&*#/&x x (&*#_&y y y :&<&c#y@z [&;$}&9#|&1&2&6@6@6@3&4&`@5&6&`@7&8&j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#'@+ + + + + + ",
+" + + + + + + 9&/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.u++ + + + + + + 0&W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.a&+#b&v.v.v.v.v.4$*#c&y.y.y.y.f.f.d&e&4@4@4@4@m%f&e$j$g&h&`@i&1.1.1.1.|.|.2.2.j&k&l&m&n&o&*#p&!.!.!.!.N#q&~.~.~.~.r&*#s&+ + t&*#u&+ H 5@5@v&*#N@N N N N N N N O O O f#w&P P Q x&*#y&Q Q z&A&*#B&d#C&x D&`@D@E&F&H@G&H&z z =#~#z@I&J&%#K&6@6@6@6@6@L&M&N&O&j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#P&+ + + + + + ",
+" + + + + + + Q&/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.m.+ + + + + + A.W.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.R&*#S&v.v.v.v.v.T&*#U&y.y.y.y.f.f.V&W&4@4@X&f&Y&i.i.i.i.Z&`@`&1.1.1.1.|.|.2. *=&.*+*@*#*$**#%*&***!.!.=*-*~.~.~.~.;*+#>*+ + ,**#'*+ k )*5@!**#~*N N N N N N N O {*]*M%^*/*(*_*:**#}&N#<*[*}*%$|*1*2*x w 3*4*5*6*7*8*y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#U++ + + + + + ",
+" + + + + + + k.9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.0*~ + + + + + + F.W.W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.a**#b*v.v.v.v.v.c**#d*y.y.y.y.f.e*f*8$4@g*B$*#h*i.i.i.i.i.2$i*1.1.1.1.|.|.2.l&A@j*2.2.2.k**#l*m*n*!.!.o*p*~.~.~.~.q*B$r*s*t*+ u**#v*w*x*A$y**#=*z*A*N N N N N B*6#C*D*E*F*G*H*8#I*J*Y@$$Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#U++ + + + + + ",
+" @ + + + + + K*9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.o.+ + + + + + 4._$W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.L**#M*v.v.v.v.v.N**#O*y.y.y.y.f.P**#Q*4@R**#S*T*i.i.i.i.U*+#V*1.1.1.1.|.|.2.l&d&W*2.2.X*Y*+#Z*`*q$ =.=.*o%+=@=~.#=$=*#+#`@%=+ + &=*===-=;=>=,='=)=!=N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#^@+ + + + + @ ",
+" + + + + + + ~=9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.{=O.+ + + + + + T$W.W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.]=*#^=v.v.v.v.v./=*#(=y.y.y.y._=:=<=[=4@}=|=1=2=i.i.i.3=Y*4=5=1.1.1.1.|.|.2.6=4=7=8=9=b$0=a=*#i$b=q$c=d=e=f=g=~.h=i=j=Z k=C + + + + + + .@5@5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]#l=+ + + + + + ",
+" + + + + + + V%9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.E.+ + + + + + O.m=W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.n=*#o=v.v.v.v.v.p=*#q=r=s=t=u=v=@&w=f.4@4@x=y=9$z=A=#&*#B=C=1.1.1.1.1.|.|.2.2.D=E=F=G=H=!.I=%*J=!.!.!.~.~.~.~.~.~.~.Z Z Z y++ + + + + + + K=5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+]## + + + + + + ",
+" + + + + + + L=9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.l.+ + + + + + M=W.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.N=O=P=*#Q=R=S=T=U=V=W=*#*#*#*#`@X=Y=Z=f.f.4@4@4@`=$&d$ -.-_#i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.~.~.~.Z Z Z Z F + + + + + + k 5@5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@j j j j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+!@+ + + + + + ",
+" + + + + + + +-9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.@-+ + + + + + + #-W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.$-%-&-*-=---;->-,-'-)-!-~-{-]-@%#%y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.~.~.~.Z Z Z Z ` k + + + + + + ^-5@N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y y z z z z z z z J+6@6@6@6@6@6@/-(-_-j j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+:-+ + + + + + ",
+" + + + + + + |@9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.C.+ + + + + + l.W.W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.~.~.~.Z Z Z Z Z L@+ + + + + + ~ <-N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y y y y t@[-}-|-D@1-2-m@3-4-5-6-6@6@6@7-*#8-P$j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+}@+ + + + + + ",
+" + + + + + + b@9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.{=O.+ + + + + + 9-W.K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.~.~.~.Z Z Z Z Z Z S + + + + + + E N N N N N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y y 0--#%$*#*#*#*#*#*#*#*#*#*#*#*#a-b-6@c-*#*#d-j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+P&+ + + + + . ",
+" + + + + + + e-9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.T$+ + + + + + R f-K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.~.~.~.Z Z Z Z Z Z e@+ + + + + + + L g-h-i-N N N O O O O P P P Q Q Q Q Q Q Q x x x x x x w y y j-2%*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#k-l-m-*#*#n-j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+! + + + + + + ",
+" + + + + + + o-9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.p-4.+ + + + + + W%K.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.!.~.~.~.~.~.~.~.Z Z Z Z Z Z Z k++ + + + + + q-}**#*#r-s-N O O O O P P P Q Q Q Q Q Q Q x x x x x x w t-u-*#*#*#*#*#v-w-x-y-z-A-B-C-D-E-*#*#*#*#+#*#*#F-j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+z+>@+ + + + + @ ",
+" + + + + + + Q&9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@G-+ + + + + + + H-K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.I-J-K-L-M-m$N-O-P-Q-~.~.~.Z Z Z Z Z Z Z R-+ + + + + S-T-*#*#*#*#U-N O O O O P P P Q Q Q Q Q Q Q x x x x x x V-J%*#*#*#*#W-X-z z z z z z z J+6@6@Y-Z-*#*#*#*#*#`-j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z++@+ + + + + + ",
+" + + + + + + ;9*/#/#1@1@1@1@1@m+m+m+m+m+m+m+n+n+n+n+o+o+o+h+h+h+h+h+h+h+i+i+i+i+i+i+2@2+2+2+2+2+2+2+3+3+3+3+3+3+3+B+4+4+4+4+4+4+,+,+,+,+,+,+,+C+C+C+'+'+'+'+T.T.T.T.T.T.T.U.U.U.U.U.3@3@6.+ + + + + + 6.K.K.K.K.K.K.M.M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.v.v.v.v.v.y.y.y.y.y.y.y.f.f.f.f.4@4@4@4@i.i.i.i.i..;+;[#@;#;$;%;&;*;=;-;;;c$A=v%>;t$*#*#*#*#*#*#*#*#*#-%(%~.~.Z Z Z Z Z Z Z G+E + + + + ,;*#*#*#*#*#*#';O O O O P P P Q Q Q Q Q Q Q x x x x x H$);*#*#*#*#!;~;y z z z z z z z J+6@6@6@{;];*#*#*#*#^;j j j K+K+K+3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+M+z+O++ + + + + + ",
+" + + + + + + |@9*9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+h+h+h+h+h+h+h+2@2@2@2@2@2@2@2+2+2+2+2+2+3+3+3+1+1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@(;~ + + + + + + G.W.W.W.K.K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@4@4@4@4@4@_;1=*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#h=~.~.~.~.Z Z Z Z Z Z Y ~ + + :;<;*#*#*#*#*#*#9#[;N O O P P P P P Q Q Q Q Q Q Q x x x };*#*#*#*#|;y y y y z z z z z z z 6@6@6@6@1;2;*#*#*#h@j j j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+z+! + + + + + @ ",
+" + + + + + + 3;9*9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+h+h+h+h+h+h+h+2@2@2@2@2@2@2@2+2+2+2+2+2+3+3+3+1+1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@P++ + + + + + l.W.W.W.K.K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@4@4@4@4@4@=%*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#4;o&5;y=n&*#*#*#*#*#6;~.~.~.~.Z Z Z Z Z Z Z F + + 7;*#*#*#8;N#*#*#*#9;N O O P P P P P Q Q Q Q Q Q Q x x 0;+#*#*#*#I$0-y y y y z z z z z z z 6@6@6@6@6@a;*#*#*#b;j j j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+z+>@+ + + + + + ",
+" @ + + + + + <@9*9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+h+h+h+h+h+h+h+2@2@2@2@2@2@2@2+2+2+2+2+2+3+3+3+1+1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@S+R + + + + + + E.W.W.K.K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@4@4@4@4@4@c;*#*#*#*#*#9$d;=%e;`*1=*#*#*#*#*#f;g;h;2.!.!.i;j;4=*#*#*#k;~.~.~.~.Z Z Z Z Z Z Z )*~ + l;*#*#*#m;n;*#*#*#0#o;O O P P P P P Q Q Q Q Q Q Q x x p;*#*#*#*#q;y y y y y z z z z z z z 6@6@6@6@6@8&+#*#*#r;j j j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+M+M+M++@+ + + + + + ",
+" + + + + + + 7@9*9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+h+h+h+h+h+h+h+2@2@2@2@2@2@2@2+2+2+2+2+2+3+3+3+1+1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@s;+ + + + + + +W.W.K.K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@4@4@4@4@4@t;*#*#*#u;v;(#1.1.|.|.|.c$*#*#*#*#w;2.2.2.!.!.!.!.x;*#*#*#y;~.~.~.~.Z Z Z Z Z Z Z 5@F z;A;*#*#*#B;C;b$*#*#*#D;O O P P P P P Q Q Q Q Q Q Q x E;+#*#*#*#&#y y y y y y z z z z z z z 6@6@6@6@6@6@k#*#*#F;j j j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+r++ + + + + + ",
+" @ + + + + + G;9*9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+h+h+h+h+h+h+h+2@2@2@2@2@2@2@2+2+2+2+2+2+3+3+3+1+1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@p-4.+ + + + + + 9-W.K.K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@4@4@4@4@4@H;*#*#*#I;i.i.1.1.|.|.|.J;*#*#*#*#K;2.2.2.!.!.!.!.L;9$*#*#M;~.~.~.~.Z Z Z Z Z Z Z 5@<-N;*#*#*#O;o P;Q;*#*#*#R;O O P P P P P Q Q Q Q Q Q Q x S;*#*#*#*#T;y y y y y y z z z z z z z 6@6@6@6@6@6@3-*#*#U;j j j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+M+M+M+% + + + + + @ ",
+" + + + + + + R 9*9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+h+h+h+h+h+h+h+2@2@2@2@2@2@2@2+2+2+2+V;W;X;Y;Z;1+1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@3@%@+ + + + + + +_$K.K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@4@4@4@4@4@`;*#*#+# >i.i.1.1.|.|.|..>*#*#*#*#+>2.2.2.!.!.!.!.).o&*#*#@>~.~.~.~.Z Z Z Z Z Z Z 5@5@#>*#*#*#$>N N %>+#*#*#*#&>O P P P P P Q Q Q Q Q Q Q x *>*#*#*#*#=>y y y y y y z z z z z z z 6@6@6@6@6@6@->*#*#;>j j j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+M+M+`.+ + + + + + + ",
+" + + + + + + e-9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+h+h+h+h+>>,>'>)>!>~>{>]>^>/>(>_>:><>*#*#*#*#[>}>1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@3@3@l.+ + + + + + 9-K.K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@4@4@4@4@4@j$*#*#n&i.i.i.1.1.|.|.|.|>*#*#*#*#1>2.2.2.!.!.!.!.).2>*#*#.=~.~.~.~.Z Z Z Z Z Z Z 5@3>`@*#*#*#4>N N N 5>*#*#*#6>O P P P P P Q Q Q Q Q Q Q x #*#*#*#7>w y y y y y y z z z z z z z 6@6@6@6@6@6@8>9>0>a>j j j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+M+M+#@+ + + + + + ",
+" + + + + + + b>9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ;c>d>e>f>g>h>i>j>k>l>m>+#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#n>1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@3@3@x++ + + + + + +X.K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@4@4@4@4@4@o>*#*#*#p>i.i.1.1.|.|.|.q>*#*#*#*#r>2.2.2.!.!.!.!.).W-*#*#s>~.~.~.~.Z Z Z Z Z Z Z 5@t>*#*#*#y=f@N N N )=*#*#*#*#u>P P P P P Q Q Q Q Q Q Q v>+#*#*#*#w>w y y y y y y z z z z z z z 6@6@6@6@6@6@6@j j j j j j 2&x>y>3 3 3 3 3 4 4 4 4 4 4 4 M+M+M+ @+ + + + + + ",
+" . + + + + + ^#9*9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ;z>*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#A>1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@3@3@3@B>+ + + + + + C>K.X.X.X.X.X.M.M.M.M.M.M.w.w.w.w.w.Y.Y.v.v.v.v.v.v.v.y.y.y.y.y.y.y.4@4@D>E>F>G>H>I>*#*#*#J>i.i.1.1.|.|.|.K>*#*#*#*#L>2.2.2.!.!.!.!.).N#*#*#s%~.~.~.~.Z Z Z Z Z Z Z 5@M>*#*#*#N>5@N N N o;=**#*#*#O>P P P P P Q Q Q Q Q Q Q P>*#*#*#*#|*w y y y y y y z z z z z z Q>R>S>T>U>V>W>X>Y>Z>`> ,.,+,`@*#@,#,3 3 3 3 4 4 4 4 4 4 4 M+M+M+>@+ + + + + . ",
+" + + + + + + O.1@9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ;$,*#*#*#*#*#*#*#*#*#*#*#*#*#%,&,*,=,-,;,>,,,',),!,~,{,9$*#*#*#],1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@3@3@3@G-+ + + + + + ^,K.X.X.X.X.X./,(,M.M.M.M.w.w.w.w.w.Y.Y.v._,U&:,<,[,v.y.},|,1,2,3,4,5,6,*#*#*#*#*#7,*#*#*#8,i.i.1.1.|.|.|.9,0,*#*#*#a,2.2.2.!.!.!.!.).b,*#*#c,~.~.~.~.Z Z Z Z Z Z Z d,+#*#*#*#e,5@N N N N f,*#*#*#*#g,P P P P Q Q Q Q Q Q Q h,*#*#*#*#i,w y y y y y y z z z z z j,2%*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#k,3 3 3 3 4 4 4 4 4 4 4 M+M++@+ + + + + + ",
+" + + + + + + l,9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ;m,n,o,p,q,r,s,t,*#*#*#*#u,v,h+2@2@2@2@2@2@2@2+2+2+2+2+w,*#*#*#x,1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@3@3@3@W.B>+ y,&=z,A,B,C,D,E,F,X.G,H,I,J,M.K,V=L,m>M,5,N,O,#&-&*#*#*#*#P,v.y.Q,*#*#*#*#*#*#*#*#*#*#*#*#c;*#*#*#R,i.i.1.1.|.|.|.|.i$*#*#*#S,2.2.2.!.!.!.!.).T,A;9$U,~.~.~.~.Z Z Z Z Z Z Z V,*#*#*#o&W,5@N N N N X,i$*#*#*#Y,P P P P Q Q Q Q Q Q Q P>*#*#*#*#Z,w y y y y y y z z z z z `,*#*#*#*#*#*#*#*#*#*#*#*#*#0,U;A; '.'3 3 3 3 4 4 4 4 4 4 4 M+M+U++ + + + + + ",
+" + + + + + + +'9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+@'#'*#*#*#$'h+h+2@2@2@2@2@2@2@2+2+2+2+2+%'*#*#*#&'1+1+1+4+4+4+4+4+4+4+,+,+,+,+,+>+>+'+'+'+'+'+'+'+T.T.T.T.T.T.T.3@3@3@3@3@3@3@W.*'-=*#*#*#*#*#*#*#*#U#='-'*#*#;'M.>'*#*#*#*#*#*#*#*#*#*#*#*#*#,'v.y.''f%)'n%N#*#*#*#*#!'~'{']'^'9$*#*#/'i.i.1.1.|.|.|.|.7,*#*#*#('2.2.2.!.!.!.!.).)._':'~.~.~.~.~.Z Z Z Z Z Z Z t%*#*#*#!*5@5@N N N N N D**#*#*#+#1#P P P Q Q Q Q Q Q Q v>+#*#*#*#9#w y y y y y y z z z z z <'&$v-7#['}'|'1'*#*#*#*#*#2')#j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+M+# + + + + + @ ",
+" @ + + + + + 3'9*/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+4'*#*#*#5'h+h+2@2@2@2@2@6'7'8'9'2+2+2+2+|=*#*#0'1+1+1+4+4+4+4+4+4+4+,+,+a'b'c'd'e'f'g'h'i'j'k''+T.T.T.T.T.T.T.3@3@3@3@3@3@l'm'*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#n'M.o'f%p'3,q'M#*#*#*#*#e&r's'M*t'v.y.y.y.y.y.u'*#*#*#5;v'4@4@4@i.w'!'x'(#i.i.1.1.|.|.|.|.y'*#*#*#m&2.2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z Z Z Z z'*#*#*#*#A'5@5@N N N N N B'*#*#*#*#C'P P P Q Q Q Q Q Q Q x }**#*#*#2%D'y y y y y y z z z z z z z 6@6@6@6@6@6@E'*#*#*#*#F'j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+A + + + + + + . ",
+" + + + + + + + +-/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+G'*#*#*#H'h+h+2@2@2@2@2@I'*#*#J'2+2+2+2+e'*#*#K'1+1+1+4+4+4+4+4+4+L'M'N'*#*#*#*#*#*#*#*#*#*#*#O'P'T.T.T.T.T.T.3@3@3@3@3@Q'R'*#*#*#S'T'U'V'W'X'Y'Z'-&*#*#*#*#`'M.M.M.w.w.w. )o&*#*#*#4$v.v.v.v.v.y.y.y.y.y..)*#*#*#+)4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.@)*#*#*#y'2.2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z Z Z Z #)*#*#*#*#$)%)&)*)=)-);)>),)*#*#*#*#9$')P P Q Q Q Q Q Q Q x ))*#*#*#*#!)y y y y y y z z z z z z z 6@6@6@6@6@6@~)*#*#*#*#Q$j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+O++ + + + + + ",
+" + + + + + + +'/;/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+e>*#*#*#{)h+h+2@2@2@2@2@])*#*#^)2+2+2+2+e'*#*#/)1+1+1+4+4+4+4+4+()_)*#*#*#*#*#:)M,M,:)*#*#*#*#*#<)T.T.T.T.T.T.3@3@3@3@3@[)*#*#*#})|)W.W.W.K.K.X.X.1)2)*#*#*#3)M.M.M.w.w.w.w.:$*#*#*#4)v.v.v.v.v.y.y.y.y.y.5)*#*#B$6)4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.7)*#*#*#7,2.2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z Z Z k=8)*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#9)P P Q Q Q Q Q Q Q x 3#*#*#*#*#0)y y y y y y z z z z z z z 6@6@6@6@6@6@a)*#*#*#*#b)j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 M+% + + + + + + ",
+" . + + + + + O.Q&/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+c)*#*#*#d)h+h+2@2@2@2@2@e)*#*#f)2+2+2+2+g)*#*#h)1+1+1+4+4+4+4+i)#'*#*#*#j)k)l)>+>+'+'+m)n)*#*#*#*#o)T.T.T.T.T.3@3@3@3@p)q)*#*#2)r)W.W.W.W.K.K.X.X.X.s)9$*#*#t)M.M.M.w.w.w.w.u)2,*#*#*#v)v.v.v.v.y.y.y.y.w)`@*#*#x)4@4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.y)*#*#*#y*2.2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z Z Z z)*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#o@A)P Q Q Q Q Q Q Q x B)*#*#*#*#C)y y y y y y z z z z z z z 6@6@6@6@6@6@D)*#*#*#*#E)j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 Y++ + + + + + + ",
+" + + + + + + + F)/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+G)*#*#*#H)h+h+2@2@2@2@2@I)*#*#J)2+2+2+2+K)*#*#L)1+1+1+4+4+4+4+M)*#*#*#N)O),+,+>+>+'+'+'+'+P)*#*#*#Q)T.T.T.T.T.3@3@3@3@R)*#*#*#S)W.W.W.W.W.K.K.X.X.X.X.T)*#*#U)M.M.M.w.w.w.w.w.V)*#*#*#W)v.v.v.v.y.y.y.y.X)*#*#*#Y)4@4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.Z)*#*#*#`@`)2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z Z Z !**#*#*#*#=$ !.!6#+!D$D*@!f,#!$!%!+#*#*#*#A$P Q Q Q Q Q Q Q x &!=$*#*#*#`@*!y y y y y z z z z z z z 6@6@6@6@6@6@l-*#*#*#*#Y-j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 }@+ + + + + + ",
+" @ + + + + + ,@/;/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+=!*#*#*#j)h+h+2@2@2@2@2@-!*#*#{,2+2+2+2+8'*#*#;!1+1+1+4+4+4+>!*#*#*#*#,!,+,+,+>+>+'+'+'+'+'!*#*#*#)!T.T.T.T.T.3@3@3@3@!!*#*#*#~!W.W.W.W.W.K.K.X.X.X.X.{!*#*#]!M.M.M.w.w.w.w.w.^!/!*#*#*#(!v.v.v.y.y.y.y.A=*#*#_!:!4@4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.h**#*#*#*#<!2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z Z [!2$*#*#*#N>f@5@5@5@N N N N N N N O D$*#*#*#U#}!Q Q Q Q Q Q Q x x |!*#*#*#*#1!y y y y y z z z z z z z 6@6@6@6@6@6@2!*#*#*#*#3!j j K+K+3 3 3 3 3 4 4 4 4 4 4 4 ! + + + + + @ ",
+" + + + + + + + 4!/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+5!*#*#*#6!7!h+2@2@2@2@8!9!*#*#{,2+2+2+2+0!a!b!c!1+1+1+4+4+4+d!*#*#*#*#*#e!,+,+>+>+'+'+'+'+f!+#*#*#`@g!T.T.T.T.3@3@3@3@h!`@*#*#M,i!W.W.W.W.K.K.X.X.X.X.j!*#b$k!M.M.M.w.w.w.w.w.Y.l!*#*#*#e&v.v.v.y.y.y.m!`@*#*#c$4@4@4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.n!*#*#*#*#o!2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z Z p!*#*#*#k-q!5@5@5@5@N N N N r!^-m s!t!9$*#*#*#u!Q Q Q Q Q Q Q x x P>M%*#*#*#9$v!y y y y z z z z z z z 6@6@6@6@6@w!*#*#*#*#*#`-j j K+K+3 3 3 3 3 4 4 4 4 4 4 `.~ + + + + + + ",
+" + + + + + + +'/;/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+x!*#*#*#*#y!z!A!B!C!D!#'*#*#*#E!2+2+2+2+3+3+3+1+1+1+1+4+4+4+F!G!*#*#*#*#H!,+,+>+>+'+'+'+'+I!*#*#*#*#J!T.T.T.T.3@3@3@3@3@K!*#*#*#O,L!M!W.W.K.K.X.X.X.X.N!O!P!M.M.M.M.w.w.w.w.w.Y.^!5$*#*#*#Q!v.v.y.y.y.u=*#*#*#R!4@4@4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.%;*#*#*#*#S!2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z Z T!*#*#*#U!5@5@5@5@5@N ^-m ~ + + + V!O W!*#*#*#8-X!Q Q Q Q Q Q x x x Y!*#*#*#*#U;Z!y y y z z z z z z z 6@6@6@6@`! ~*#*#*#*#*#.~j j K+K+3 3 3 3 3 4 4 4 4 4 4 ' + + + + + + ",
+" + + + + + + R +~/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+@~*#*#*#*#*#*#*#*#*#*#*#*#*#*##~2+2+2+2+3+3+3+1+1+1+1+4+4+4+4+$~S'*#*#9!%~,+,+>+>+'+'+&~*~_!*#*#*#*#=~T.T.T.T.3@3@3@3@3@-~n&*#*#*#*#*#b$;~O,5,I,>~,~'~)~!~M.M.M.M.M.w.w.w.w.w.Y.Y.~~*#*#*#{~v.v.y.y.y.+%*#*#]~^~4@4@4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|./~*#*#*#*#(~2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z _~A@*#*#*#:~5@5@5@5@5@N k + + + + + <~O [~*#*#*#*#}~Q Q Q Q Q Q x x x |~w>*#*#*#*#1~2~y y z z z z z z z 6@6@6@3~I@*#*#*#H@*#*#4~j j K+K+3 3 3 3 3 4 4 4 4 4 4 5~+ + + + + + ",
+" + + + + + + + <@/;1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+6~*#*#*#*#*#7~8~9~_>0~a~*#*#*#b~2+2+2+2+3+3+3+1+1+1+1+4+4+4+4+4+c~d~e~f~,+,+,+>+>+g~M'h~*#*#*#*#*#*#i~T.T.T.T.3@3@3@3@3@3@j~@&*#*#*#*#*#*#*#*#*#*#*#*#*#U#k~l~M.M.M.w.w.w.w.w.Y.Y.m~n~*#*#*#o~v.y.y.p~o@*#*#q~4@4@4@4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.r~*#*#*#*#s~2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z t~*#*#*#*#u~5@5@5@5@5@N n + + + + + ~ P P v~*#*#*#-&X!Q Q Q Q Q x x x x w~9#*#*#*#*#`@x~3*z z z z z z z y~g@p#*#*#*#*#z~7-*#*#2%A~j K+K+3 3 3 3 3 4 4 4 4 4 4 :@+ + + + + + ",
+" + + + + + + !+B~1@1@1@1@1@1@1@m+m+m+m+m+ ; ;o+o+o+o+o+o+o+C~*#*#*#*#D~h+2@2@2@2@2@E~*#*#F~2+2+2+2+3+3+3+1+1+1+1+4+4+4+4+4+4+4+,+,+F!G~H~I~7~*#*#*#*#*#*#*#*#*#J~T.T.T.T.3@3@3@3@3@3@3@K~L~M~*#*#*#*#*#*#*#*#*#*#*#*#*#N~k!M.M.w.w.w.w.w.Y.Y.v.O~*#*#*#P~v.y.y.},*#*#*#Q~4@4@4@4@4@4@4@i.i.i.i.i.i.i.1.1.|.|.|.|.R~*#*#*#*#J;2.2.!.!.!.!.).).~.~.~.~.~.~.~.Z Z Z ('*#*#*#T#5@5@5@5@5@5@N S~+ + + + + + s!P T~*#*#*#*#g#z&Q Q Q Q x x x x w w~U~*#*#*#*#*#*#T%V~W~X~Y~Z~&#T-*#*#*#*#*#W~j .,*#*#*#`~j K+K+3 3 3 3 3 4 4 4 4 4 {+ + + + + + + ",
+" . + + + + + + 8@/#/#/#/#/#/#/#.{.{m+m+m+m+m+n+n+n+n+n+n+n++{*#*#*#*#@{h+#{#{#{#{#{${*#*#*#%{&{&{2+3+*{={-{;{3+3+B+B+B+B+B+B+>{,{'{U#*#*#*#*#*#*#*#n&){!{*#*#*#~{T.T.T.T.{{{{{{{{{{{{V.]{]{]{^{/{'~({_{:{<{[{}{*#*#*#*#*#|{M.M.w.w.w.w.w.w.w.x.b&1{*#*#+#2{y.y.3{*#*#<=4{5{5{5{5{5{5{5{6{i.i.i.i.i.i.1.1.1.1.1.1.7{*#*#*#*#8{2.2.!.!.!.!.!.!.;@;@;@;@~.~.~.Z Z 9{U#*#*#*#0{a{a{a{a{a{5@N L + + + + + + b{c{v~*#*#*#*#*#8)d{F*e{f{g{h{x x x x |~'$8-*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#H@i{6@j j{*#*#k{l{j K+K+K+K+K+3 3 4 4 4 4 4 m{+ + + + + + ",
+" + + + + + + G;/#/#/#/#/#/#/#.{.{m+m+m+m+m+n+n+n+n+n+n+n+n{*#*#*#*#o{h+#{#{#{#{#{#{_!*#*#p{&{&{2+3+q{*#*#r{3+3+B+B+B+B+s{t{U#*#*#*#*#*#*#*#9!u{v{w{C+x{*#*#*#y{T.T.T.T.{{{{{{{{z{A{n&B{]{]{W.W.W.W.K.M.F.o.B>C{D{*#*#*#*#E{M.w.w.w.w.w.w.w.x.x.F{*#*#*#G{y.B#B$*#*#H{y.5{5{5{5{5{5{5{6{i.i.i.i.i.i.1.1.1.1.1.1.I{*#*#*#*#J{2.2.!.!.!.!.!.!.;@;@;@;@~.~.~.Z K{L{*#*#*#*#M{N{O{P{Q{R{z$N N k + S{T{<%U{V{#'*#*#*#*#*#*#*#*#*#*#*#*#W{x x x x x I+X{w-5&*#*#*#*#*#*#*#*#*#*#Y{Z{`{ ]6@6@j /-.]d-S$j j K+K+K+K+K+3 3 4 4 4 4 4 = + + + + + + ",
+" + + + + + + + s+/#/#/#/#/#/#.{.{m+m+m+m+m+n+n+n+n+n+n+n+h++]*#*#*#@]h+#{#{#{#{#{#{g'*#*##]&{&{2+3+$]*#*#9$3+3+B+B+B+B+%]*#*#*#*#+]&]*]=]-]C+C+C+C+C+;]*#*#*#>]T.T.T.k),]~{{{{{']*#*#)]]{]{W.W.W.W.B>+ + + + + B.3,*#*#*#!]M.w.w.w.w.w.w.w.x.x.b&v=*#*#9$~]$%*#*#*#D#y.5{5{5{5{5{5{5{6{i.i.i.i.i.i.1.1.1.1.1.1..>*#*#*#*#1,{]2.!.!.]]%*^]!.;@;@;@/](]_]:]<][]*#*#*#*#*#*#*#*#*#*#*#+#}]N |]+ 1]*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#B$2]x x x x x I+y y y 3]4]5]J&|*z@9%6]7]8]9]0]0]6@6@6@j j j j j j j K+K+K+K+K+3 3 4 4 4 4 4 $ + + + + + @ ",
+" + + + + + + ^#/#/#/#/#/#/#.{.{m+m+m+m+m+n+n+n+n+n+n+n+a]b]*#*#*#c]h+#{#{#{#{#{#{G!*#*#d]&{&{2+3+^)*#*#n&3+3+B+B+B+e]*#*#*#n&f]g],+,+,+,+C+C+C+C+C+i~*#*#*#h]T.T.&~_!*#i]{{{{j]*#*#k]]{]{W.W.W.W.A.+ + + + + 3.l]*#*#*#m]M.w.w.w.w.w.w.w.x.x.x.n]*#*#*#o]a&*#*#p]#%y.5{5{5{5{5{5{5{6{i.i.i.i.i.i.q]r]s]q]t]u]v=*#*#*#*#*#A;v]w].!-&*#M%x];@;@;@y]*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#z]N S~+ A]*#*#*#*#k-9#f{p;B]C]a#D]2#E]_*F]G]x x x x x x I+y y y y y z z z z z z z 0]0]0]0]6@6@6@j j j j j j j K+K+K+K+K+3 3 4 4 4 4 H]+ + + + + + + ",
+" @ + + + + + + I]/#/#/#/#/#.{.{m+m+m+m+m+n+n+n+n+n+n+n+a]J]*#*#*#K]h+#{#{#{#{#{#{L]*#g)M]&{&{2+3+N]*#*#M#3+3+B+B+B+O]*#*#*#P],+,+,+,+,+,+C+C+C+C+C+Q]*#*#*#R]T.T.T.o@*#+]{{{{S]*#*#n&T]]{W.W.W.W.U]+ + + + + + V]*#*#*#O=M.w.w.w.w.w.w.w.x.x.x.b&W]*#*#+#B$*#*#X]y.y.5{5{5{5{5{5{5{6{i.i.i.i.i.Y]]~*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#Z];@;@;@`]*#*#*#*#*#*#*#*#*#c# ^.^);T#+^@^#^X,N L + + $^&=v$%^&^O O O O Q Q Q Q Q Q Q x x x x x x x I+y y y y y z z z z z z z 0]0]0]0]6@6@6@j j j j j j j K+K+K+K+K+3 3 4 4 4 4 ' + + + + + + ",
+" + + + + + + *^/#/#/#/#/#.{.{m+m+m+m+m+n+n+n+n+n+n+n+a]=^*#*#*#-^h+#{#{#{#{#{#{;^>^,^&{&{&{2+3+'^*#*#:)3+3+B+B+B+)^*#*#6!O),+,+,+,+,+,+C+C+C+C+C+!^*#*#*#~^T.T.T.p'*#*#{^{{]^`@*#*#^^]{W.W.W.W.G.+ + + + + /^(^*#*#|=_^M.w.w.w.w.w.w.w.x.x.x.x.:^*#*#*#*#*#*#<^y.y.5{5{5{5{5{5{5{6{i.i.i.i.i.[^*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#U#T,;@;@;@}^S,|^1^2^3^Q{4^5^6^Z a{a{a{a{a{a{5@N N N ~ + + + + + o O O O O Q Q Q Q Q Q Q x x x x x x x I+y y y y y z z z z z z z 0]0]0]0]6@6@6@j j j j j j j K+K+K+K+K+3 3 4 4 4 4 ; + + + + + + ",
+" + + + + + + O.o+/#/#/#/#.{.{m+m+m+m+m+n+n+n+n+n+n+n+a]7^*#*#*#8^h+#{#{#{#{#{#{#{&{&{&{&{&{2+3+9^*#*#+]3+3+B+B+B+F~*#*#9!,+,+,+,+,+,+,+C+C+C+C+0^7~*#*#*#a^T.T.T.b^*#*#c^{{{{@&*#*#*#^^d^W.W.W.X.~ + + + e^f^*#*#*#g^M.M.w.w.w.w.w.w.w.x.x.x.x.h^X=*#*#*#*##&i^y.y.5{5{5{5{5{5{5{6{i.i.i.i.i.j^*#*#*#*#o&1=k^l^m^n^o^p^q^r^s^t^t^u^v^!.;@;@;@;@~.~.~.Z Z Z Z Z Z Z a{a{a{a{a{a{5@N N N 6 + + + + + m O O O O Q Q Q Q Q Q Q x x x x x x x I+y y y y y z z z z z z z 0]0]0]0]6@6@6@j j j j j j j K+K+K+K+K+3 3 4 4 4 4 @+ + + + + . ",
+" + + + + + + + w^/#/#/#/#/#.{m+m+m+m+m+m+n+n+n+n+n+n+n+x^*#*#*#y^h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+A^*#*#*#B^3+3+3+B+C^*#*#n&D^4+,+,+,+,+,+,+,+C+E^F^*#*#*#*#G^T.T.T.H^*#*#I^{{{{B$*#*#*#*#W=J^K^L^M^N^O^,&P^Q^*#*#*#R^S^M.M.M.M.M.w.w.w.w.w.w.w.x.x.T^*#*#*#*#U^y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.h.W^X^W^Y^1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@D + + + + + k N N O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 3 $ + + + + + + ",
+" @ + + + + + 3'm+/#/#/#/#.{m+m+m+m+m+m+n+n+n+n+n+n+n+./*#*#*#+/h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+@/*#*#*#;{3+3+3+B+#/*#*#*#$/%/,+,+,+,+,+,+&/*/=/*#*#_!*#*#*#-/;/>/*#*#*#,/{{'/*#*#*#B$*#*#*#*#*#*#*#*#*#*#*#*#*#)/!/L.M.M.M.M.M.w.w.w.w.w.w.w.x.x.~/*#*#*#+#{/y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@^-+ + + + + + M N O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 3 ~ + + + + + + ",
+" + + + + + + + Z+/#/#/#/#.{m+m+m+m+m+m+n+n+n+n+n+n+n+]/*#*#*#a~^/z^#{#{#{#{#{#{#{&{&{&{&{//(/:)*#*#*#~,3+3+3+B+i)+#*#*#*#_/:/</[/}/|/1/7~*#*#*#2/3/9$*#*#*#*#*#*#*#4/{{{{{^*#*#*#5/6/9$*#*#*#*#*#*#*#*#*#f^7/8/L.L.M.M.M.M.M.w.w.w.w.w.w.w.x.x.9/*#*#*#0/y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@a/+ + + + + + r!N O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 b/+ + + + + + ",
+" + + + + + + ,@/#/#/#/#.{m+m+m+m+m+m+n+n+n+n+n+n+c/l>*#*#*#*#d/e/f/g/h/i/j/k/l/m/n/o/p/Y%*#*#*#*#*#q/3+3+3+B+B+r/*#*#*#*#*#*#*#*#*#*#*#*#*#s/t/C+u/*#*#*#*#*#*#N~v/{{{{{{w/*#x/y/]{z/A/B/C/D/E/F/G/H/I/+ + o.L.L.M.M.J/K/`@W&L/w.w.w.w.w.x.x.)'*#*#*#M*y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@W + + + + + + S~N O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 m{+ + + + + + ",
+" + + + + + + + M//#/#/#.{m+m+m+m+m+m+N/O/P/Q/Q/R/S/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#T/3+3+3+B+B+B+U/K)*#*#*#*#*#*#*#*#*#V/*/C+C+C+W/X/Y/Z/e%`/ (.(+({{{{{{@(#($({{]{W.W.W.W.W.W.4.+ + + + + ^,L.L.M.%(*#*#*#*#+%w.w.w.w.w.x.&(*#*#*#*(v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@~ + + + + + o N O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 ; + + + + + + ",
+" + + + + + + Q+/#/#/#.{m+m+m+m+m+m+=(*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#-(;(3+3+3+B+B+B+B+>(,('()(!(~({(](^(t/C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.6.+ + + + + 4.L.L.M./(*#*#*#*#q'w.w.w.w.w.((+]*#*#-&_(v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@6 + + + + + m N O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 - + + + + + @ ",
+" @ + + + + + O.:(/#/#.{m+m+m+m+m+m+<(*#*#*#*#*#*#*#*#*#*#*#*#9$m>9![(9~}(|(1(2(3(4(5(6(7(8(9(0(a(3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.o.+ + + + + + M.L.M.b(*#*#*#1,c(w.w.w.w.d(6,*#*#`@e(v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@D + + + + + 5 N O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 = + + + + + + ",
+" + + + + + + w^/#/#.{m+m+m+m+m+m+f(g(h(i(j(k(l(m(n(o('>p(q(z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.8/+ + + + + + H.L.M.r(*#*#*#O,s(t(u(v(W)*#*#*#+#~~v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@F + + + + + ~ N O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 = + + + + + . ",
+" + + + + + + w(/#/#.{m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.H.+ + + + + + r.L.M.n'o&*#*#*#*#*#*#*#*#*#*#=$e(v.v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@x(+ + + + + + M O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j 2 3 3 3 3 @+ + + + + . ",
+" @ + + + + + + M//#.{m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.X.+ + + + + + 8.L.M.M. )4,*#*#*#*#*#*#*#y(3$z(x.v.v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@K=+ + + + + + L O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^`^ / /6@6@6@6@6@6@6@j j j j j j A(b/) m{, % + + + + + + ",
+" + + + + + + Q+/#.{m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.4.+ + + + + B(L.M.M.M.M.C(D(E(F(G(H(I(J(x.x.x.v.v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@V + + + + + + r!O O P P P P P Q Q Q Q Q Q Q x x x w w w w y y y y y y y z `^`^`^ /K(L([ < : M(N(O(* & { $ # ~ + + + + + + + + + + + + + ",
+" @ + + + + + O.P(.{m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.B(+ + + + + 4.L.M.M.M.M.M.w.w.w.w.w.w.w.x.x.x.v.v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@W + + + + + + K=O O P P P P P Q Q Q Q Q Q Q x x w Q(d s r b a 9 R(8 7 S($ k ~ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" + + + + + + V%.{m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.n.+ + + + + R L.M.M.M.M.M.w.w.w.w.w.w.w.x.x.x.v.v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^Z^Z^a{5@5@5@5@5@)*+ + + + + + x(P T(s!U(V(&^b{p o n m l 6 5 ~ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" + + + + + + 8+.{m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.W(+ + + + + + M.M.M.M.M.M.w.w.w.w.w.w.w.x.x.x.v.v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.!.!.!.).~.~.~.~.~.~.~.Z Z Z^Z^Z^X(Y(W V a/S~x(^-E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ ",
+" + + + + + + O.o+m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.8/+ + + + + + Z(M.M.M.M.M.w.w.w.w.w.w.w.x.x.x.v.v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.1.1.1.1.|.|.2.2.2.2.2.2.2.!.!.!.).'.~+;.@@N.T N+j.%.k+C .@5 k + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" + + + + + + c+m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.G.+ + + + + + t.M.M.M.M.M.w.w.w.w.w.w.w.x.x.x.v.v.v.v.y.y.y.y.V^V^V^V^5{5{5{5{4@4@4@i.i.i.i.i.i.i.1.|.`( _<.._+_=.*.&.%.$.@_.@+.k ~ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
+" @ + + + + + 9+m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.H-+ + + + + + 8/M.M.M.M.M.w.w.w.w.w.w.w.x.x.x.v.v.v.v.y.y.y.y.V^V^V^V^#_c.$_%_&_+_*_=_-_;_#.@.S R ~ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + . + + . . + ",
+" + + + + + + k.m+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.J.+ + + + + + C>M.M.M.M.M.w.w.w.w.w.w.Z(>_,_b.'_p.9.)_^.B({.@_4.3.~ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ + + + + + ",
+" + + + + + + + s+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{{{{{{{{{{{]{W.W.W.W.W.W.K.K.O.+ + + + + B(q.p.o.W%m.6.B>@.3.R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ . + + @ + + + ",
+" + + + + + + 0+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+C+C+C+C+C+C+'+T.T.T.T.T.+(+({{{{W.f-0&!_G.~_9-T$P+C.^,A.l.4.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + @ + + + ",
+" + + + + + + ^#m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+3+3+B+B+B+B+B+4+4+,+,+,+,+,+,+,+T.S.q+V+&@x+$+`+5+++]+-@B>4.R ~ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + . + ",
+" + + + + + + {+m+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{#{#{#{#{&{&{&{&{2+2+2+3+3+3+3+3+4+{_-+=+V+]_p+^_/_Q.C.-@R.!+ +~ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + . + + . + + ",
+" + + + + + + ~ o+m+m+m+m+n+n+n+n+n+n+n+a]a]h+h+h+h+z^#{#{#{2@1+(___=+:_&+%+*^@+^+P..+l. +O.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + . + + . ",
+" + + + + + + A+m+m+m+m+n+n+g+f+e+<_[_}_|_1_2_Q+8+G;{+3'O.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ + + + + . . + ",
+" + + + + + + 8+^#_@,@!+R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ + @ . + + + ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ . . + + + ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ . + + @ + + + ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . @ + + @ + + ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ + + + + . + ",
+" + + + + + + + + + + + + + + + + + + + @ + @ @ @ + . + ",
+" + + . @ + @ + . @ + + ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/pixmaps/add.xpm b/pixmaps/add.xpm
new file mode 100755
index 0000000..7803c0f
--- /dev/null
+++ b/pixmaps/add.xpm
@@ -0,0 +1,212 @@
+/* XPM */
+static char * add_xpm[] = {
+"20 20 189 2",
+" c None",
+". c #000000",
+"+ c #222221",
+"@ c #28261D",
+"# c #272419",
+"$ c #251F10",
+"% c #0C0A05",
+"& c #020202",
+"* c #CCC9B9",
+"= c #F1DF9F",
+"- c #EACF82",
+"; c #DBAC44",
+"> c #493916",
+", c #CABF95",
+"' c #EED680",
+") c #E4C059",
+"! c #D1940C",
+"~ c #463104",
+"{ c #514F44",
+"] c #A39D83",
+"^ c #E5DDBA",
+"/ c #A37309",
+"( c #6C4C05",
+"_ c #23221D",
+": c #AEA88C",
+"< c #EFDC96",
+"[ c #AC7909",
+"} c #2F2102",
+"| c #151515",
+"1 c #A9A181",
+"2 c #EED888",
+"3 c #E1BE59",
+"4 c #A2730A",
+"5 c #302509",
+"6 c #4B4E4B",
+"7 c #5F655F",
+"8 c #192A19",
+"9 c #AAA17C",
+"0 c #B69E54",
+"a c #574D27",
+"b c #556355",
+"c c #2D3E2D",
+"d c #5F625F",
+"e c #646A64",
+"f c #708270",
+"g c #4F5E4F",
+"h c #142D14",
+"i c #10300A",
+"j c #5E5B45",
+"k c #818F81",
+"l c #96AA96",
+"m c #6A846A",
+"n c #546654",
+"o c #334433",
+"p c #343634",
+"q c #797E79",
+"r c #848F84",
+"s c #557255",
+"t c #1A431A",
+"u c #042304",
+"v c #001C00",
+"w c #135813",
+"x c #859485",
+"y c #ACBEAC",
+"z c #A0B4A0",
+"A c #8BA28B",
+"B c #748C74",
+"C c #657D65",
+"D c #344134",
+"E c #7B7E7B",
+"F c #BFCABF",
+"G c #A9B6A9",
+"H c #687F68",
+"I c #3A5E3A",
+"J c #2F582F",
+"K c #2C572C",
+"L c #426E42",
+"M c #98AF98",
+"N c #94AC94",
+"O c #87A087",
+"P c #779477",
+"Q c #799479",
+"R c #758D75",
+"S c #293B29",
+"T c #696D69",
+"U c #BAC2BA",
+"V c #E5EBE5",
+"W c #E1E9E1",
+"X c #C9D3C9",
+"Y c #9DAD9D",
+"Z c #758E75",
+"` c #5E7B5E",
+" . c #5A7A5A",
+".. c #7F997F",
+"+. c #809A80",
+"@. c #819A81",
+"#. c #869D86",
+"$. c #859A85",
+"%. c #6E866E",
+"&. c #546B54",
+"*. c #2A3A2A",
+"=. c #6C766C",
+"-. c #D0DBD0",
+";. c #E6EDE6",
+">. c #DEE7DE",
+",. c #CDDACD",
+"'. c #B6C6B6",
+"). c #95A995",
+"!. c #648064",
+"~. c #879F87",
+"{. c #90A690",
+"]. c #8EA48E",
+"^. c #7F977F",
+"/. c #6F886F",
+"(. c #647F64",
+"_. c #4D714D",
+":. c #164216",
+"<. c #000C00",
+"[. c #768076",
+"}. c #B0BBB0",
+"|. c #D4DCD4",
+"1. c #D6E0D6",
+"2. c #D0DED0",
+"3. c #C7D4C7",
+"4. c #9CAE9C",
+"5. c #647E64",
+"6. c #8C9F8C",
+"7. c #91A691",
+"8. c #859D85",
+"9. c #779177",
+"0. c #446044",
+"a. c #1B381B",
+"b. c #001700",
+"c. c #4F594E",
+"d. c #668266",
+"e. c #9DAC9D",
+"f. c #B5C3B5",
+"g. c #94A694",
+"h. c #4D6C4D",
+"i. c #698369",
+"j. c #506D50",
+"k. c #778C77",
+"l. c #789078",
+"m. c #4B6F4B",
+"n. c #1E281E",
+"o. c #0A140A",
+"p. c #1E221D",
+"q. c #6C856C",
+"r. c #5A765A",
+"s. c #5E795E",
+"t. c #2B5E2B",
+"u. c #496C49",
+"v. c #748E74",
+"w. c #3A5F3A",
+"x. c #4A654A",
+"y. c #295229",
+"z. c #091709",
+"A. c #001600",
+"B. c #010101",
+"C. c #7B8D79",
+"D. c #829881",
+"E. c #6A866A",
+"F. c #627F62",
+"G. c #6E886E",
+"H. c #839B83",
+"I. c #486A48",
+"J. c #255725",
+"K. c #063306",
+"L. c #042B04",
+"M. c #032F03",
+"N. c #0E320E",
+"O. c #0E100E",
+"P. c #536152",
+"Q. c #6B7C6A",
+"R. c #819781",
+"S. c #8EA78E",
+"T. c #567556",
+"U. c #456945",
+"V. c #214421",
+"W. c #113A11",
+"X. c #262D26",
+"Y. c #455145",
+"Z. c #6B7C6B",
+"`. c #93AA92",
+" + c #4C654C",
+".+ c #2B3E2B",
+"++ c #111B11",
+"@+ c #374036",
+"#+ c #202B20",
+" . + @ # $ % ",
+" & * = - ; > ",
+" . . . , ' ) ! ~ . . ",
+" . { ] ^ ' ) ! / ( . ",
+" _ : < ' ) ! [ } ",
+" | 1 2 3 4 5 ",
+" 6 7 8 9 0 a b c ",
+" d e f g h i j k l m n o ",
+" p q r s t u v w x y z A B C D . ",
+" E F G H I J K L M N O P Q R S ",
+" T U V W X Y Z ` ...+.@.#.$.%.&.*. ",
+" =.-.;.;.>.,.'.).!.~.{.].^./.(._.:.<.",
+" [.}.|.1.2.3.4.5.6.7.8.9.(.0.a.b. ",
+" c.d.e.f.g.h.i.j.k.l.m.n.o.. ",
+" p.q.r.s.t.u.v.w.x.y.z.A.v ",
+" B.C.D.E.F.G.H.I.J.K.L.M.N. ",
+" O.P.Q.R.8.S.T.U.V.W.. ",
+" X.Y.Z.`. +.+++ ",
+" @+#+ ",
+" "};
diff --git a/pixmaps/add_folder.xpm b/pixmaps/add_folder.xpm
new file mode 100755
index 0000000..d48c0b8
--- /dev/null
+++ b/pixmaps/add_folder.xpm
@@ -0,0 +1,157 @@
+/* XPM */
+static char * add_folder_xpm[] = {
+"16 16 138 2",
+" c None",
+". c #1D1D1D",
+"+ c #000000",
+"@ c #FDECCD",
+"# c #FCDB9D",
+"$ c #FCDB9E",
+"% c #FCDA9D",
+"& c #CBAF7E",
+"* c #2B2B2B",
+"= c #FCEBCD",
+"- c #F8D69A",
+"; c #F6D499",
+"> c #F4D297",
+", c #F2D096",
+"' c #685940",
+") c #3B3224",
+"! c #3A3224",
+"~ c #3A3123",
+"{ c #393023",
+"] c #1C1A16",
+"^ c #3A3A3A",
+"/ c #F8E7C9",
+"( c #F1CE94",
+"_ c #EFCC93",
+": c #EDCA92",
+"< c #ECC991",
+"[ c #EAC78F",
+"} c #E9C58E",
+"| c #E7C48D",
+"1 c #E6C28C",
+"2 c #E5C18B",
+"3 c #E4C08A",
+"4 c #C6A778",
+"5 c #FAF1E0",
+"6 c #D0AF71",
+"7 c #BA9B5F",
+"8 c #C4AB76",
+"9 c #C4AA76",
+"0 c #9A8E5D",
+"a c #336429",
+"b c #336329",
+"c c #94885A",
+"d c #46433E",
+"e c #2F2C28",
+"f c #656565",
+"g c #F8EFDE",
+"h c #B29357",
+"i c #FCF1DB",
+"j c #FAE8C8",
+"k c #F9E8C8",
+"l c #F8E2BC",
+"m c #F6DCAF",
+"n c #E7CEA4",
+"o c #37712E",
+"p c #74CF77",
+"q c #44B444",
+"r c #2E6D26",
+"s c #E4CBA2",
+"t c #E0C69A",
+"u c #EFE6D3",
+"v c #C7B491",
+"w c #F1D2A0",
+"x c #EECC93",
+"y c #E5C38C",
+"z c #C4A778",
+"A c #30792F",
+"B c #A2EBAA",
+"C c #68C96B",
+"D c #176B15",
+"E c #C0A275",
+"F c #877353",
+"G c #DFCFB1",
+"H c #D2C2A9",
+"I c #E4C18B",
+"J c #B39E6D",
+"K c #558341",
+"L c #317A31",
+"M c #4CA94D",
+"N c #A3ECAC",
+"O c #74D078",
+"P c #389E37",
+"Q c #2E782D",
+"R c #255D21",
+"S c #D4C2A2",
+"T c #DBCAAF",
+"U c #E1BD88",
+"V c #3A6A32",
+"W c #8DDF93",
+"X c #A2ECAB",
+"Y c #A8EFB1",
+"Z c #A5EDAE",
+"` c #A1EBA9",
+" . c #4EBA4E",
+".. c #286026",
+"+. c #B3A07F",
+"@. c #F3E4CA",
+"#. c #DFBB85",
+"$. c #DEBA85",
+"%. c #DDB984",
+"&. c #316629",
+"*. c #57BF58",
+"=. c #75CF77",
+"-. c #A6EDAD",
+";. c #89DD8F",
+">. c #66C869",
+",. c #32A92F",
+"'. c #246022",
+"). c #3F3F3C",
+"!. c #C0B19A",
+"~. c #EBD8B8",
+"{. c #D7B37D",
+"]. c #D6B27C",
+"^. c #D5B17A",
+"/. c #A79461",
+"(. c #286A1E",
+"_. c #1F8F1C",
+":. c #20651E",
+"<. c #1E1D1D",
+"[. c #F4F0E3",
+"}. c #D7BC8F",
+"|. c #CAA66E",
+"1. c #C8A46C",
+"2. c #C6A26A",
+"3. c #C4A068",
+"4. c #B69560",
+"5. c #A18253",
+"6. c #307A30",
+"7. c #42341F",
+"8. c #878787",
+"9. c #0E0E0E",
+"0. c #010101",
+"a. c #236522",
+"b. c #7BD580",
+"c. c #4BB94B",
+"d. c #196017",
+"e. c #292929",
+"f. c #195F17",
+"g. c #185D16",
+" ",
+" ",
+" . + + + . ",
+"+ @ # $ % & * ",
+". = - ; > , ' ) ! ~ ~ { ] ",
+"^ / ( _ : < [ } | 1 2 3 4 . ",
+"^ 5 6 7 8 8 8 8 9 0 a b c d e f ",
+"* g h i j k l m n o p q r s t ^ ",
+"+ u v w x : < y z A B C D E F f ",
+"* G H 1 2 I J K L M N O P Q R ",
+"^ S T U U U V W X N Y Z X ` ...",
+". +.@.#.$.%.&.*.C =.-.;.C >.,.'.",
+").!.~.{.].^./.(.D P X C _.D :. ",
+"<.[.}.|.1.2.3.4.5.6.X C D 7.8. ",
+" 9.+ + + + + + 0.a.b.c.d.e. ",
+" f.g. "};
diff --git a/pixmaps/all_downcase.xpm b/pixmaps/all_downcase.xpm
new file mode 100755
index 0000000..136d71c
--- /dev/null
+++ b/pixmaps/all_downcase.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * all_downcase_xpm[] = {
+"20 20 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .... .... .... ",
+" . . . ",
+" .... .... .... ",
+" . . . . . . ",
+" ..... ..... ..... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/pixmaps/all_uppercase.xpm b/pixmaps/all_uppercase.xpm
new file mode 100755
index 0000000..61f7192
--- /dev/null
+++ b/pixmaps/all_uppercase.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * all_uppercase_xpm[] = {
+"20 20 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ... ... ... ",
+" .. .. .. ",
+" . .. . .. . .. ",
+" .... .... .... ",
+" . . . . . . ",
+" .. ..... ..... ... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/pixmaps/artist_album.xpm b/pixmaps/artist_album.xpm
new file mode 100755
index 0000000..71b2c1a
--- /dev/null
+++ b/pixmaps/artist_album.xpm
@@ -0,0 +1,329 @@
+/* XPM */
+static char * artist_album_xpm[] = {
+"24 24 302 2",
+" c None",
+". c #52483D",
+"+ c #382C20",
+"@ c #20150C",
+"# c #1D120A",
+"$ c #281A0E",
+"% c #43392D",
+"& c #52483C",
+"* c #433B32",
+"= c #8F7F6E",
+"- c #96816A",
+"; c #58412B",
+"> c #3D2816",
+", c #362312",
+"' c #332212",
+") c #594633",
+"! c #72604C",
+"~ c #4B4033",
+"{ c #16110B",
+"] c #362F27",
+"^ c #84725E",
+"/ c #856F57",
+"( c #89735A",
+"_ c #563F29",
+": c #3E2917",
+"< c #362211",
+"[ c #2C1D10",
+"} c #302215",
+"| c #493624",
+"1 c #533E29",
+"2 c #322518",
+"3 c #080603",
+"4 c #52463A",
+"5 c #7A644C",
+"6 c #89725A",
+"7 c #7D654B",
+"8 c #694F35",
+"9 c #442E1A",
+"0 c #322010",
+"a c #352619",
+"b c #594938",
+"c c #63503D",
+"d c #533F2C",
+"e c #42301F",
+"f c #1D140C",
+"g c #000000",
+"h c #483B2D",
+"i c #775E44",
+"j c #866C51",
+"k c #91795E",
+"l c #573F29",
+"m c #362212",
+"n c #312113",
+"o c #635343",
+"p c #9E8975",
+"q c #A08972",
+"r c #78624D",
+"s c #4F3D2C",
+"t c #312316",
+"u c #433527",
+"v c #392A1C",
+"w c #735A40",
+"x c #816B54",
+"y c #654B32",
+"z c #3A2616",
+"A c #4C3A28",
+"B c #564737",
+"C c #AE9A87",
+"D c #DFC7AD",
+"E c #D0B598",
+"F c #A68B70",
+"G c #76614C",
+"H c #594937",
+"I c #977E65",
+"J c #6A533D",
+"K c #7C6145",
+"L c #654C33",
+"M c #372515",
+"N c #513E2D",
+"O c #423425",
+"P c #816F5D",
+"Q c #D3BCA3",
+"R c #E9CDAF",
+"S c #C3A78A",
+"T c #89735C",
+"U c #5A4A3A",
+"V c #45382B",
+"W c #8D7761",
+"X c #604C38",
+"Y c #61482E",
+"Z c #4D3722",
+"` c #392A1D",
+" . c #312C27",
+".. c #262727",
+"+. c #675E53",
+"@. c #A2907C",
+"#. c #97846F",
+"$. c #63574B",
+"%. c #3F3B37",
+"&. c #3A342E",
+"*. c #3A3024",
+"=. c #89725C",
+"-. c #5D4A38",
+";. c #4A3623",
+">. c #6A533C",
+",. c #8B735A",
+"'. c #5D544A",
+"). c #474645",
+"!. c #766C61",
+"~. c #6B5D4E",
+"{. c #413932",
+"]. c #4C453E",
+"^. c #4E463D",
+"/. c #483E35",
+"(. c #5A504D",
+"_. c #73685F",
+":. c #5D544E",
+"<. c #8D765D",
+"[. c #7E6750",
+"}. c #7E654C",
+"|. c #B69675",
+"1. c #DCBB98",
+"2. c #C3AC97",
+"3. c #B3A494",
+"4. c #C5B3A1",
+"5. c #D6BFA6",
+"6. c #806F5E",
+"7. c #53473C",
+"8. c #6B5E50",
+"9. c #675A4C",
+"0. c #5B4F46",
+"a. c #786B66",
+"b. c #94877A",
+"c. c #8E8176",
+"d. c #AD9F8C",
+"e. c #565243",
+"f. c #A18568",
+"g. c #BF9E7B",
+"h. c #EAC49B",
+"i. c #FAD4AE",
+"j. c #E8CCB0",
+"k. c #F1D8BF",
+"l. c #F6DEC4",
+"m. c #E4CAAE",
+"n. c #877461",
+"o. c #55483B",
+"p. c #67594B",
+"q. c #6B5D50",
+"r. c #695C52",
+"s. c #91817A",
+"t. c #AD9E8E",
+"u. c #BAA998",
+"v. c #B0A58B",
+"w. c #736F55",
+"x. c #524D3C",
+"y. c #B59776",
+"z. c #E7C097",
+"A. c #F5CDA4",
+"B. c #C6AA8D",
+"C. c #BFA890",
+"D. c #D9BFA3",
+"E. c #CBAF91",
+"F. c #87725B",
+"G. c #564738",
+"H. c #544639",
+"I. c #605347",
+"J. c #73675F",
+"K. c #9B8C85",
+"L. c #B2A597",
+"M. c #BEB099",
+"N. c #A6A07D",
+"O. c #A09675",
+"P. c #7C705F",
+"Q. c #6F5C47",
+"R. c #BD9C7A",
+"S. c #E2BA92",
+"T. c #BD9D7C",
+"U. c #8C765E",
+"V. c #927C65",
+"W. c #927960",
+"X. c #77624C",
+"Y. c #584838",
+"Z. c #483B2F",
+"`. c #554A40",
+" + c #7A726C",
+".+ c #9B918B",
+"++ c #AFA69C",
+"@+ c #C1B9A1",
+"#+ c #AFA586",
+"$+ c #C6B59D",
+"%+ c #C5B4A3",
+"&+ c #978E83",
+"*+ c #3D3327",
+"=+ c #7C664F",
+"-+ c #B59574",
+";+ c #D3AD87",
+">+ c #B79574",
+",+ c #6F5B47",
+"'+ c #4D3F30",
+")+ c #46392C",
+"!+ c #42362A",
+"~+ c #42352B",
+"{+ c #554B43",
+"]+ c #736E6B",
+"^+ c #6F6C69",
+"/+ c #807D78",
+"(+ c #CECABC",
+"_+ c #D6C8B7",
+":+ c #E2D7C7",
+"<+ c #E2DFCE",
+"[+ c #87877E",
+"}+ c #3E3327",
+"|+ c #6A5744",
+"1+ c #9E8164",
+"2+ c #B69473",
+"3+ c #A08265",
+"4+ c #8F745A",
+"5+ c #806851",
+"6+ c #63503E",
+"7+ c #483B30",
+"8+ c #504944",
+"9+ c #605C5B",
+"0+ c #2C2828",
+"a+ c #3A3738",
+"b+ c #C9C7C3",
+"c+ c #D8D9CD",
+"d+ c #CFD3C7",
+"e+ c #CACFC4",
+"f+ c #848781",
+"g+ c #241D17",
+"h+ c #4B3E2F",
+"i+ c #6A5642",
+"j+ c #76604A",
+"k+ c #725C47",
+"l+ c #614E3C",
+"m+ c #46382C",
+"n+ c #382F28",
+"o+ c #534D48",
+"p+ c #73716C",
+"q+ c #504E4B",
+"r+ c #636160",
+"s+ c #E3DDDA",
+"t+ c #DBD4CB",
+"u+ c #CECBBC",
+"v+ c #C6C3B0",
+"w+ c #79776A",
+"x+ c #020101",
+"y+ c #100D0A",
+"z+ c #1B1611",
+"A+ c #221B15",
+"B+ c #28211C",
+"C+ c #2D2822",
+"D+ c #3E3931",
+"E+ c #615C4E",
+"F+ c #918D7D",
+"G+ c #D3CFC9",
+"H+ c #E3E2DC",
+"I+ c #F1E1D7",
+"J+ c #EDDACC",
+"K+ c #EAD6D2",
+"L+ c #D6CBC8",
+"M+ c #666363",
+"N+ c #030202",
+"O+ c #040303",
+"P+ c #1D1917",
+"Q+ c #423D34",
+"R+ c #595544",
+"S+ c #6E6852",
+"T+ c #A09482",
+"U+ c #CFCBBD",
+"V+ c #C6C5B5",
+"W+ c #E6D8D3",
+"X+ c #ECD9C9",
+"Y+ c #ECD9C7",
+"Z+ c #A99A93",
+"`+ c #3F3939",
+" @ c #0F0E0C",
+".@ c #2E2C22",
+"+@ c #5D5943",
+"@@ c #8E826B",
+"#@ c #C3B3A4",
+"$@ c #D4D4C5",
+"%@ c #C2C2B1",
+"&@ c #D9D4CC",
+"*@ c #EAD5CF",
+"=@ c #BDAD9F",
+"-@ c #554D47",
+";@ c #181813",
+">@ c #37332A",
+",@ c #7D7063",
+"'@ c #C2B5A8",
+")@ c #CFD4C5",
+"!@ c #BBBDAF",
+"~@ c #B2B0A2",
+"{@ c #938988",
+"]@ c #4E4744",
+"^@ c #544B44",
+"/@ c #58534D",
+"(@ c #62645E",
+"_@ c #575953",
+":@ c #494842",
+"<@ c #302C2D",
+" ",
+" ",
+" . + @ # $ % & ",
+" * = - ; > , ' ) ! ~ { ",
+" ] ^ / ( _ : < [ } | 1 2 3 ",
+" 4 5 6 7 8 9 0 a b c d e f g ",
+" h i j k l m n o p q r s t ",
+" u v w x y z A B C D E F G H ",
+" I J K L M N O P Q R S T U V ",
+" W X Y Z ` ...+.@.#.$.%.&.*. ",
+" =.-.;.>.,.'.).!.@.~.{.].^./.(._.:. ",
+" <.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e. ",
+" f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x. ",
+" y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P. ",
+" Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&+ ",
+" *+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+ ",
+" }+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+ ",
+" g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+ ",
+" x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+ ",
+" N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ ",
+" @.@+@@@#@$@%@&@*@=@-@ ",
+" ;@>@,@'@)@!@~@{@]@ ",
+" ^@/@(@_@:@<@ ",
+" "};
diff --git a/pixmaps/black.xpm b/pixmaps/black.xpm
new file mode 100755
index 0000000..06d4236
--- /dev/null
+++ b/pixmaps/black.xpm
@@ -0,0 +1,11 @@
+/* XPM */
+static char * black_xpm[] = {
+"6 6 2 1",
+" c None",
+". c #000000",
+"......",
+"......",
+"......",
+"......",
+"......",
+"......"};
diff --git a/pixmaps/blackwhite.xpm b/pixmaps/blackwhite.xpm
new file mode 100755
index 0000000..d7ab7a9
--- /dev/null
+++ b/pixmaps/blackwhite.xpm
@@ -0,0 +1,12 @@
+/* XPM */
+static char * blackwhite_xpm[] = {
+"6 6 3 1",
+" c None",
+". c #FFFFFF",
+"+ c #000000",
+".....+",
+"....++",
+"...+++",
+"..++++",
+".+++++",
+"++++++"};
diff --git a/pixmaps/closed_folder.xpm b/pixmaps/closed_folder.xpm
new file mode 100755
index 0000000..ce7dbd2
--- /dev/null
+++ b/pixmaps/closed_folder.xpm
@@ -0,0 +1,107 @@
+/* XPM */
+const char * closed_folder_xpm[] = {
+"16 16 88 1",
+" c None",
+". c #1F1F1E",
+"+ c #000000",
+"@ c #1D1D1D",
+"# c #020201",
+"$ c #FDECCD",
+"% c #FCDB9D",
+"& c #FCDB9E",
+"* c #FCDA9D",
+"= c #CBAF7E",
+"- c #2B2B2B",
+"; c #FCEBCD",
+"> c #F8D69A",
+", c #F6D499",
+"' c #F4D297",
+") c #F2D096",
+"! c #685940",
+"~ c #3B3224",
+"{ c #3A3224",
+"] c #3A3123",
+"^ c #393023",
+"/ c #1C1A16",
+"( c #BA9B5F",
+"_ c #C4AB76",
+": c #C4AA76",
+"< c #C2A875",
+"[ c #C0A673",
+"} c #BDA472",
+"| c #BBA271",
+"1 c #8F774A",
+"2 c #FCF1DB",
+"3 c #FAE8C8",
+"4 c #F9E8C8",
+"5 c #F8E2BC",
+"6 c #F6DCAF",
+"7 c #EAC78F",
+"8 c #E9C68F",
+"9 c #E8C58E",
+"0 c #E7C48D",
+"a c #E6C38C",
+"b c #E5C28C",
+"c c #292929",
+"d c #56482C",
+"e c #EDCA92",
+"f c #ECC991",
+"g c #EBC890",
+"h c #E2BF89",
+"i c #E2BE89",
+"j c #E1BD88",
+"k c #272727",
+"l c #E6C99E",
+"m c #E4C18B",
+"n c #E3C08A",
+"o c #E3BF8A",
+"p c #E0BC87",
+"q c #E0BC86",
+"r c #262626",
+"s c #2F2F2F",
+"t c #E4C393",
+"u c #DDB983",
+"v c #DCB882",
+"w c #DBB781",
+"x c #DAB681",
+"y c #D9B580",
+"z c #D8B47E",
+"A c #D7B37D",
+"B c #333331",
+"C c #D6B27C",
+"D c #D5B17A",
+"E c #D3AF79",
+"F c #D2AE77",
+"G c #D1AD76",
+"H c #CFAB74",
+"I c #CEAA73",
+"J c #CCA871",
+"K c #CAA66F",
+"L c #CAA66E",
+"M c #C8A46C",
+"N c #C6A26A",
+"O c #C4A068",
+"P c #C29E66",
+"Q c #C09C63",
+"R c #BE9A61",
+"S c #BB975E",
+"T c #B9955B",
+"U c #B69259",
+"V c #0E0E0E",
+"W c #828282",
+" ",
+" ",
+" .+++@ ",
+"#$%&*=- ",
+"@;>,')!~{]]^/ ",
+"@(____:<[}|}|@ ",
+"1234567890abbc ",
+"d44efghiijjjjk ",
+"+4lmnoppqiijj+ ",
+"r6liijijhiijjr ",
+"s6tiijjjppuvws ",
+"@6jiijuvwxyzA@ ",
+"BijACDEFGHIJKB ",
+"@uDLMNOPQRSTU@ ",
+" V+++++++++++W ",
+" "};
diff --git a/pixmaps/closed_folder_locked.xpm b/pixmaps/closed_folder_locked.xpm
new file mode 100755
index 0000000..35c1504
--- /dev/null
+++ b/pixmaps/closed_folder_locked.xpm
@@ -0,0 +1,94 @@
+/* XPM */
+const char * closed_folder_locked_xpm[] = {
+"16 16 75 1",
+" c None",
+". c #1F1F1E",
+"+ c #000000",
+"@ c #1D1D1D",
+"# c #020201",
+"$ c #FDECCD",
+"% c #FCDB9D",
+"& c #FCDB9E",
+"* c #FCDA9D",
+"= c #CBAF7E",
+"- c #2B2B2B",
+"; c #FCEBCD",
+"> c #F8D69A",
+", c #F6D499",
+"' c #F4D297",
+") c #F2D096",
+"! c #626262",
+"~ c #C86D6B",
+"{ c #4B4B4B",
+"] c #3A3123",
+"^ c #393023",
+"/ c #1C1A16",
+"( c #BA9B5F",
+"_ c #C4AB76",
+": c #DFA8A7",
+"< c #BBA271",
+"[ c #BDA472",
+"} c #8F774A",
+"| c #FCF1DB",
+"1 c #FAE8C8",
+"2 c #F9E8C8",
+"3 c #F8E2BC",
+"4 c #F6DCAF",
+"5 c #BA6261",
+"6 c #E6C38C",
+"7 c #E5C28C",
+"8 c #292929",
+"9 c #56482C",
+"0 c #EDCA92",
+"a c #ECC991",
+"b c #5B5B5B",
+"c c #4D4D4D",
+"d c #414141",
+"e c #383838",
+"f c #262626",
+"g c #E1BD88",
+"h c #272727",
+"i c #E6C99E",
+"j c #E4C18B",
+"k c #E3C08A",
+"l c #E3BF8A",
+"m c #E0BC87",
+"n c #E0BC86",
+"o c #E2BE89",
+"p c #2F2F2F",
+"q c #E4C393",
+"r c #DCB882",
+"s c #DBB781",
+"t c #D8B47E",
+"u c #D7B37D",
+"v c #333331",
+"w c #D6B27C",
+"x c #D5B17A",
+"y c #CEAA73",
+"z c #CCA871",
+"A c #CAA66F",
+"B c #DDB983",
+"C c #CAA66E",
+"D c #C8A46C",
+"E c #C6A26A",
+"F c #BB975E",
+"G c #B9955B",
+"H c #B69259",
+"I c #0E0E0E",
+"J c #828282",
+" ",
+" ",
+" .+++@ ",
+"#$%&*=- ",
+"@;>,')!~~{]^/ ",
+"@(____!:~{<[<@ ",
+"}|1234!~5{6778 ",
+"9220abcdef+ggh ",
+"+2ijkblmmn+gg+ ",
+"f4ioobcdef+ggf ",
+"p4qooblmmn+rsp ",
+"@4goobcdef+tu@ ",
+"voguwx!~5{yzAv ",
+"@BxCDE!55{FGH@ ",
+" I+++++++++++J ",
+" "};
diff --git a/pixmaps/first_letter_uppercase.xpm b/pixmaps/first_letter_uppercase.xpm
new file mode 100755
index 0000000..4777c54
--- /dev/null
+++ b/pixmaps/first_letter_uppercase.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * first_letter_uppercase_xpm[] = {
+"20 20 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ... ",
+" .. .... ",
+" . .. . ",
+" .... .... ",
+" . . . . ",
+" .. ... ..... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/pixmaps/first_letter_uppercase_word.xpm b/pixmaps/first_letter_uppercase_word.xpm
new file mode 100755
index 0000000..17509ed
--- /dev/null
+++ b/pixmaps/first_letter_uppercase_word.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * first_letter_uppercase_word_xpm[] = {
+"20 20 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ... ... ",
+" .. .. ",
+" . .. . .. ",
+" .... .... ",
+" . . . . ",
+" .. ... .. ... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/pixmaps/forbidden.xpm b/pixmaps/forbidden.xpm
new file mode 100755
index 0000000..71aa020
--- /dev/null
+++ b/pixmaps/forbidden.xpm
@@ -0,0 +1,91 @@
+/* XPM */
+static char * forbidden_xpm[] = {
+"20 20 68 1",
+" c None",
+". c #E79694",
+"+ c #F7A6A5",
+"@ c #EF6163",
+"# c #EF3031",
+"$ c #EF1818",
+"% c #EF0C08",
+"& c #EF2829",
+"* c #E7595A",
+"= c #FFBABD",
+"- c #EF4D4A",
+"; c #F73031",
+"> c #F74D4A",
+", c #F74542",
+"' c #EF1010",
+") c #EF0000",
+"! c #F7A2A5",
+"~ c #FF8A8C",
+"{ c #FF9A9C",
+"] c #EF2C29",
+"^ c #EF0400",
+"/ c #EF3839",
+"( c #FFD7D6",
+"_ c #F79694",
+": c #AD2021",
+"< c #7B3C39",
+"[ c #BD2C08",
+"} c #FFA6A5",
+"| c #FF9E9C",
+"1 c #F72021",
+"2 c #C62421",
+"3 c #BDBABD",
+"4 c #F74139",
+"5 c #F79A9C",
+"6 c #E70808",
+"7 c #F7494A",
+"8 c #F78A8C",
+"9 c #CE3031",
+"0 c #F76563",
+"a c #F75552",
+"b c #EF3439",
+"c c #9C2021",
+"d c #9C2421",
+"e c #B52829",
+"f c #A53839",
+"g c #AD3C39",
+"h c #CE1010",
+"i c #8C3839",
+"j c #EF1410",
+"k c #A53C10",
+"l c #E70400",
+"m c #EF0808",
+"n c #944D4A",
+"o c #C63839",
+"p c #EFAEAD",
+"q c #CE0C08",
+"r c #D63800",
+"s c #D63839",
+"t c #DE5552",
+"u c #AD1C18",
+"v c #CE4142",
+"w c #DE595A",
+"x c #F73C39",
+"y c #BD1818",
+"z c #D60808",
+"A c #843431",
+"B c #843C39",
+"C c #AD5D5A",
+" .. ",
+" +@#$%&*. ",
+" =-;>,'))))* ",
+" !#~{]^))))))* ",
+" =/(_&:< [)))* ",
+" -}|)12 3)))* ",
+" +456)789 3))) ",
+" 0abcd)78[ [))e ",
+" ]4%< f)78g ))hi",
+".j1) f)78k ))li",
+".'m) f)78[ ))li",
+" &))n f)78o p))qi",
+" *))c r)78st))u ",
+" .)))p v)78'))i ",
+" h)))w v)x')y ",
+" h)))wp pw^))z< ",
+" h))))))))))zA ",
+" h))))))))yB ",
+" Cehllqui ",
+" ii "};
diff --git a/pixmaps/freedb.xpm b/pixmaps/freedb.xpm
new file mode 100644
index 0000000..b7aec89
--- /dev/null
+++ b/pixmaps/freedb.xpm
@@ -0,0 +1,86 @@
+/* XPM */
+const char * freedb_xpm[] = {
+"16 16 67 1",
+" c None",
+". c #C8D4E6",
+"+ c #D0DAEA",
+"@ c #829DC6",
+"# c #7492C0",
+"$ c #7392C0",
+"% c #9BB1D1",
+"& c #D7DFEC",
+"* c #EDF1F7",
+"= c #AABDD9",
+"- c #FEFEFE",
+"; c #FFFFFF",
+"> c #F9FAFC",
+", c #456EAB",
+"' c #94ACCE",
+") c #6889BA",
+"! c #4E75AF",
+"~ c #94ABCE",
+"{ c #6284B8",
+"] c #587CB3",
+"^ c #CDD8E8",
+"/ c #B2C3DC",
+"( c #95ACCF",
+"_ c #7694C1",
+": c #849FC7",
+"< c #A4B8D6",
+"[ c #7493C0",
+"} c #C5D2E5",
+"| c #7593C0",
+"1 c #859FC7",
+"2 c #CFD9E9",
+"3 c #99AFD1",
+"4 c #B8C7DE",
+"5 c #9AB0D1",
+"6 c #CDD7E8",
+"7 c #9FB4D3",
+"8 c #B7C6DE",
+"9 c #BECCE1",
+"0 c #7795C1",
+"a c #7F9BC5",
+"b c #7190BE",
+"c c #A2B7D5",
+"d c #BBCAE0",
+"e c #9EB3D3",
+"f c #C0CDE2",
+"g c #B1C2DC",
+"h c #88A2C9",
+"i c #ADBFDA",
+"j c #C6D2E5",
+"k c #EFF2F7",
+"l c #F0F4F8",
+"m c #F2F5F9",
+"n c #EEF2F7",
+"o c #EDF1F6",
+"p c #F0F3F8",
+"q c #EAEFF5",
+"r c #28579E",
+"s c #24549C",
+"t c #29589E",
+"u c #28589E",
+"v c #27569D",
+"w c #DDE5EF",
+"x c #D6DFEC",
+"y c #D6DFED",
+"z c #D4DDEB",
+"A c #D3DCEB",
+"B c #E0E7F1",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .+++++++@#$#$#%",
+"&*=-;;;;>,')!~{]",
+"^/(_:_<[}|12345@",
+"6789[0abc7defghi",
+"jklmnopqarrstuvw",
+" xyyyyyxzAAAAAB ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/pixmaps/gnudb.xpm b/pixmaps/gnudb.xpm
new file mode 100644
index 0000000..23aa537
--- /dev/null
+++ b/pixmaps/gnudb.xpm
@@ -0,0 +1,91 @@
+/* XPM */
+const char * gnudb_xpm[] = {
+"16 16 72 1",
+" c None",
+". c #F9FAFF",
+"+ c #F4F5FF",
+"@ c #F5F6FF",
+"# c #F6F7FF",
+"$ c #F7F8FF",
+"% c #F8F9FF",
+"& c #F2F3FF",
+"* c #F3F4FF",
+"= c #C5CDE4",
+"- c #9EABCC",
+"; c #A3B0D0",
+"> c #DEE2F3",
+", c #7C8EB8",
+"' c #647AAA",
+") c #B2BCD9",
+"! c #7689B5",
+"~ c #7285B2",
+"{ c #C1C9E1",
+"] c #BFC7E0",
+"^ c #A4B0D0",
+"/ c #788BB6",
+"( c #687DAC",
+"_ c #576FA2",
+": c #7B8DB8",
+"< c #B9C2DD",
+"[ c #B1BBD8",
+"} c #C8CFE6",
+"| c #9BA9CB",
+"1 c #ACB7D5",
+"2 c #AEB9D6",
+"3 c #697DAC",
+"4 c #DFE3F4",
+"5 c #BAC3DD",
+"6 c #99A7C9",
+"7 c #E8EBF9",
+"8 c #8E9EC3",
+"9 c #CFD5EA",
+"0 c #8596BE",
+"a c #657AAA",
+"b c #B7C0DC",
+"c c #AFB9D6",
+"d c #B3BDD9",
+"e c #798CB6",
+"f c #8D9CC2",
+"g c #899AC0",
+"h c #7488B4",
+"i c #5D74A6",
+"j c #94A3C6",
+"k c #A8B4D2",
+"l c #D9DEF0",
+"m c #9EABCD",
+"n c #EAECFA",
+"o c #EBEDFB",
+"p c #D8DDEF",
+"q c #DDE1F2",
+"r c #DCE0F2",
+"s c #E6E9F8",
+"t c #DBE0F1",
+"u c #D6DBEE",
+"v c #EFF0FD",
+"w c #F0F1FE",
+"x c #B6BFDB",
+"y c #C3CBE2",
+"z c #F1F3FF",
+"A c #F1F2FF",
+"B c #EBECFF",
+"C c #ECEDFF",
+"D c #EDEEFF",
+"E c #EEEFFF",
+"F c #EFF0FF",
+"G c #F0F1FF",
+"................",
+"+@##$$%%........",
+"&&&&&&&&&**++++@",
+"&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&=-;&&",
+">,')!~{)]^/(-_:<",
+"[}|1[211<345-678",
+"90a1bcd,efgh-ijk",
+"lme4n7opqnprstuv",
+"wxyz&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&",
+"A&&&&&&&&&&&&&&&",
+"BCCDEFFGAA&&&&&&",
+"BBBBBBBBBBCDDEFG",
+"BBBBBBBBBBBBBBBB"};
diff --git a/pixmaps/grab.xpm b/pixmaps/grab.xpm
new file mode 100755
index 0000000..9fd6d6b
--- /dev/null
+++ b/pixmaps/grab.xpm
@@ -0,0 +1,64 @@
+/* XPM */
+static char * grab_xpm[] = {
+"20 20 41 1",
+" c None",
+". c #212121",
+"+ c #EAD4CB",
+"@ c #E3C5BA",
+"# c #DBB4A4",
+"$ c #EEDED7",
+"% c #FAF7F5",
+"& c #F2E5E1",
+"* c #D2AC99",
+"= c #000000",
+"- c #8D9E7C",
+"; c #CDD9C2",
+"> c #DEE6D7",
+", c #DAE2D1",
+"' c #9BAD89",
+") c #B79382",
+"! c #707D63",
+"~ c #B4C6A2",
+"{ c #ACC098",
+"] c #636E57",
+"^ c #AB8A7A",
+"/ c #E4E9DD",
+"( c #657158",
+"_ c #C49F8D",
+": c #C3D1B5",
+"< c #808F70",
+"[ c #4C5442",
+"} c #58634E",
+"| c #E6EBE0",
+"1 c #D4DDC9",
+"2 c #CAD7BE",
+"3 c #90A17F",
+"4 c #5F6A53",
+"5 c #535C49",
+"6 c #E9EDE4",
+"7 c #616D56",
+"8 c #A8BC95",
+"9 c #7C8B6E",
+"0 c #4C5443",
+"a c #B6C2AA",
+"b c #5E6953",
+" ",
+" ",
+" ",
+" ... ",
+" ..+@#.. ",
+" .$%&@*. ",
+" =======+#**. ",
+" =-;>,'=###). ",
+" =!~{]=##*^. ",
+" ==/;{(]=#*_. ",
+" ==/;:{<[}=)).. ",
+" =|12{{34=5=.. ",
+" =6{{{7= == ",
+" =>890= ",
+" =a]= ",
+" =b= ",
+" = ",
+" ",
+" ",
+" "};
diff --git a/pixmaps/invert_selection.xpm b/pixmaps/invert_selection.xpm
new file mode 100755
index 0000000..944f0b4
--- /dev/null
+++ b/pixmaps/invert_selection.xpm
@@ -0,0 +1,28 @@
+/* XPM */
+static char * invert_selection_xpm[] = {
+"20 20 5 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+"@ c #606060",
+"# c #00009C",
+" ",
+" ",
+" ................ ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .##############. ",
+" .##############. ",
+" .@@@@@@@@@@@@@@. ",
+" .##############. ",
+" .##############. ",
+" ................ ",
+" ",
+" "};
diff --git a/pixmaps/mask.xpm b/pixmaps/mask.xpm
new file mode 100755
index 0000000..7e2c170
--- /dev/null
+++ b/pixmaps/mask.xpm
@@ -0,0 +1,123 @@
+/* XPM */
+static char * mask_xpm[] = {
+"20 20 100 2",
+" c None",
+". c #000000",
+"+ c #B892F1",
+"@ c #8559C9",
+"# c #DCCB94",
+"$ c #B48DEE",
+"% c #8B60CD",
+"& c #885CCA",
+"* c #8E7D45",
+"= c #B690F0",
+"- c #B38CED",
+"; c #AF88EA",
+"> c #AB83E7",
+", c #A77FE4",
+"' c #A47BE1",
+") c #A077DE",
+"! c #9C73DB",
+"~ c #996FD8",
+"{ c #956BD5",
+"] c #9166D2",
+"^ c #8E62CF",
+"/ c #8A5ECC",
+"( c #B58EEF",
+"_ c #B18AEC",
+": c #AD86E9",
+"< c #AA82E6",
+"[ c #A67EE3",
+"} c #A27AE0",
+"| c #9F75DD",
+"1 c #9B71DA",
+"2 c #976DD7",
+"3 c #9469D4",
+"4 c #9065D1",
+"5 c #8C61CE",
+"6 c #B791F0",
+"7 c #B38DED",
+"8 c #B089EA",
+"9 c #AC84E8",
+"0 c #A880E5",
+"a c #A57CE2",
+"b c #A178DF",
+"c c #9D74DC",
+"d c #9A70D9",
+"e c #966CD6",
+"f c #9267D3",
+"g c #9165D2",
+"h c #040206",
+"i c #B68FEF",
+"j c #B28BEC",
+"k c #AE87E9",
+"l c #4A356B",
+"m c #A076DE",
+"n c #9C72DB",
+"o c #986ED8",
+"p c #946AD5",
+"q c #4E3871",
+"r c #8356C8",
+"s c #B48EEE",
+"t c #B18AEB",
+"u c #AD85E8",
+"v c #9E75DC",
+"w c #9A71D9",
+"x c #976CD7",
+"y c #9368D4",
+"z c #8154C6",
+"A c #AB84E7",
+"B c #A880E4",
+"C c #9D73DB",
+"D c #8356C7",
+"E c #AE86E9",
+"F c #A37AE0",
+"G c #9F76DD",
+"H c #9B72DA",
+"I c #D4C38D",
+"J c #8559C8",
+"K c #AC85E8",
+"L c #A981E5",
+"M c #9E74DC",
+"N c #9368D3",
+"O c #0E0914",
+"P c #261A38",
+"Q c #875BCA",
+"R c #8457C7",
+"S c #956AD5",
+"T c #8D62CF",
+"U c #865AC9",
+"V c #8255C6",
+"W c #A67DE3",
+"X c #A279E0",
+"Y c #9E75DD",
+"Z c #966BD6",
+"` c #8E63D0",
+" . c #8B5FCD",
+".. c #8558C8",
+"+. c #A178DE",
+"@. c #9D73DC",
+"#. c #986ED7",
+"$. c #9C72DA",
+"%. c #8F64D0",
+"&. c #8457C8",
+" ",
+" ",
+" . . . ",
+". + . . . . @ . # . ",
+". + + $ . . . . . . . . . . % & . # * . ",
+". + = - ; > , ' ) ! ~ { ] ^ / . # * . ",
+". + ( _ : < [ } | 1 2 3 4 5 . # * . ",
+". 6 7 8 9 0 a b c d e f g . # * . h ",
+". i j k l . l m n o p q . # * . r . ",
+". s t u l . l v w x y . # * . z z . ",
+" . ; A B ' ) C ~ p . # * . D z . ",
+" . E < [ F G H x . I * . J z z . ",
+" . K L a b M d e N O P Q R z z . ",
+" . , ' ) ! o S ] T / U V z . ",
+" . W X Y l Z f ` .l ..z z . ",
+" . +.@.#.. . . . @ D z . ",
+" . $.#.Z %.% & &.V . ",
+" . e N %.% & &.. ",
+" . ] ^ / U . ",
+" . . . . "};
diff --git a/pixmaps/musicbrainz.xpm b/pixmaps/musicbrainz.xpm
new file mode 100644
index 0000000..8f805ae
--- /dev/null
+++ b/pixmaps/musicbrainz.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+const char * musicbrainz_xpm[] = {
+"16 16 17 1",
+" c None",
+". c #736CAE",
+"+ c #1A1624",
+"@ c #000000",
+"# c #474C49",
+"$ c #29292E",
+"% c #6E6E77",
+"& c #CBD6CF",
+"* c #FDFFFF",
+"= c #9C9E93",
+"- c #BDBDBC",
+"; c #616259",
+"> c #FFFFFF",
+", c #4D4A64",
+"' c #FFC961",
+") c #AC833E",
+"! c #A1A9A4",
+" .........+@#$. ",
+".......$@+%&*@..",
+".....$@$=****@..",
+"....$#-******@..",
+"....@-***&;@*@..",
+"....@>*=$@+@*@..",
+"....@>+@$,,@*@..",
+"....@>@,+@@@*@..",
+"....@>@@#&***@..",
+"''''@>@$****&@''",
+"')+@@>@+!**=$$''",
+")+%--&@$@@@@$'''",
+"@&****@'''''''''",
+"@&***#+'''''''''",
+")@$#@+''''''''''",
+" '))''''''''''' "};
diff --git a/pixmaps/opened_folder.xpm b/pixmaps/opened_folder.xpm
new file mode 100755
index 0000000..f6f8b54
--- /dev/null
+++ b/pixmaps/opened_folder.xpm
@@ -0,0 +1,145 @@
+/* XPM */
+const char * opened_folder_xpm[] = {
+"16 16 126 2",
+" c None",
+". c #1D1D1D",
+"+ c #000000",
+"@ c #FDECCD",
+"# c #FCDB9D",
+"$ c #FCDB9E",
+"% c #FCDA9D",
+"& c #CBAF7E",
+"* c #2B2B2B",
+"= c #FCEBCD",
+"- c #F8D69A",
+"; c #F6D499",
+"> c #F4D297",
+", c #F2D096",
+"' c #685940",
+") c #3B3224",
+"! c #3A3224",
+"~ c #3A3123",
+"{ c #393023",
+"] c #1C1A16",
+"^ c #3A3A3A",
+"/ c #F8E7C9",
+"( c #F1CE94",
+"_ c #EFCC93",
+": c #EDCA92",
+"< c #ECC991",
+"[ c #EAC78F",
+"} c #E9C58E",
+"| c #E7C48D",
+"1 c #E6C28C",
+"2 c #E5C18B",
+"3 c #E4C08A",
+"4 c #C6A778",
+"5 c #FAF1E0",
+"6 c #D0AF71",
+"7 c #BA9B5F",
+"8 c #C4AB76",
+"9 c #C4AA76",
+"0 c #C2A875",
+"a c #C0A673",
+"b c #BDA472",
+"c c #BBA271",
+"d c #46433E",
+"e c #2F2C28",
+"f c #656565",
+"g c #F8EFDE",
+"h c #B29357",
+"i c #FCF1DB",
+"j c #FAE8C8",
+"k c #F9E8C8",
+"l c #F8E2BC",
+"m c #F6DCAF",
+"n c #F5DBAE",
+"o c #F5DBAD",
+"p c #F4DAAD",
+"q c #F3D9AC",
+"r c #F2D8AB",
+"s c #F2D7AB",
+"t c #E1C79B",
+"u c #EFE6D3",
+"v c #C7B491",
+"w c #F1D2A0",
+"x c #EECC93",
+"y c #EBC890",
+"z c #E9C68F",
+"A c #E8C58E",
+"B c #E6C38C",
+"C c #E5C28C",
+"D c #8F7957",
+"E c #DFCFB1",
+"F c #D2C2A9",
+"G c #E4C18B",
+"H c #E3C08A",
+"I c #E3BF8A",
+"J c #E2BF89",
+"K c #E2BE89",
+"L c #E1BD88",
+"M c #463B2A",
+"N c #D4C2A2",
+"O c #DBCAAF",
+"P c #E0BC87",
+"Q c #E0BC86",
+"R c #DFBB86",
+"S c #DFBB85",
+"T c #DEBA85",
+"U c #0E0E0E",
+"V c #B3A07F",
+"W c #F3E4CA",
+"X c #DDB984",
+"Y c #DDB983",
+"Z c #DCB882",
+"` c #DBB781",
+" . c #DAB681",
+".. c #D9B580",
+"+. c #D8B47E",
+"@. c #D7B37D",
+"#. c #AE9165",
+"$. c #3F3F3C",
+"%. c #C0B19A",
+"&. c #EBD8B8",
+"*. c #D6B27C",
+"=. c #D5B17A",
+"-. c #D3AF79",
+";. c #D2AE77",
+">. c #D1AD76",
+",. c #CFAB74",
+"'. c #CEAA73",
+"). c #CCA871",
+"!. c #CAA66F",
+"~. c #8A724B",
+"{. c #737373",
+"]. c #1E1D1D",
+"^. c #F4F0E3",
+"/. c #D7BC8F",
+"(. c #CAA66E",
+"_. c #C8A46C",
+":. c #C6A26A",
+"<. c #C4A068",
+"[. c #C29E66",
+"}. c #C09C63",
+"|. c #BE9A61",
+"1. c #BB975E",
+"2. c #B9955B",
+"3. c #B69259",
+"4. c #4F3F26",
+"5. c #909090",
+" ",
+" ",
+" . + + + . ",
+"+ @ # $ % & * ",
+". = - ; > , ' ) ! ~ ~ { ] ",
+"^ / ( _ : < [ } | 1 2 3 4 . ",
+"^ 5 6 7 8 8 8 8 9 0 a b c d e f ",
+"* g h i j k l m n o p q r s t ^ ",
+"+ u v w x : < y [ z A | B C D f ",
+"* E F 1 2 G H I J K K L L L M ",
+"^ N O L L L L L P P Q R S T U ",
+". V W S T X Y Z ` ...+.@.#.^ ",
+"$.%.&.@.*.=.-.;.>.,.'.).!.~.{. ",
+"].^./.(._.:.<.[.}.|.1.2.3.4.5. ",
+" U + + + + + + + + + + + * ",
+" "};
diff --git a/pixmaps/parent_folder.xpm b/pixmaps/parent_folder.xpm
new file mode 100755
index 0000000..9073890
--- /dev/null
+++ b/pixmaps/parent_folder.xpm
@@ -0,0 +1,120 @@
+/* XPM */
+static char * parent_folder_xpm[] = {
+"16 16 101 2",
+" c None",
+". c #1D1D1D",
+"+ c #000000",
+"@ c #FDECCD",
+"# c #FCDB9D",
+"$ c #FCDB9E",
+"% c #FCDA9D",
+"& c #CBAF7E",
+"* c #2B2B2B",
+"= c #FCEBCD",
+"- c #F8D69A",
+"; c #F6D499",
+"> c #F4D297",
+", c #F2D096",
+"' c #685940",
+") c #3B3224",
+"! c #3A3224",
+"~ c #3A3123",
+"{ c #393023",
+"] c #1C1A16",
+"^ c #3A3A3A",
+"/ c #F8E7C9",
+"( c #F1CE94",
+"_ c #EFCC93",
+": c #EDCA92",
+"< c #201B13",
+"[ c #EAC78F",
+"} c #E9C58E",
+"| c #E7C48D",
+"1 c #E6C28C",
+"2 c #E5C18B",
+"3 c #E4C08A",
+"4 c #C6A778",
+"5 c #FAF1E0",
+"6 c #D0AF71",
+"7 c #BA9B5F",
+"8 c #2D261C",
+"9 c #C4AB76",
+"0 c #C4AA76",
+"a c #C2A875",
+"b c #C0A673",
+"c c #BDA472",
+"d c #BBA271",
+"e c #46433E",
+"f c #2F2C28",
+"g c #656565",
+"h c #F8EFDE",
+"i c #B29357",
+"j c #F5DBAE",
+"k c #F5DBAD",
+"l c #F4DAAD",
+"m c #F3D9AC",
+"n c #F2D8AB",
+"o c #F2D7AB",
+"p c #E1C79B",
+"q c #EFE6D3",
+"r c #E9C68F",
+"s c #E8C58E",
+"t c #E6C38C",
+"u c #E5C28C",
+"v c #8F7957",
+"w c #DFCFB1",
+"x c #D2C2A9",
+"y c #E3BF8A",
+"z c #E2BF89",
+"A c #E2BE89",
+"B c #E1BD88",
+"C c #463B2A",
+"D c #D4C2A2",
+"E c #DBCAAF",
+"F c #3B3225",
+"G c #DFBB85",
+"H c #DEBA85",
+"I c #0E0E0E",
+"J c #B3A07F",
+"K c #F3E4CA",
+"L c #D7B37D",
+"M c #AE9165",
+"N c #3F3F3C",
+"O c #C0B19A",
+"P c #EBD8B8",
+"Q c #D6B27C",
+"R c #564A36",
+"S c #CAA66F",
+"T c #8A724B",
+"U c #737373",
+"V c #1E1D1D",
+"W c #F4F0E3",
+"X c #D7BC8F",
+"Y c #CAA66E",
+"Z c #C8A46C",
+"` c #C6A26A",
+" . c #C4A068",
+".. c #C29E66",
+"+. c #C09C63",
+"@. c #BE9A61",
+"#. c #BB975E",
+"$. c #B9955B",
+"%. c #B69259",
+"&. c #4F3F26",
+"*. c #909090",
+" ",
+" ",
+" . + + + . ",
+"+ @ # $ % & * ",
+". = - ; > , ' ) ! ~ ~ { ] ",
+"^ / ( _ : < [ } | 1 2 3 4 . ",
+"^ 5 6 7 < < 8 9 0 a b c d e f g ",
+"* h i < < < 8 8 j k l m n o p ^ ",
+"+ q < < < < < 8 8 r s | t u v g ",
+"* w x 1 < < < y z A A B B B C ",
+"^ D E B < < < < 8 8 8 F G H I ",
+". J K G < < < < < < 8 8 L M ^ ",
+"N O P L Q < < < < < < R S T U ",
+"V W X Y Z ` ...+.@.#.$.%.&.*. ",
+" I + + + + + + + + + + + * ",
+" "};
diff --git a/pixmaps/ram_disk.xpm b/pixmaps/ram_disk.xpm
new file mode 100755
index 0000000..02ab694
--- /dev/null
+++ b/pixmaps/ram_disk.xpm
@@ -0,0 +1,29 @@
+/* XPM */
+const char * ram_disk_xpm[] = {
+"16 16 10 1",
+" c None",
+". c #000000",
+"+ c #868686",
+"@ c #999966",
+"# c #A0A0A4",
+"$ c #B2B2B2",
+"% c #C0C0C0",
+"& c #CCCCCC",
+"* c #D7D7D7",
+"= c #F8F8F8",
+" ",
+" ",
+" .. ",
+" .+@#. ",
+" .+@$$$#. ",
+" .+@%%$$$$#. ",
+" .+@&%%$$$$$#+.",
+" +@*&&&%%%$$+@+.",
+"+=**&&&%%%+@+.*.",
+".%++*&&$+@+.*+. ",
+" .+=*#+@+.*+. . ",
+" .+=@+.*+. . ",
+" .%.*+. . ",
+" .+. . ",
+" . ",
+" "};
diff --git a/pixmaps/read_only.xpm b/pixmaps/read_only.xpm
new file mode 100755
index 0000000..38a06ff
--- /dev/null
+++ b/pixmaps/read_only.xpm
@@ -0,0 +1,138 @@
+/* XPM */
+static char * read_only_xpm[] = {
+"19 19 116 2",
+" c None",
+". c #F7A6A5",
+"+ c #EF6163",
+"@ c #EF3031",
+"# c #EF1818",
+"$ c #EF0C08",
+"% c #EF2829",
+"& c #E7595A",
+"* c #E79694",
+"= c #000000",
+"- c #FFBABD",
+"; c #EF4D4A",
+"> c #F73031",
+", c #F74D4A",
+"' c #F74542",
+") c #EF1010",
+"! c #EF0000",
+"~ c #FFCFCE",
+"{ c #F7A2A5",
+"] c #FF8A8C",
+"^ c #FF9A9C",
+"/ c #EF2C29",
+"( c #EF0400",
+"_ c #FF6563",
+": c #EF3839",
+"< c #FFD7D6",
+"[ c #F79694",
+"} c #AD2021",
+"| c #7B3C39",
+"1 c #6B595A",
+"2 c #736163",
+"3 c #944D4A",
+"4 c #DEDFDE",
+"5 c #BDBABD",
+"6 c #FFA6A5",
+"7 c #FF9E9C",
+"8 c #F72021",
+"9 c #C62421",
+"0 c #7B797B",
+"a c #ADAAAD",
+"b c #C6C3C6",
+"c c #FFFF9C",
+"d c #9C3031",
+"e c #F74139",
+"f c #F79A9C",
+"g c #E70808",
+"h c #F7494A",
+"i c #F78A8C",
+"j c #CE3031",
+"k c #F7F794",
+"l c #FFFFFF",
+"m c #FFFF31",
+"n c #8C8A8C",
+"o c #AD5D5A",
+"p c #F76563",
+"q c #F75552",
+"r c #EF3439",
+"s c #9C2021",
+"t c #9C2421",
+"u c #840C08",
+"v c #B5B26B",
+"w c #E7E3E7",
+"x c #F7F731",
+"y c #FFCF00",
+"z c #FF9A00",
+"A c #B52829",
+"B c #B5B6B5",
+"C c #7B7D7B",
+"D c #A53839",
+"E c #AD3C39",
+"F c #B5B221",
+"G c #E7E329",
+"H c #F7C700",
+"I c #CE1010",
+"J c #9C9A9C",
+"K c #EF1410",
+"L c #ADAEAD",
+"M c #CECBCE",
+"N c #630000",
+"O c #A53C10",
+"P c #B58E00",
+"Q c #E78600",
+"R c #E70400",
+"S c #848684",
+"T c #EF0808",
+"U c #BD5552",
+"V c #BD2C08",
+"W c #B5B621",
+"X c #BD5510",
+"Y c #C63839",
+"Z c #EFAEAD",
+"` c #CE0C08",
+" . c #B59200",
+".. c #D63800",
+"+. c #D63839",
+"@. c #DE5552",
+"#. c #AD1C18",
+"$. c #E78A00",
+"%. c #CE4142",
+"&. c #8C3839",
+"*. c #F73C39",
+"=. c #BD1818",
+"-. c #6B6563",
+";. c #CE9A63",
+">. c #FFCF9C",
+",. c #DE595A",
+"'. c #D60808",
+"). c #8C8E8C",
+"!. c #D6D7D6",
+"~. c #101010",
+"{. c #FFCF63",
+"]. c #843431",
+"^. c #BDBEBD",
+"/. c #9C6531",
+"(. c #843C39",
+"_. c #B5B2B5",
+" . + @ # $ % & * = = ",
+" - ; > , ' ) ! ! ! ! = ~ ~ = ",
+" { @ ] ^ / ( ! ! ! ! = ~ ^ ^ _ = ",
+" - : < [ % } | 1 2 3 = 4 5 ^ _ _ = ",
+" ; 6 7 ! 8 9 0 a b = c 5 5 5 d d = ",
+". e f g ! h i j b = k l m 5 n n = o ",
+"p q r s t ! h i u v w x m y z = ! A B ",
+"/ e $ | C D ! h i E F G H z = ! ! I J ",
+"K 8 ! 1 L M N ! h i O P Q = ! ! R S ",
+") T ! 2 b = v U ! h i V = ! ! R 0 ",
+"% ! ! 3 = k 4 W X ! h i Y Z ! ! ` 0 ",
+"& ! ! = c l x G ...! h i +.@.! ! #.S ",
+"* ! = c l m m H $.= %.! h i ) ! ! &.J ",
+" = c l m m y z = %.! *.) ! =.-.B ",
+"= ;.>.m m y z = Z ,.( ! ! '.| ).!.",
+"~.;.>.;.{.z = ! ! ! ! ! ! ! '.].0 ^. ",
+"~.;.;.;./.= ! ! ! ! ! ! ! =.(.0 B ",
+"= /./.= = o A I R R ` #.&.-.).^. ",
+"= = ~. _.J S 0 0 S J B "};
diff --git a/pixmaps/red_lines.xpm b/pixmaps/red_lines.xpm
new file mode 100755
index 0000000..7b536d8
--- /dev/null
+++ b/pixmaps/red_lines.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * red_lines_xpm[] = {
+"20 20 2 1",
+" c None",
+". c #FF0000",
+" ",
+" ",
+" ",
+" .......... ",
+" ................ ",
+" ",
+" ................ ",
+" ",
+" ",
+" ",
+" ............ ",
+" ................ ",
+" ",
+" ...... ",
+" ",
+" .............. ",
+" ",
+" ................ ",
+" ",
+" "};
diff --git a/pixmaps/scan.xpm b/pixmaps/scan.xpm
new file mode 100755
index 0000000..85cac3a
--- /dev/null
+++ b/pixmaps/scan.xpm
@@ -0,0 +1,44 @@
+/* XPM */
+static char * scan_xpm[] = {
+"20 20 21 1",
+" c None",
+". c #008000",
+"+ c #31BC31",
+"@ c #98FF98",
+"# c #BBF7BB",
+"$ c #015101",
+"% c #A7E5A7",
+"& c #C8F7C8",
+"* c #00E800",
+"= c #94D394",
+"- c #00FF00",
+"; c #CEFFCE",
+"> c #66C966",
+", c #D7EFD7",
+"' c #000000",
+") c #F5F5DC",
+"! c #BEBEAB",
+"~ c #D8D8C2",
+"{ c #818174",
+"] c #2BB52B",
+"^ c #1FCD1F",
+" .... ",
+" +.@@. ",
+" ++#$@@. ",
+" ++%#&.*@. ",
+" ++%###&.*@. ",
+" ++=###&&.-*. ",
+" +;>%##&,.--$ ",
+" +;;>%#&,.--.' ",
+" +;;>%#&,.--.' ",
+" +;>=%#&,.--.)' ",
+" ++=%##&,.--.)!' ",
+" +=%###&,.--.))~' ",
+" +%###&,.--.)){' ",
+" +%###&,.--.)'' ",
+" +###&&.--.'' ",
+" +%###&.-*$ ",
+" ]%###.*@. ",
+" +#%^$@@. ",
+" ++ .@@. ",
+" .... "};
diff --git a/pixmaps/select_all.xpm b/pixmaps/select_all.xpm
new file mode 100755
index 0000000..c940778
--- /dev/null
+++ b/pixmaps/select_all.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * select_all_xpm[] = {
+"20 20 4 1",
+" c None",
+". c #000000",
+"+ c #00009C",
+"@ c #606060",
+" ",
+" ",
+" ................ ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" ................ ",
+" ",
+" "};
diff --git a/pixmaps/sequence_track.xpm b/pixmaps/sequence_track.xpm
new file mode 100755
index 0000000..a429450
--- /dev/null
+++ b/pixmaps/sequence_track.xpm
@@ -0,0 +1,10 @@
+/* XPM */
+static char * sequence_track_xpm[] = {
+"5 5 2 1",
+" c None",
+". c #050570",
+" . . ",
+".....",
+" . . ",
+".....",
+" . . "};
diff --git a/pixmaps/sound.xpm b/pixmaps/sound.xpm
new file mode 100755
index 0000000..8ce2285
--- /dev/null
+++ b/pixmaps/sound.xpm
@@ -0,0 +1,226 @@
+/* XPM */
+static char * sound_xpm[] = {
+"20 20 203 2",
+" c None",
+". c #707869",
+"+ c #5E6959",
+"@ c #474F41",
+"# c #34372A",
+"$ c #4F594B",
+"% c #1D201B",
+"& c #333631",
+"* c #1A1B15",
+"= c #747C73",
+"- c #060606",
+"; c #4A4948",
+"> c #737E8F",
+", c #7D8592",
+"' c #9CA2AD",
+") c #ADB4BD",
+"! c #303A31",
+"~ c #787B73",
+"{ c #565E52",
+"] c #3C3F37",
+"^ c #4A515F",
+"/ c #161E2C",
+"( c #131C2C",
+"_ c #293142",
+": c #7F8794",
+"< c #969DA8",
+"[ c #545C50",
+"} c #696B68",
+"| c #2E2D2C",
+"1 c #70776F",
+"2 c #2A2F28",
+"3 c #575B52",
+"4 c #7E838E",
+"5 c #414752",
+"6 c #161B23",
+"7 c #151A22",
+"8 c #172030",
+"9 c #172135",
+"0 c #353E4F",
+"a c #89919D",
+"b c #797F8C",
+"c c #252C22",
+"d c #232620",
+"e c #3C4350",
+"f c #161920",
+"g c #171B22",
+"h c #171E2C",
+"i c #1C283E",
+"j c #1B263C",
+"k c #858D99",
+"l c #737C8D",
+"m c #42463E",
+"n c #010101",
+"o c #020202",
+"p c #535965",
+"q c #10161F",
+"r c #141920",
+"s c #181B21",
+"t c #171D28",
+"u c #1C2538",
+"v c #1B263D",
+"w c #465267",
+"x c #757F92",
+"y c #A7ACA6",
+"z c #434741",
+"A c #676E79",
+"B c #191F2A",
+"C c #12171E",
+"D c #191C22",
+"E c #1C212A",
+"F c #222A3A",
+"G c #1C232F",
+"H c #1D293E",
+"I c #2D3C57",
+"J c #778395",
+"K c #343833",
+"L c #242721",
+"M c #2E3540",
+"N c #10151E",
+"O c #151A21",
+"P c #181B22",
+"Q c #1D232E",
+"R c #3F4D65",
+"S c #50617D",
+"T c #2D3849",
+"U c #1E2B42",
+"V c #3A4A67",
+"W c #7A8598",
+"X c #1C1E1C",
+"Y c #323431",
+"Z c #6C7380",
+"` c #111722",
+" . c #141921",
+".. c #181C22",
+"+. c #1A1F26",
+"@. c #48566B",
+"#. c #6F829E",
+"$. c #596D8D",
+"%. c #333F53",
+"&. c #233149",
+"*. c #4D6282",
+"=. c #677387",
+"-. c #4C4C48",
+";. c #434856",
+">. c #151B2A",
+",. c #1D222D",
+"'. c #1C222C",
+"). c #2B3240",
+"!. c #8594A9",
+"~. c #6B809F",
+"{. c #475979",
+"]. c #283345",
+"^. c #364561",
+"/. c #4E6588",
+"(. c #4A556A",
+"_. c #515B4C",
+":. c #242822",
+"<. c #3D3F38",
+"[. c #2E3749",
+"}. c #232E42",
+"|. c #283347",
+"1. c #253043",
+"2. c #3A4555",
+"3. c #7485A0",
+"4. c #44587B",
+"5. c #2C3951",
+"6. c #3B4451",
+"7. c #526483",
+"8. c #344054",
+"9. c #33415A",
+"0. c #4C5A72",
+"a. c #777C74",
+"b. c #71786D",
+"c. c #3B4238",
+"d. c #7C7C7D",
+"e. c #323E55",
+"f. c #2A374E",
+"g. c #2D3A51",
+"h. c #313F58",
+"i. c #425067",
+"j. c #3C4961",
+"k. c #1F293D",
+"l. c #3D4450",
+"m. c #748398",
+"n. c #546580",
+"o. c #1C232C",
+"p. c #2B374D",
+"q. c #515B6D",
+"r. c #333632",
+"s. c #171B16",
+"t. c #7E8898",
+"u. c #39455B",
+"v. c #324059",
+"w. c #3D4C65",
+"x. c #4D5C76",
+"y. c #738198",
+"z. c #7F8996",
+"A. c #7D8390",
+"B. c #9CA6B5",
+"C. c #71829C",
+"D. c #2E384C",
+"E. c #0C1016",
+"F. c #1D2432",
+"G. c #39465E",
+"H. c #3F4E67",
+"I. c #69768C",
+"J. c #8591A2",
+"K. c #A9B3C1",
+"L. c #C8CFDA",
+"M. c #BFC8D6",
+"N. c #7F8B9E",
+"O. c #39455A",
+"P. c #121825",
+"Q. c #080B12",
+"R. c #474C57",
+"S. c #4A5870",
+"T. c #44526A",
+"U. c #929DAC",
+"V. c #B4BBC6",
+"W. c #BFC5CE",
+"X. c #B8C0CD",
+"Y. c #373F4E",
+"Z. c #33373F",
+"`. c #616F85",
+" + c #5F6D83",
+".+ c #9DA7B6",
+"++ c #BBC1CC",
+"@+ c #ADB5C0",
+"#+ c #666F7E",
+"$+ c #242A34",
+"%+ c #222626",
+"&+ c #777D88",
+"*+ c #3F4859",
+"=+ c #424A59",
+"-+ c #3C424C",
+";+ c #20252C",
+">+ c #171A20",
+",+ c #1D1F23",
+"'+ c #5D5F61",
+")+ c #505256",
+"!+ c #48494B",
+"~+ c #464647",
+"{+ c #363637",
+" . + @ # ",
+" $ % & * ",
+" = - - ; > , ' ) ",
+" ! ~ { ] ^ / ( _ : < ",
+" [ } | 1 2 3 4 5 6 7 8 9 0 a b ",
+" c d e 6 f g h i j k l ",
+" m n o p q r s g t u v w x ",
+"y z A B C g D E F G H I J ",
+"K L M N O P Q R S T U V W ",
+"X Y Z ` ...+.@.#.$.%.&.*.=. ",
+" -. ;.>.,.'.).!.~.{.].^./.(. ",
+" _.:.<. [.}.|.1.2.3.4.5.6.7.8.9.0.",
+" a.b.c. d. e.f.g.h.i.j.k.l.m.n.o.p.q.",
+" r.s. t.u.v.w.x.y.z.A.B.C.D.E.F. ",
+" G.H.I.J.K.L.M.N.O.P.Q.R. ",
+" S.T.U.V.W.X.N.Y.Z. ",
+" `. +.+++@+#+$+%+ ",
+" &+*+=+-+;+>+,+ ",
+" '+)+!+~+{+ ",
+" "};
diff --git a/pixmaps/unselect_all.xpm b/pixmaps/unselect_all.xpm
new file mode 100755
index 0000000..c8db0b1
--- /dev/null
+++ b/pixmaps/unselect_all.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * unselect_all_xpm[] = {
+"20 20 4 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+"@ c #606060",
+" ",
+" ",
+" ................ ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" .@@@@@@@@@@@@@@. ",
+" .++++++++++++++. ",
+" .++++++++++++++. ",
+" ................ ",
+" ",
+" "};
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644
index 0000000..4f4c3d2
--- /dev/null
+++ b/po/ChangeLog
@@ -0,0 +1,10 @@
+2002-05-28 gettextize <bug-gnu-utils@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.10.40.
+
+2001-12-09 gettextize <bug-gnu-utils@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+
+Changes and updates are logged into main ChangeLog file. \ No newline at end of file
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 0000000..4a1e4ff
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,196 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file file be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+localedir = $(datadir)/locale
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+mkinstalldirs = $(SHELL) $(top_srcdir)/$(MKINSTALLDIRS)
+
+CC = @CC@
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+MSGMERGE = msgmerge
+
+DEFS = @DEFS@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+INCLUDES = -I.. -I$(top_srcdir)/intl
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
+$(POFILES) $(GMOFILES)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+.SUFFIXES:
+.SUFFIXES: .c .o .po .pox .gmo .mo
+
+.c.o:
+ $(COMPILE) $<
+
+.po.pox:
+ $(MAKE) $(PACKAGE).pot
+ $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
+ && rm -f $$file && $(GMSGFMT) --statistics -o $$file $<
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in
+ $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
+ --add-comments --keyword=_ --keyword=N_ \
+ --files-from=$(srcdir)/POTFILES.in \
+ && test ! -f $(PACKAGE).po \
+ || ( rm -f $(srcdir)/$(PACKAGE).pot \
+ && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext"; then \
+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+ else \
+ : ; \
+ fi
+install-data-no: all
+install-data-yes: all
+ $(mkinstalldirs) $(DESTDIR)$(datadir)
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkinstalldirs) $(DESTDIR)$$dir; \
+ if test -r $$cat; then \
+ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
+ echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
+ echo "installing $(srcdir)/$$cat as" \
+ "$(DESTDIR)$$dir/$(PACKAGE).mo"; \
+ fi; \
+ done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
+ done
+ if test "$(PACKAGE)" = "gettext"; then \
+ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+ else \
+ : ; \
+ fi
+
+check: all
+
+dvi info tags TAGS ID:
+
+mostlyclean:
+ rm -f core core.* *.pox $(PACKAGE).po *.new.po
+ rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+ $(MAKE) update-po
+ @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ for file in $$dists; do \
+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+ cp -p $$dir/$$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(PACKAGE).pot
+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
+ cd $(srcdir); \
+ catalogs='$(GMOFILES)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
+ echo "$$lang:"; \
+ if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \
+ mv -f $$lang.new.po $$lang.po; \
+ else \
+ echo "msgmerge for $$cat failed!"; \
+ rm -f $$lang.new.po; \
+ fi; \
+ done
+ $(MAKE) update-gmo
+
+update-gmo: Makefile $(GMOFILES)
+ @:
+
+Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
+ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makefile.mingw b/po/Makefile.mingw
new file mode 100644
index 0000000..78cd5d8
--- /dev/null
+++ b/po/Makefile.mingw
@@ -0,0 +1,68 @@
+# Makefile.mingw
+#
+# Description: Makefile to generate mo files
+#
+
+PACKAGE = easytag
+
+##
+## PATHS
+##
+
+srcdir = .
+EASYTAG_TOP = ..
+EASYTAG_INSTALL_DIR = ../win32-install-dir
+LOCALEDIR = $(EASYTAG_INSTALL_DIR)/locale
+
+##
+## TOOLS
+##
+
+GMSGFMT := msgfmt
+
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo
+
+
+##
+## SOURCES, OBJECTS
+##
+
+CATALOGS = $(patsubst %.po,%.gmo,$(wildcard *.po))
+
+##
+## RULES
+##
+
+.po.gmo:
+ rm -f $@ && $(GMSGFMT) --statistics -o $@ $<
+
+
+##
+## TARGETS
+##
+
+
+all: $(CATALOGS)
+
+install: all
+ mkdir -p $(LOCALEDIR)
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
+ dir=$(LOCALEDIR)/$$lang/LC_MESSAGES; \
+ mkdir -p $$dir; \
+ if test -r $$cat; then \
+ cp $$cat $$dir/$(PACKAGE).mo; \
+ echo "installing $$cat as $$dir/$(PACKAGE).mo"; \
+ else \
+ cp $(srcdir)/$$cat $$dir/$(PACKAGE).mo; \
+ echo "installing $(srcdir)/$$cat as" \
+ "$$dir/$(PACKAGE).mo"; \
+ fi; \
+ done
+
+clean:
+ rm -f *.gmo
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100755
index 0000000..6289377
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,29 @@
+src/about.c
+src/ape_tag.c
+src/bar.c
+src/browser.c
+src/cddb.c
+src/charset.c
+src/easytag.c
+src/et_core.c
+src/flac_header.c
+src/flac_tag.c
+src/id3_tag.c
+src/log.c
+src/misc.c
+src/monkeyaudio_header.c
+src/mp4_header.c
+src/mp4_tag.c
+src/mpeg_header.c
+src/msgbox.c
+src/musepack_header.c
+src/ogg_header.c
+src/ogg_tag.c
+src/picture.c
+src/prefs.c
+src/scan.c
+src/setting.c
+src/vcedit.c
+src/wavpack_header.c
+src/wavpack_tag.c
+src/win32/win32dep.c
diff --git a/po/bg.gmo b/po/bg.gmo
new file mode 100644
index 0000000..7813f10
--- /dev/null
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..0136bce
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,5045 @@
+# Bulgarian translation for EasyTAG.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the easytag package.
+# Luchezar P. Petkov <luchezar.petkov@gmail.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: easytag 1.99.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2005-09-09 18:38+0300\n"
+"Last-Translator: Luchezar P. Petkov <>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/about.c:122
+#, fuzzy
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG е програма за преглед и редактиране на етикети за MP3, MP2, "
+"FLAC, Ogg Vorbis, MousePack и Monkey's аудио фалове. ЛеÑниÑÑ‚ и приетен GTK+ "
+"Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð°Ð²ÑÑ‚ поÑтавÑнето на етикети приÑтно под GNU/Liux."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Превод на немÑки)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Превод на руÑки)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Превод на холандÑки)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Превод на шведÑки)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Превод на унгарÑки)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Превод на италианÑки)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Превод на ÑпонÑки)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Превод на украинÑки)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Превод на чешки)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Превод на иÑпанÑки)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Превод на полÑки)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Превод на румънÑки)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Превод на датÑки)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Превод на гръцки)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Превод на португалÑки)"
+
+#: src/about.c:159
+#, fuzzy
+msgid "(Bulgarian translation)"
+msgstr "(Превод на унгарÑки)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(Превод на ÑпонÑки)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Превод на гръцки)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "ОтноÑно..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "ОтноÑно"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "Компилиран на: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "Използват Ñе: GTK+ %d.%d.%d и id3lib %d.%d.%d"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "Поддръжката за FLAC файлове е изключена"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "Поддръжката за FLAC файлове е изключена"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "Поддръжката за FLAC файлове е изключена"
+
+#: src/about.c:296
+#, fuzzy, c-format
+msgid "(MP3 file support disabled)"
+msgstr "Поддръжката за FLAC файлове е изключена"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "Поддръжката за Ogg Vorbis файлове е изключена)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "Поддръжката за FLAC файлове е изключена"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "Поддръжката за FLAC файлове е изключена"
+
+#: src/about.c:317
+#, fuzzy
+msgid "(MP4/AAC file support disabled)"
+msgstr "Поддръжката за FLAC файлове е изключена"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "Поддръжката за FLAC файлове е изключена"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Ðвтор: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "Електронна поща: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Интернет Ñтраница: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "ОпиÑание:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "БлагодарноÑти"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Преводачи:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "ПрограмиÑти:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Промени"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Ðеможе да Ñе зареди файла '%s' (%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "ПоÑви Ñе грешка по време на отварÑнето на файл: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Файл"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Сортиране по етикет"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Сортиране по изпълнител"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "ВъзходÑщо по име на файл"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "ÐизходÑщо по име на файл"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "ВъзходÑщо по дата на Ñъздаване"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "ÐизходÑщо по дата на Ñъздаване"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "ВъзходÑщо по номер на пеÑен"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "ÐизходÑщо по номер на пеÑен"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "ВъзходÑщо по заглавие"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "ÐизходÑщо по заглавие"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "ВъзходÑщо по изпълнител"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "ÐизходÑщо по изпълнител"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "ВъзходÑщо по албум"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "ÐизходÑщо по албум"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "ВъзходÑщо по година"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "ÐизходÑщо по година"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "ВъзходÑщо по жанр"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "ÐизходÑщо по жанр"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "ВъзходÑщо по коментар"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "ВъзходÑщо по коментар"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "ВъзходÑщо по композитор"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "ÐизходÑщо по композитор"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "ВъзходÑщо по оригинален изпълнител"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "ÐизходÑщо по оригинален изпълнител"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "ВъзходÑщо по авторÑко право"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "ÐизходÑщо по авторÑко право"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "ВъзходÑщо по URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "ÐизходÑщо по URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr ""
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr ""
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "ВъзходÑщо по тип на файла"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "ÐизходÑщо по тип на файла"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "ВъзходÑщо по размер на файла"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "ÐизходÑщо по размер на файла"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "ВъзходÑщо по времетраене"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "ÐизходÑщо по времетраене"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr ""
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr ""
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr ""
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr ""
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "ОтворÑне на файл Ñ"
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Избира вÑички файлове"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr ""
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr ""
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Изтрива файл(ове)"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Първи файл"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Първи файл"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "Предишен файл"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Предишен файл"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "Следващ файл"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Следващ файл"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "_ПоÑледен файл"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "ПоÑледен файл"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "С_каниране за файлове"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Сканиране за файлове"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Премахване етикет"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Премахване на етикет"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "_ÐžÑ‚Ð¼ÐµÐ½Ñ Ð¿Ð¾Ñледната промÑна"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "ÐžÑ‚Ð¼ÐµÐ½Ñ Ð¿Ð¾Ñледната промÑна"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr ""
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr ""
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Запазване"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Запазване"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "_Force Saving File(s)"
+msgstr "С_каниране за файлове"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "Force Saving File(s)"
+msgstr "Сканиране за файлове"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "ÐžÑ‚Ð¼ÐµÐ½Ñ Ð¿Ð¾Ñледните промени"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "ВъзтановÑва поÑледните промени"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Спиране на програмата"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Спиране на програмата"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Браузър"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Отива в _домашната папка"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Отива в домашната папка"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Отива в _папка по подразбиране"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Отива в папка по подразбиране"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Запазва Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿ÑŠÑ‚ по подразбиране"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Запазва текущиÑÑ‚ път по подразбиране"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Преглед като ÑпиÑък | Преглед като изпълнител-албум"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Преименува папка"
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Презарежда папка"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Разглежда папка Ñ ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Сгъване на дървото"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Презареждане на дървото"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "С_кенер"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Попълва етикет(и) ..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Попълва етикет(и) ..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Преименува файловете и папката"
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Преименува файловете и папката"
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Полета на процеÑи"
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Полета на процеÑи"
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Разни"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "ТърÑене за _файлове ..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "ТърÑене за файлове ..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "ТърÑене в база данни на диÑк ... "
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB Ñ‚ÑŠÑ€Ñене ..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Зарежда имена на файлове от текÑÑ‚ ..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "ЗапиÑва playlist ..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "ÐžÑ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° за музика"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_ÐаÑтройки"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ ..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ ..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Помощ"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_ОтноÑно"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Спира текущата операциÑ"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_Файлови операции"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "ТърÑене за файлове в CDDB ..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Преглежда _поддиректории"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+#, fuzzy
+msgid "Show Hidden Directories"
+msgstr "ТърÑи Ñкрити директории"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Показва като ÑпиÑък / Показва по ипълнител и албум"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr ""
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Готов да започне..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Ðов път по подразбиране за избраните файлове"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Потвърждение..."
+
+#: src/browser.c:713
+#, fuzzy
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"ÐÑкои файлове бÑха променени, но бÑха запиÑани...\n"
+"Желаете ли да ги запазите, преди да Ñмените директориÑта?Грешка..."
+
+#: src/browser.c:827
+#, fuzzy, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+" ИзбраниÑÑ‚ път за 'път по подразбиране за файловете' е невалиден!\n"
+"'%s'\n"
+"(%s) "
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+#, fuzzy
+msgid "Error..."
+msgstr "Грешка в размера..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "Ðлбуми"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Грешка: ТърÑене за %s, неможе Ñе намери възел %s в дървото."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Изпълнител"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "Ðлбуми"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "Файлове"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Ðлбум"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Едно ниво по-нагоре"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Задайте папка за Ñ‚ÑŠÑ€Ñене"
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Изглет като ÑпиÑък"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Изпълнител и албум"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Преименува директориÑ"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Преименува папката '%si' на : "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Използва маÑка :"
+
+#: src/browser.c:3217
+#, fuzzy
+msgid "If activated, it will use masks to rename directory."
+msgstr "Ðко е активирано, ще Ñе Ñъздаде плейлиÑÑ‚ в предходната директориÑ"
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Ðевалидна маÑка на Ñкенера"
+
+#. Preview label
+#: src/browser.c:3262
+#, fuzzy
+msgid "Rename directory preview..."
+msgstr "Преглед на Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "ТрÑбва да въведете име на папката!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Ðе може да Ñе конвертира '%s' в кодовата таблица на името на файла.МолÑ, "
+"ползвайте друго име"
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе преименува папката \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Папката преименувана"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Програма за Ñтартиране :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Въведете програма за Ñтартиране.Ð¢Ñ Ñ‰Ðµ получи текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÐ°Ñ‚Ð¾ "
+"параметър"
+
+#: src/browser.c:3774
+#, fuzzy
+msgid "Open File with ..."
+msgstr "ОтварÑне на файл Ñ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Въведете програма за Ñтартиране.Ð¢Ñ Ñ‰Ðµ получи текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÐ°Ñ‚Ð¾ "
+"параметър"
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "ТрÑбва да въведете име на програма!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr ""
+
+#: src/browser.c:4019 src/misc.c:943
+#, fuzzy, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Ðеможе да Ñе изпълни %s (%s)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Ðеможе да Ñе повдигне друг процеÑ!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Изпълнена команда : %s %s"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Изпълнител / Ðлбум"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "КатегориÑ"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Име на пеÑен"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "ПродължителноÑÑ‚"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "ТърÑене в база данни на диÑк"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Ðвтоматично Ñ‚ÑŠÑ€Ñене"
+
+#: src/cddb.c:284
+#, fuzzy
+msgid "Request CD database :"
+msgstr "ЗаÑвка към FreeDB база данни"
+
+#: src/cddb.c:294
+#, fuzzy
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Ðвтоматична заÑвка към CDDB база данни използвайки избраните файлове "
+"(поÑледователноÑтта е важна!) за да Ñе генерира CddbIDСпира Ñ‚ÑŠÑ€Ñенето"
+
+#: src/cddb.c:304 src/cddb.c:414
+#, fuzzy
+msgid "Stop the search ..."
+msgstr " СПИРРтърÑенето... "
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"След като активирате тази опциÑ, Ñлед зареждането на полетата, текущиÑÑ‚ "
+"избранÑкенер ще бъде активиран(прозорецът на Ñкернера Ñ‚Ñ€Ñбва да бъде "
+"отворен)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Ръчно Ñ‚ÑŠÑ€Ñене"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Думи :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Въведете думи за Ñ‚ÑŠÑ€Ñене (отделени Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð» или плюÑ)"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "ТърÑене в:"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Ð’Ñички полета"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Друго"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Ð’Ñички категории"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "БлуÑ"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "КлаÑичеÑка музика"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Кънтри"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Фолк"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Джаз"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Друго"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr ""
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Реге"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Рок"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "ПеÑен от филм"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr ""
+"Включени Ñа: фънк, Ñоул джаз, рап, поп, индуÑтриÑлна музика, метъл и Ñ‚.н."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "Филми, Шоута"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "Други, които не Ñе впиÑват в горните категории"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr "Категории"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Резултати :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "ТърÑене :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Въведете думите за да Ñ‚ÑŠÑ€Ñите в ÑпиÑъка по-долу"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "ТърÑи Ñледващ"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "ТърÑи предишен"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "Покажи Ñамо червените линии / Покажи вÑички линии"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr ""
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Завърта ÑелекциÑта "
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Избира вÑички линии"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "ПоÑтави поÑока :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Ð’Ñичко"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Име на файл"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Заглавие"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Година"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "ПеÑен No."
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "ПеÑни"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Жанр"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Изпълни текущиÑÑ‚ Ñкенер за вÑеки файл"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Когато активирате тази опциÑ, алгоритъмът на Ливенщайн (DLM: Demarau-"
+"Libenshtein Matric) ще бъде използван за да ÑравнÑва CDDB заглавиÑта ÑÑŠÑ "
+"вÑеки фаайл във текущата папка, и да избира най-подходÑщите. Това ще бъде "
+"ползвано когато избирате ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð°ÑƒÐ´Ð¾ файл, или прилагате cddb "
+"резултатите, вмеÑто да използвате directly the position order.\" "
+"##########################"
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Зареди избраните линии или вÑички линии(ако нÑма избрани такива)"
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Готов за Ñ‚ÑŠÑ€Ñене..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Ðлбум: '%s', Изпълнител: '%s', ПродължителноÑÑ‚: '%s', година: '%s', жанр: '%"
+"s', ID: '%s"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Завърта ÑелекциÑта"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Сортиране по номер на пеÑен"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Сортиране по име на пеÑен"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr ""
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr ""
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr ""
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Свързване към хоÑÑ‚ '%s' порт '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Ðеможе да Ñе Ñвърже Ñ Ñ…Ð¾ÑÑ‚ '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Свързан Ñ Ñ…Ð¾ÑÑ‚ '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ (%s) ..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Грешка при премахването на ID3v1 етикет на '%s' (%s)\n"
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Ðе може да Ñе Ñъздаде или отвори файл '%s' (%s)\n"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Ðеможе да Ñе зареди файла '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Изпращане на заÑвка..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Ðеможе да Ñе изпрати заÑвка (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+#, fuzzy
+msgid "The server returned a wrong answer!"
+msgstr "Сървърът върна грешен отговор! (%s)"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Сървърът върна грешен отговор! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "СъжалÑвам, уеб базираното Ñ‚ÑŠÑ€Ñене в момента не работи!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Ðамерени %d ÑъответÑтващи албума"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ (%s) ..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ (%s) ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "ÐÑма избрани файлове!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d файлове Ñа избрани!"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Готов за Ñ‚ÑŠÑ€Ñене..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Изпращане на заÑвка (Cddbld: %s #пеÑни: %d, дължина на диÑка: %d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Ðамерени %d ÑъответÑтващи албума"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Ðеможе да Ñе зареди файла '%s' (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Зареждане на ÑпиÑъка Ñ Ð¿ÐµÑните от албума ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° етикет от CDDB"
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "ÐрабÑко (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "ÐрабÑко (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "ÐрабÑко (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "БалтийÑко (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "БалтийÑко (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "БалтийÑко (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "КелтÑко (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "ЦентралноeвропейÑко (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "ЦентралноeвропейÑко (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "ЦентралноeвропейÑко (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "ОпроÑтен китайÑки (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "ОпроÑтен китайÑкки (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Традиционен китайÑки (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Традиционен китайÑки (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Кирилица (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Кирилица (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Кирилица (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Кирилица (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Кирилица (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Кирилица/РуÑÐ¸Ñ (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Кирилица/Украйна (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "ÐнглийÑко (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Гръцко (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Гръцко (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Иврит (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Иврит (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "ЯпонÑко (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "ЯпонÑко (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "ЯпонÑко (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "КорейÑко (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Южна Европа (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "ТурÑко (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "ТурÑко (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "ТурÑко (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Уникод (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "ВиетнамÑко (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "ВиетнамÑко (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Иврит, визуално (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "ЗападноевропейÑко (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "ЗападноевропейÑко (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Ðово западноевропейÑко (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "ЗападноевропейÑко (Windows-1252)"
+
+#: src/charset.c:542
+#, fuzzy, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"UTF-8 низът '%s' неможе да бъде конвертиран в кодирането на името на файла\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+#, fuzzy
+msgid "Invalid UTF-8"
+msgstr "Уникод (UTF-8)"
+
+#: src/charset.c:641
+#, fuzzy, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"UTF-8 низът '%s' неможе да бъде конвертиран в кодирането на името на файла\n"
+
+#: src/charset.c:705
+#, fuzzy, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"UTF-8 низът '%s' неможе да бъде конвертиран в кодирането на името на файла\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Стартиране на EasyTAG %s (Pld: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Използва Ñе id3lib верÑÐ¸Ñ %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Използва Ñе id3lib верÑÐ¸Ñ %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Преименуване на файл '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr ""
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s от %s (компилирано %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Интернет Ñтраница: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Браузър"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Файл"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Файл Ñамо за четене"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Връзката към файла не ÑъщеÑтвува"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Слой ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr ""
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "ЧеÑтота:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Ðачин:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Размер:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Време:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Етикет"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Общи"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Заглавие:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð²Ð° заглавие"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Изпълнител"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð·Ð¸ изпълнител"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Ðлбум:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на този албум"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "ДиÑк"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð·Ð¸ номер на диÑк"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Година"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð°Ð·Ð¸ година"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "ПеÑен #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚ÐµÐ·Ð¸ номера на пеÑните"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Жанр"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð·Ð¸ жанр"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Коментар"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð·Ð¸ коментар"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Композитор:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð·Ð¸ композитор"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Ориг. изпълнител:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð·Ð¸ ориг. изпълнител"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "ÐвторÑки права:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚ÐµÐ·Ð¸ авторÑки права"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð·Ð¸ URL"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Кодирано от:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr ""
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Картинки"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Картинки:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Можете да използвате Ñ Ð¿Ñ€Ð¾Ð²Ð»Ð°Ñ‡Ð²Ð°Ð½Ðµ и пуÑкане за добавÑне на картинка"
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚ÐµÐ·Ð¸ картинки"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Премахва избраните картинки, оÑвен вÑички."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr ""
+"ДобавÑне на картинки към етикета(провлачване и пуÑкане Ñъщо е налично)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Запазва избраните картинки на хард диÑка."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "ПоÑÑ‚Ð°Ð²Ñ Ð°ÐºÑеÑоари на избраните картинки."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ Ð¸Ð¼Ðµ на пеÑен '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Премахва име на пеÑен от избраните файлове"
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ Ð¸Ð·Ð¿ÑŠÐ»Ð½Ð¸Ñ‚ÐµÐ» '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Премахва изпълнител от избраните файлове."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ Ð°Ð»Ð±ÑƒÐ¼ '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Премахнато името на албума от избраните файлове."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ Ð´Ð¸Ñк номер '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Премахва номер на диÑка от избраните файлове."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ Ð³Ð¾Ð´Ð¸Ð½Ð° '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Премахва година от избраните файлове."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ като 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ ÑÑŠÑ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ като 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Премахва номер на пеÑен от избраните файлове."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Избраните файлове номерирани поÑледователно"
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ Ð¶Ð°Ð½Ñ€ '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Премахва жанр от избраните файлове"
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€ '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Премахва коментар от избраните файлове."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€ '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Премахва композитор от избраните файлове."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ Ð¾Ñ€Ð¸Ð³. изпълнител '%s'"
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Премахва ориг. изпълнител от избраните файлове."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ñки права '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Премахва авторÑки права от избраните файлове."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ URL '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Премахва URL от избраните файлове."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr ""
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr ""
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Избраните файлове Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Премахва картинките от избраните файлове."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr ""
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Ð’Ñички етикети бÑха Ñканирани"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Ð’Ñички етикети бÑха премахнати"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Ð’Ñички файлове бÑха запазени..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Ð’Ñички файлове бÑха чаÑтично запазени..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Ð’Ñички файлове бÑха чаÑтично изтрити..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Ð’Ñички файлове бÑха изтрити..."
+
+#: src/easytag.c:2408
+#, fuzzy, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Желаете ли да запишете етикета на файл\n"
+"'%s' ?ЗапиÑва етикет..."
+
+#: src/easytag.c:2412 src/easytag.c:2417
+#, fuzzy
+msgid "Write Tag..."
+msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° етикет от CDDB"
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Преименува файл и папка..."
+
+#: src/easytag.c:2475
+#, fuzzy, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Желаете ли да преименувате директориÑта \n"
+"'%s'\n"
+"на \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+#, fuzzy
+msgid "Rename Directory..."
+msgstr "Преименува папка"
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Желаете ли да преименувате директориÑта \n"
+"'%s'\n"
+"на \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Преименува файл..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Желаете ли да преименувате файла \n"
+"'%s'\n"
+"на \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "ЗапиÑване на етикета на '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Етикет(ите) Ñа запиÑани"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе запише етикета във файл '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Преименуване на файл '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе преименува файл '%s'\n"
+" на \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Файлът не е преименуван..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Ðеможе да Ñе преименува файл \n"
+"'%s'\n"
+"защото ÑъщиÑÑ‚ вече ÑъщеÑтвува:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе Ñъздаде целева папка\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Файлът '%s' е преименуван на '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Файловете Ñа преименувани..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, fuzzy, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе прочете Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ :\n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, fuzzy, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Файлът '%s' е преименуван на '%s'"
+
+#: src/easytag.c:2877
+#, fuzzy
+msgid "File(s) moved..."
+msgstr "Файловете Ñа преименувани..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, fuzzy, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе преименува файл '%s'\n"
+" на \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+#, fuzzy
+msgid "File(s) not moved..."
+msgstr "Файлът не е преименуван..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"ÐаиÑтина ли желаете да изтриете файла\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Изтриване на файл"
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Файлът '%s' бе изтрит"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе прочете Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "ТърÑене в прогреÑ..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Файл: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Ðамерени %d файла в тази Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸ поддиректориите."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Ðамерени %d файла в тази директориÑ"
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u файла"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Ðе Ñа намерени файлове в тази Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸ поддиректориите!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Ðе Ñа намерени файлове в тази директориÑ"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "ТърÑене..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " СПИРРтърÑенето... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Изберете папка за претърÑване!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ на избраните файлове Ñ Ñ‚Ð¾Ð²Ð° поле"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Конвертира '_' и '%20' до интервали"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Ковертира ' ' до '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Ð’Ñичко Ñ Ð³Ð»Ð°Ð²Ð½Ð¸ букви"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Ð’Ñичко Ñ Ð¼Ð°Ð»ÐºÐ¸ букви"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Първата буква е главна"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Първата буква във вÑички думи е главна"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Премахва интервали"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Вмъква интервал преди главна буква"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Премахва двоични интервали или подчертани думи"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, fuzzy, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Ðеправилно излизане!.\n"
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "Получен е Ñигнал %s (%d)\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"ÐавÑрно Ñте открили грешка в EasyTAG. МолÑ, изпратете Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° грешката "
+"Ñ gdb backtrace ('gdb easytag core' then 'bt' and 'l') и Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° "
+"възпроизвеждането й до <easytag@gmail.com>"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Ðеразпознат Ñигнал"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Ðормално напуÑкане."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+#, fuzzy
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"ÐÑкои файлове бÑха променени, но бÑха запиÑани...\n"
+"Желаете ли да ги запазите, преди да Ñмените директориÑта?Грешка..."
+
+#: src/easytag.c:4544
+#, fuzzy
+msgid " Do you really want to exit the program? "
+msgstr ""
+"ÐаиÑтина ли желаете да изтриете файла\n"
+"'%s' ?"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3 етикет"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis етикет"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis етикет"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE етикет"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr ""
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3 файл"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2 файл"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis файл"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Следващ файл"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC файл"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MousePack файл"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey's Audio файл"
+
+#: src/et_core.c:2593
+#, fuzzy
+msgid "MP4/AAC File"
+msgstr "MP2 файл"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "MousePack файл"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Картинки"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d кб/Ñек."
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Ðеможе да Ñе конвертира името на файла : '%s'\n"
+"във ÑиÑтемната кодова таблица\n"
+"(Опитайте да наÑтроите ÑиÑтемната променлива G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Превод на името на файла"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "Името на файл '%s' превишава %d Ñимвола и ще бъде Ñмалено!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Декодер:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+#, fuzzy
+msgid "Channels:"
+msgstr "Промени"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "ПоÑви Ñе грешка по време на отварÑнето на файл: '%s' (%s).\n"
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ГРЕШКÐ: Провал при запиÑване на коментар към файл '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "ЗапиÑан е етикет на '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Премахнат е етикет от '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Грешка при премахването на ID3v1 етикет на '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Грешка при премахване на ID3v2 етикет на '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Грешка при обновÑване на ID3v2 етикет на '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Грешка при обновÑване на ID3v1 етикет на '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Обновен е етикет на '%s'"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "ÐÑма Ñъобщени грешки"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "ÐÑма налична памет"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "ÐÑма налични данни за разбор"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Ðеправилно форматирани данни"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "ÐÑма наличен буфер за пиÑане"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Буферът е твърде малък"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Ðевалидна рамка на ID"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Зададените полета не Ñа намерени"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Ðепознат тип на полето"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Етикетът вече е прикрепен към файл"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Ðевалидна верÑÐ¸Ñ Ð½Ð° етикет"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "ÐÑма наличен файл за разбор"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Опитва да Ñе запише върху файл Ñамо за четене"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Грешка в компреÑиÑта/декомпреÑиÑта"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr " Ðепознато Ñъобщение за грешка!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+
+#: src/id3_tag.c:1214
+#, fuzzy
+msgid "Corrupted file..."
+msgstr "Избира файл..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " Добре "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Да "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Ðе "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Прилагане "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Запазване "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Отказване "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " ЗатварÑне "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " ЗапиÑване "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Изпълнение "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " ТърÑене "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " Избор..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Избира директориÑ..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Избира файл..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "ТърÑене..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Ðеможе да Ñе изпълни %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "Б"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "КБ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "МБ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "ГБ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "ТБ"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Възпроизвежда Ñе плейлиÑта"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "M3U име на плейлиÑÑ‚"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Използва име на директориÑ"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Редактира маÑки"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Опции на плейлиÑта"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Влключва Ñамо избраните файлове"
+
+#: src/misc.c:1345
+#, fuzzy
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Ðко е активирано, Ñамо избраните файлове ще Ñе запишат в файла на плейлиÑта. "
+"Ð’ противен Ñлучай, ще Ñе запишат вÑички файлове.Използва пълниÑÑ‚ път за "
+"файловете в плейлиÑта"
+
+#: src/misc.c:1352
+#, fuzzy
+msgid "Use full path for files in playlist"
+msgstr "Използва отноÑителен път към файловете в плейлиÑта"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Използва отноÑителен път към файловете в плейлиÑта"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Създава плейлиÑÑ‚ в предходната директориÑ"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr "Ðко е активирано, ще Ñе Ñъздаде плейлиÑÑ‚ в предходната директориÑ"
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Използва DOS разделител за директории"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Тази Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð°Ð¼ÐµÐ½Ñ UNIX Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° директории '/' Ñ DOS разделител'\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Съдържание на плейлиÑта"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "ЗапиÑва Ñамо ÑпиÑък Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "ЗапиÑва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹ÐºÐ¸ име на файл"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "ЗапиÑва Ð¸Ð½Ñ„Ñ€Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹ÐºÐ¸:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"ПлейлиÑÑ‚ '%s' вече ÑъщеÑтвува!\n"
+"ПрезапиÑване?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "ЗапиÑване на плейлиÑÑ‚..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе запише плейлиÑÑ‚ '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "ЗапиÑан е плейлиÑÑ‚ '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "ДиÑк"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "ПеÑен"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Коментар"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Композитор"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Ориг. изпълнител"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Права"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Деодирано от"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "ТърÑене за име на файл"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Въведете дума за Ñ‚ÑŠÑ€Ñене във файловете, или нищо, за да Ñе покажат вÑички."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "Ð’ :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "Името на файла"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "Тагът"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "ЧуÑтвителноÑÑ‚ към региÑтъра"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Ðамерени : %d file(s)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Зареждане на имената на файлове от TXT файл"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Файл :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Зареждане "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Съдържание на заредените файлове :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð° на файлове :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Когато опциÑта е активирана, Ñлед зареждането на имената на файловете, "
+"текущиÑÑ‚ избран Ñкенер ще бъде задейÑтван (прозорецът на Ñкенера Ñ‚Ñ€Ñбва да е "
+"отворен)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "ДобавÑне на празна линиÑ"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Изтриване на тази линиÑ"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Изтрива празните линии"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Презареждане"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Профил:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr ""
+
+#: src/mp4_header.c:131
+#, fuzzy
+msgid "Unknown"
+msgstr "Ðепознат тип картинка"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr ""
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, fuzzy, c-format
+msgid "~%d kb/s"
+msgstr "%d кб/Ñек."
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "ÐŸÐ¾Ð²Ñ‚Ð°Ñ€Ñ Ð´ÐµÐ¹Ñтвието за оÑтаналите файлове"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "ГРЕШКÐ: Провал при отварÑне на файл: '%s' като vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Внимание : Този Ogg Vorbis file '%s' Ñъдържа ID3v2 етикет."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Ð”Ð¾Ð±Ð°Ð²Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Ð’Ñички файлове"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG и JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "ÐкÑеÑоари към картинката %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Вид на картинката"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "ОпиÑание на картинката"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Запазване на картинката %d/%d"
+
+#: src/picture.c:732
+#, fuzzy, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Този файл вече ÑъщеÑтвува :\n"
+"'%s'\n"
+"Желаете ли да го презапишете?Запазване на файл..."
+
+#: src/picture.c:734
+#, fuzzy
+msgid "Save file..."
+msgstr "Избира файл..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "JPEG изображение"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "PNG картинка"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Ðепознат тип картинка"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "32 на 32 пикÑела PNG файлова икона"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Друга файлова икона"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Обложка (отпред)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Обложка (отзад)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Брошурка"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "ÐœÐµÐ´Ð¸Ñ (Ñ‚.е. етикет върху диÑка)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr ""
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Изпълнител/Реализатор"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Диригент"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Бенд/ОркеÑÑ‚ÑŠÑ€"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "ПиÑател/ТекÑтопиÑец"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "ÐœÑÑто на запиÑване"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "По време на запиÑване"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "По време на изпълнение"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Снимка от видео клип"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "ИзÑветлен тип"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "ИлюÑтрациÑ"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Лого на бенд/Изпълител"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Лого на издател/Ñтудио"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Ðепознат тип изображение"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "пикÑела"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Тип"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "ОпиÑание"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr ""
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðеможе да Ñе отвори файл :\n"
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Файлът на изображението не е зареден..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "ПредпочитаниÑ..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Файлов браузър"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Отива в папка по подразбиране"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñта, където Ñа вашите файлове. Този път ще бъде зареждан "
+"когато EasyTAG Ñтартира без параметър"
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Ðвтоматично Ñ‚ÑŠÑ€Ñи за файлове, когато EasyTAG Ñе Ñтартира в текущата "
+"директориÑ.Забележете, че този път може да бъде презапиÑан от параметъра "
+"валиден за easytag (easytag /пъд_до/mp3_файлове)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "ПретърÑва поддиректории"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr ""
+"ПретърÑва поддиректории за файлове когато Ñе чете Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ñ‚ дървото"
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Показва поддиректории когато Ñе избира директориÑ"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"РазширÑва избраниÑÑ‚ възел във файлов браузър за да Ñе покажат под-директории."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "ТърÑи Ñкрити директории"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "ТърÑи Ñкрити директории за файлове (директории започващи Ñ '.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "ПотребителÑки интерфейÑ"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Показва информациÑта в заглавната чаÑÑ‚ на файла"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Ðко е активирано, Ð¸Ð½Ñ„Ð¾Ñ€Ð°Ð¼Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно файлът като чеÑтотата на битовете, "
+"времето, размера ще бъдат показвани под полето Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на файла"
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr ""
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr ""
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr ""
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Сортиране на наÑтройките на ÑпиÑъка"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Сортиране на ÑпиÑъка по :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "ВъзходÑщо по име на файл"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "ÐизходÑщо по име на файл"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "ВъзходÑщо по номер на пеÑен"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "ÐизходÑщо по номер на пеÑен"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "ВъзходÑщо по дата на Ñъздаване"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "ÐизходÑщо по дата на Ñъздаване"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "ВъзходÑщо по заглавие"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "ÐизходÑщо по заглавие"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "ВъзходÑщо по изпълнител"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "ÐизходÑщо по изпълнител"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "ВъзходÑщо по албум"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "ÐизходÑщо по албум"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "ВъзходÑщо по година"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "ÐизходÑщо по година"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "ВъзходÑщо по жанр"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "ÐизходÑщо по жанр"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "ВъзходÑщо по коментар"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "ÐизходÑщо по коментар"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Изберете типът на Ñортирането когато Ñе зареждат директории"
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "Ðко е активирано, Ñоритрането ще завиÑи от ÑлучаÑ."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° диалога за ÑъобщениÑ"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Без отделно позициониране"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "ОÑÑ‚Ð°Ð²Ñ Ð¼ÐµÐ½Ð¸Ð´Ð¶ÑŠÑ€Ð° на прозорец да позиционира прозорците"
+
+#: src/prefs.c:350
+#, fuzzy
+msgid "Center of the main window"
+msgstr "В центъра на екрана"
+
+#: src/prefs.c:354
+#, fuzzy
+msgid "Windows should be placed in the center of the main window."
+msgstr "Прозорците Ñ‚Ñ€Ñбва да Ñе поÑтавÑÑ‚ в центъра на екрана"
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "В центъра на екрана"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Прозорците Ñ‚Ñ€Ñбва да Ñе поÑтавÑÑ‚ в центъра на екрана"
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° мишката"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Прозорците Ñ‚Ñ€Ñбва да бъдат намеÑтени в текущата Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° мишката"
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Програма за музика"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Програма за изпълнение:"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Въведете програма, коÑто ще използвате за Ñвирене на файлове.ÐÑкои аргументи "
+"Ñ‚Ñ€Ñбвада Ñа Ñъобразени Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°Ñ‚Ð°(като 'xmms -p') преди да получите "
+"файлове Ñ Ð´Ñ€ÑƒÐ³Ð¸ аргументи."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+#, fuzzy
+msgid "File Settings"
+msgstr "_ÐаÑтройки"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "ÐаÑтройки на файлове"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "Ð—Ð°Ð¼ÐµÐ½Ñ Ð½ÐµÐ²Ð°Ð»Ð¸Ð´Ð½Ð¸ Ñимволи в името на файла(За Windows и CD-Rom)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Конвертира невалидни Ñимволи за FAT32/16 и ISO9660 + Joilet файлови ÑиÑтеми "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') на името на файла за да Ñе "
+"избегне проблем Ñ Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½ÐµÑ‚Ð¾ на файла. Това е полезно когато Ñе "
+"преименува файл от етикетът чрез Ñкенерът."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Конвертира файловите Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ð° :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Малки букви"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Ðа пример, разширениÑта ще бъдат конвертирани на 'mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Главни букви"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Ðа пример, разширениÑта ще бъдат конвертирани на '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Без промÑна"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "Разширението нÑма да Ñе конвертира"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Запазва времето на промÑна на файла"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Запазва времето на промÑна(в акÑеÑоарите на файла) когато запазва ÑамиÑÑ‚ "
+"файл."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+#, fuzzy
+msgid "Character Set for File Name"
+msgstr "Подреждане на знаците за ID3 етикети"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr ""
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "ÐаÑтройки на етикетите"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "ÐаÑтройки на етикетите"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Ðвтоматично завършване на датата, ако не е завършено"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Опитва да завърпи датата ако Вие Ñте въвели Ñамо поÑледните цифри от датата "
+"(на пример, ако текущата година е 2005: 5 => 2005, 4 => 2004, 6 => 1996,95 "
+"=> 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr ""
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Ogg Vorbis файлове: ЗапиÑва още коментар за XMMS формата"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS не използва правилниÑÑ‚ начин за преглед на коментара в Ogg "
+"Vorbisфайловете Ñъщо като други програми.Ð’ÑъщноÑÑ‚, това поле обикновено е "
+"озаглавено Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€=', докато XMMS използва Ñамо `='.ÐœÐ¾Ð»Ñ Ð´ÐµÐ¼Ð°Ñ€ÐºÐ¸Ñ€Ð°Ð¹Ñ‚Ðµ "
+"тази опциÑ, ако не иÑкате други програми да имат проблеми Ñ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ поле."
+"Коментарите нÑма да бъдат показвани и в XMMS"
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr ""
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+#, fuzzy
+msgid "ID3 Tag Settings"
+msgstr "ÐаÑтройки на етикетите"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Правила за ID3 етикети"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "ЗапиÑва ID3 тагове в FLAC файлове Ñ FLAC етикет"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Ðко е активирано, ID3 етикети ще бъдат Ñъщо добавÑни във FLAC файла "
+"(ÑъглаÑно двете правила по-горе, Ð¿Ð»ÑŽÑ FLAC етикетът)"
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr ""
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Ðвтоматично конвертира Ñтари верÑии на ID3v2 етикети"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Ðко е активирано, Ñтарите ID3v2 етикети (като ID3v2.2) ще бъдат подновени до "
+"ID3v2.3 верÑии"
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "ЗапиÑва ID3v2 етикет"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Подреждане на знаците за ID3 етикети"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "ЗапиÑва ID3v2 етикет"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "ЗапиÑва ID3v2 етикет"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Ðко е активирано, ID3v2 етикет ще бъде добавен или обнвен в началото наMP3 "
+"файловете."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "ОпиÑание:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Уникод (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Деодирано от"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Кодова таблица използвана за да Ñе запишат данните на етикет във файл"
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " Ðе "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3 етикет"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "ЗапиÑва ID3v1.x етикет"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Ðко е активирано ID3v1 етикет ще бъде добавен или обновен в ÐºÑ€Ð°Ñ Ð½Ð° "
+"MP3файловете."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Кодова таблица използвана за да Ñе запишат данните на етикет във файл"
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Подреждане на знаците за ID3 етикети"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Кодова даблица използвана за да Ñе четат данните за етикета във файл"
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Скенер"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Запълва Ñкенера за етикети - конвертиране на Ñимволи"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Конвертира долна черта '_' и низове '%20' до интервал ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Конвертира интервал ' ' до долна черта '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Ðко е активирано, това конвертиране ще бъде използвано, когато Ñе прилага "
+"маÑка заÑкенера за етикети"
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Преименува Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñкенер - конвертиране на Ñимволи"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Ðко е активирано, това конвертиране ще бъте ползвано когато Ñе прилага маÑка "
+"от Ñкенера за файлове"
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr ""
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Прозорец на Ñкенера"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "ÐžÑ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†Ð° на Ñкенера при Ñтартиране"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Ðктивирайте тази Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð° да Ñе Ð¾Ñ‚Ð²Ð°Ñ€Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ прозреца на Ñкенера "
+"когато EasyTAGÑе Ñтартира"
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Прозореца на Ñкенера е винаги отгоре"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Ðко е активирано, прозорецът, който Ñъдържа маÑките винаги ще Ñтои "
+"върхуглавниÑÑ‚ прозорец"
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Полета"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "ПрезапиÑва полетата когато Ñканира етикет"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Ðко е активирано, Ñкенерът ще замеÑти ÑъщеÑтвуващиÑÑ‚ текÑÑ‚ в полетата Ñ Ð½Ð¾Ð² "
+"Ðко е деактивирано, Ñам празните полета на етикетите ще бъдат запълвани."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Запазва този текÑÑ‚ като коментар по подразбиране :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Ðктивирайте тази Ð¾Ð¿Ñ†Ð¸Ñ Ð°ÐºÐ¾ желаете да вмъкнете ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð½Ð¸Ð· в полето за "
+"коментар използвайки 'Fill Tag' Ñкенера."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+"Използва CRC32 като коментар по подразбиране (за файлове Ñамо Ñ ID3 етикети)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"ИзчиÑлÑва CRC-32 ÑтойноÑтта на файла и го презапиÑва в полетоза коментар "
+"когато използва 'Fill Tag' Ñкенера."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "CD база данни"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+#, fuzzy
+msgid "Server Settings for Automatic Search"
+msgstr "Ðвтоматично Ñ‚ÑŠÑ€Ñене"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Име :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Порт :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI път :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "ÐаÑтройки на Ñървъра"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "CD база данни"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "CGI път :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "ÐаÑтройки на Ñървъра поÑредник"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Използва Ñървър поÑредник"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Ðктивира наÑтройките на Ñървъра поÑредник."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Име на хоÑÑ‚ :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Име на Ñървъра поÑредник."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Порт на Ñървъра поÑредник."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "ПотребителÑко име :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Потребителко име за Ñървъра поÑредник."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Парола :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Парола за Ñървъра поÑредник."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð° на пеÑни"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"Избира ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð°ÑƒÐ´Ð¸Ð¾ файл (Ñъобразно позициÑта или DLM ако Ñа активирани "
+"по-долу)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Ðко е активирано, когато Ñе избира Ð»Ð¸Ð½Ð¸Ñ Ð² ÑпиÑъка Ñ Ð¸Ð¼ÐµÐ½Ð° на пеÑни, "
+"ÑъответниÑÑ‚ аудио файл в Ð³Ð»Ð°Ð²Ð½Ð¸Ñ ÑпиÑък Ñъщо ще бъде избран."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Използва алгоритъмът на Ливенщайн (DLM) за да ÑъответÑтват линиите "
+"(използвайки заглавие) Ñ Ð°ÑƒÐ´Ð¸Ð¾ файлове (използвайки името на файла)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Потвърждаване"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Потвърждаване за напуÑкане на програмата"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Ðко е активирано, Ð¾Ñ‚Ð²Ð°Ñ€Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð² прозорец за да Ñе поиÑка потвърждение "
+"преди напуÑкане на програмата."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Потвърждаване за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° етикети"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Потвърждаване за преименуване на файлове"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Потвърджаване за изтриване на файлове"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Потвърждаване за пиÑане на плейлиÑти"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Прилага промените (но не ги запазва) и Ð·Ð°Ñ‚Ð²Ð°Ñ€Ñ Ñ‚Ð¾Ð·Ð¸ прозорец"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Ð—Ð°Ñ‚Ð²Ð°Ñ€Ñ Ñ‚Ð¾Ð·Ð¸ прозорец без запазване"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Запазва промените и Ð·Ð°Ñ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†Ð°"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Пример : %.*d_-_Име_на_пеÑен_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Промените Ñа приложени"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "КонфигурациÑта е запазена"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "КонфигурациÑта е непроменена"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" ИзбраниÑÑ‚ път за 'път по подразбиране за файловете' е невалиден!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Това не е директориÑ"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr ""
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Запълва етикет"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Преименува файл и директориÑ"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Индикатор на процеÑи"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Етикетът е уÑпешно Ñканиран"
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Етикетът е уÑпешно Ñканиран...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Грешка при Ñканиране: неможе да Ñе намери Ñепаратор '%s'в '%s"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "Ðеможе да конвертира името на файл '%s' в ÑиÑтемната кодова таблица."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Ðовото име на файла е уÑпешно Ñканирано..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Ðовото име на файла е уÑпешно Ñканирано...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Сканиране за файл и етикет"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Скенер :"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Избира тип на Ñкенер за ползване"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "ÐžÑ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†Ð° на Ñкенера / Сканира избраните файлове"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Опции на Ñкенера"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Показва / Ñкрива редактора на маÑки"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Показва / Ñкрива легенда"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Ð—Ð°Ñ‚Ð²Ð°Ñ€Ñ Ñ‚Ð¾Ð·Ð¸ прозорец"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Запълва Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´ на етикета..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Задава текущиÑÑ‚ път като Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð·Ð° маÑката"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Преглед на Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Избира файлове:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Бутоните в дÑÑно отговарÑÑ‚ на полетата, които могат да бъдат обработени. "
+"Изберете тези, които ви интереÑуват."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "Ф"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Обработва полето за име на файл"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "З"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Обработва полето за заглавие"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "И"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Обработва полето за изпълнител"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Ð"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Обработва полето за албум"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "Ж"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Обработва полето за жанр"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Коме"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Обработва полето за коментар"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Комп"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Обработва полето за композитор"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "Ор. Изп."
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Обработва полето за оригинален изпълнител"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Ðв"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Обработва полето за авторÑко право"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Обработа полето за URL"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr ""
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr ""
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Завърта ÑелекциÑта"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Избира/ Ðе избира вÑички."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Конвертира '_' и '%20' до ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Конвертира :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "до : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Знакът долна черта или низът '%20' Ñа заменени от един интервал. Пример, "
+"преди: 'ТекÑÑ‚%20Ð’%20Един_ЗапиÑ', Ñлед: 'ТекÑÑ‚ Ð’ Един ЗапиÑ'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Знакът интервал е заменен от долна черта. Пример, преди: 'ТекÑÑ‚ Ð’ Един "
+"ЗапиÑ', Ñлед: 'ТекÑÑ‚_Ð’_Един_ЗапиÑ'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Ð—Ð°Ð¼ÐµÐ½Ñ ÐµÐ´Ð¸Ð½ знак Ñ Ð´Ñ€ÑƒÐ³"
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Конвертира вÑички букви във вÑички полета до главни букви. Пример, преди: "
+"'Ð¢ÐµÐºÑ Ð’ ЕДИРзапиÑ', Ñлед: 'ТЕКСТ Ð’ ЕДИРЗÐПИС'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Конвертира вÑички букви във вÑички полета до малки букви. Пример, преди: "
+"'ТЕКСТ Ð’ един запиÑ', Ñлед: 'текÑÑ‚ в един запиÑ'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Конвертира първата буква във вÑички полета до главна буква. Пример, преди: "
+"'текÑÑ‚ Ð’ Един ЗÐПИС', Ñлед: 'ТекÑÑ‚ в един запиÑ'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Конвертира вÑÑка първа буква до главна във вÑички полета. Пример, преди: "
+"'ТекÑÑ‚ в един ЗÐПИС', Ñлед: 'ТекÑÑ‚ Ð’ Един ЗапиÑ'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "ПоÑÑ‚Ð°Ð²Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð» преди главна буква"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Премахва дублиращи Ñе интервали или главни букви"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Ð’Ñички интервали преди буквите Ñе премахват. Пример, преди: 'ТекÑÑ‚ Ð’ Един "
+"ЗапиÑ', Ñлед: 'ТекÑтВЕдинЗапиÑ'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"ПоÑÑ‚Ð°Ð²Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð» преди вÑÑка главна буква. Пример, преди: 'ТекÑтВЕдинЗапиÑ', "
+"Ñлед: 'ТекÑÑ‚ Ð’ Един ЗапиÑ'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Дублиращите Ñе интервали или долни черти Ñе премахват. Пример, преди: "
+"'ТекÑÑ‚__Ð’__Един ЗапиÑ', Ñлед: 'ТекÑÑ‚_Ð’_Един ЗапиÑ'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Легенда"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : изпълнител"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : албум"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : коментар"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : композитор"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : авторÑки права"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : номер на диÑк"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : кодирано от"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : жанр"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : игнорирано"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : номера на пеÑни"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : ориг. изпълнител"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : пеÑен"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : заглавие"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : година"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Редактор на маÑки"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Създава нова маÑка"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "ПремеÑтва нагоре тази маÑка"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "ПремеÑтва надолу тази маÑка"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Дублира маÑка"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Ð”Ð¾Ð±Ð°Ð²Ñ Ð¼Ð°Ñки по подразбиране"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Премахва маÑка"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Запазва маÑка"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Ðова_маÑка"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Копиране: нÑма избран ред!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Премахване: нÑма избран ред!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "ПремеÑтване нагоре: нÑма избран ред"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "ПремеÑтване надолу: нÑма избран ред!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "ГРЕШКÐ: Ðе може да запиша конфигурационен файл: %s (%s)\n"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Ðе може да отвори конфигурационен файл '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Зарежда ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ подразбиране..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Ðе може да Ñе Ñъздаде или отвори файл '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "ГРЕШКÐ: Ðе може да запиша конфигурационен файл: %s (%s)\n"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Зарежда наÑтройки по подразбиране 'Запълва маÑката на етикет'..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Зарежда наÑтройки по подразбиране 'Преименува маÑка на файл'..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+#, fuzzy
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Зарежда наÑтройки по подразбиране 'Преименува маÑка на файл'..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr "ГРЕШКÐ: Променливата на обкръжението HOME не е дефинирана!\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "ГРЕШКÐ: Ðе може да Ñъздаде Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr ""
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr ""
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr ""
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr ""
+
+#: src/vcedit.c:341
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr ""
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr ""
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr ""
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr ""
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "ÐžÑ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° за музика"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Ðевалидна верÑÐ¸Ñ Ð½Ð° етикет"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Уникод (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Уникод (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Уникод (UTF-16LE)"
+
+#, fuzzy
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr ""
+#~ "Използва Ñтандартното ISO-8859-1 подреждане за ID3 етикети(препорачително)"
+
+#, fuzzy
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr ""
+#~ "Използва Ñтандартното ISO-8859-1 подреждане за ID3 етикети(препорачително)"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "ПоÑви Ñе грешка по време на отварÑнето на файл: '%s' (%s).\n"
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Зарежда Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ Ñтартиране"
+
+#~ msgid "#:"
+#~ msgstr "#:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "Задава жълт фон за tooltips"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "Ðко е активирано, фонът за tooltips ще бъде оцветен в жълто, "
+#~ "припокривайки ВашиÑÑ‚ мениджър на прозорци."
+
+#, fuzzy
+#~ msgid "Can't execute %s (%d)!\n"
+#~ msgstr "Ðеможе да Ñе изпълни %s (%s)!\n"
+
+#~ msgid "Set new style for displaying list items"
+#~ msgstr "Задава нов Ñтил за показването на артикули"
+
+#~ msgid ""
+#~ "If activated, items in list will be styled black and bold instead of red "
+#~ "and gray (example : for changed and not saved files)."
+#~ msgstr ""
+#~ "Ðко е активирано, артикулите в ÑпиÑъка ще бъдат показвани в черно и "
+#~ "одебелено вмеÑто червено и зелено (пример : за променени и незапазени "
+#~ "файлове)."
+
+#~ msgid "Save _Configuration Now"
+#~ msgstr "Запазва _наÑтройките Ñега"
+
+#~ msgid "Save Configuration Now"
+#~ msgstr "Запазва наÑтройките Ñега"
+
+#~ msgid "Set main window size"
+#~ msgstr "Задава размер на Ð³Ð»Ð°Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†"
+
+#~ msgid "Width :"
+#~ msgstr "Ширина :"
+
+#~ msgid "Height :"
+#~ msgstr "ВиÑочина :"
+
+#~ msgid " Get current size "
+#~ msgstr "Взима текущиÑÑ‚ размер"
+
+#~ msgid ""
+#~ "Specify the default size for the main window. You must restart the "
+#~ "program to apply the new size. For your display, the max values are: "
+#~ "width=%d and height=%d."
+#~ msgstr ""
+#~ "Избира размера на прозореца по подразбиране.ТрÑбва да реÑтартирате "
+#~ "програмата за да приложите Ð½Ð¾Ð²Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€.За ВашиÑÑ‚ диÑплей, макÑимумът е: "
+#~ "width=%d и виÑочина=%d."
+
+#~ msgid "Width: set -1 for automatic size"
+#~ msgstr "Ширина: задайте -1 за автоматично оразмерÑване"
+
+#~ msgid "Heigth: set -1 for automatic size"
+#~ msgstr "ВиÑочина: задайте -1 за автоматично оразмерÑване"
+
+#~ msgid "Position :"
+#~ msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ :"
+
+#~ msgid " Get current position "
+#~ msgstr " Взима текуща Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ "
+
+#~ msgid "Position: set -1 for automatic positioning"
+#~ msgstr "ПозициÑ: задайте -1 за автоматично позициониране"
+
+#~ msgid "Set scanner window position"
+#~ msgstr "Задава позициÑта на прозореца на Ñкенера"
+
+#~ msgid ""
+#~ "If activated, the scanner window will appear at the specified coordinates "
+#~ "relative to the main window. Use it if you want to keep the same position "
+#~ "of the scanner window each times you open it. If deactivated, the window "
+#~ "manager determines the position."
+#~ msgstr ""
+#~ "Ðко е активирано, прозорецът на Ñкенера ще Ñе поÑвÑва в зададените "
+#~ "кординати ÑпрÑмо Ð³Ð»Ð°Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†. Използвайте тази опциÑ, ако желаете да "
+#~ "запазите Ñъщата Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð°Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†Ð° на Ñкенера вÑеки път когато го "
+#~ "отварÑте. Ðко е деактивирано, мениджърътна прозорци ще Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñта"
+
+#~ msgid "X :"
+#~ msgstr "X :"
+
+#~ msgid "Y :"
+#~ msgstr "Y :"
+
+#~ msgid "CD Data Base Window"
+#~ msgstr "CD база данни прозорец"
+
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "Задава размер на CD база данни прозореца"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "Задава размер по подразбиране за CDDB прозореца."
+
+#~ msgid " Window height (%d) is bigger than screen height (%d)! "
+#~ msgstr "ВиÑочината на прозореца (%d) е по-голÑма от тази на екрана (%d)!"
+
+#~ msgid "Size Error..."
+#~ msgstr "Грешка в размера..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr " Ширината на прозореца (%d) е по-голÑма от тази на екрана (%d)! "
+
+#~ msgid "The scanner window must be open to get its current position!"
+#~ msgstr ""
+#~ "Прозорецът на Ñкенера Ñ‚Ñ€Ñбва да бъде отворен за да Ñе вземе позициÑта му!"
+
+#~ msgid "The CDDB window must be open to get its current position!"
+#~ msgstr "CDDB прозорецът Ñ‚Ñ€Ñбва да е отворен за да Ñе вземе позициÑта му!"
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "Запазва конфигурациÑта преди напуÑкане на програмата"
+
+#~ msgid ""
+#~ "If activated, the configuration will be automatically saved before "
+#~ "exiting the program."
+#~ msgstr ""
+#~ "Ðко е активирано, конфигурациÑта ще бъде автоматично запазена преди "
+#~ "напуÑкане на програмата"
+
+#, fuzzy
+#~ msgid ""
+#~ "...and apply these rules if conversion to character set for writing ID3 "
+#~ "tags fails:"
+#~ msgstr ""
+#~ "Използва Ñтандартното ISO-8859-1 подреждане за ID3 етикети(препорачително)"
+
+#~ msgid "Unicode (UTF-32BE)"
+#~ msgstr "Уникод (UTF-32BE)"
+
+#~ msgid "Unicode (UTF-32LE)"
+#~ msgstr "Уникод (UTF-32LE)"
+
+#, fuzzy
+#~ msgid ""
+#~ "If activated, the ID3 tag will be written with the ISO-8859-1 character "
+#~ "set. Note that non-ISO-8859-1 characters will be lost. Note also that "
+#~ "ID3v2.3 tags support only ISO-8859-1 and UTF-16. If disabled, it will "
+#~ "check automatically the right encoding to use."
+#~ msgstr ""
+#~ "Ðко е активирано, ID3 етикетите ще бъдат запиÑвани Ñ ISO-8859-1 "
+#~ "подреждане на знаците.Забележете, че ID3v2.3 етикетите поддържат Ñамо ISO-"
+#~ "8859-1 и UTF-16."
+
+#, fuzzy
+#~ msgid "Use this character set translation for ID3 tags (for expert user) :"
+#~ msgstr "Използва това подреждане на знаците за ID3 етикети :"
+
+#, fuzzy
+#~ msgid ""
+#~ "If activated, this character set translation will be used for reading and "
+#~ "writing ID3 tag (for MP3 and MP2 files only)."
+#~ msgstr ""
+#~ "Ðко е активирано, това кодиране ще бъде използвано за четене изапиÑване "
+#~ "на ID3 етикети ( за mp3 и mp2 файлове)."
+
+#~ msgid "Convert character set from :"
+#~ msgstr "Конвертира кодирането от :"
+
+#~ msgid "to :"
+#~ msgstr "до :"
+
+#~ msgid ""
+#~ "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+#~ "To fix : this file name musn't be in UTF-8 encoding. So specify the right "
+#~ "encoding for file name in the G_FILENAME_ENCODING environment variable "
+#~ "(for example : export G_FILENAME_ENCODING=ISO-8859-1).\n"
+#~ "Invalid UTF-8"
+#~ msgstr ""
+#~ "Името на файл '%s' неможе да бъде конвертирано в UTF-8 (%s).\n"
+#~ "За да корегирате: името на този файл не Ñ‚Ñ€Ñбва да бъде Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½Ðµ на UTF-"
+#~ "8.Определите правилнотокодиране на името в променливата "
+#~ "G_FILENAME_ENCODING (на пример : export G_FILENAME_ENCODING=ISO-8859-1).\n"
+#~ "Ðевалиден UTF-8"
+
+#~ msgid "Currently using G_FILENAME_ENCODING=%s ...\n"
+#~ msgstr "Използва Ñе G_FILENAME_ENCODING=%s ...\n"
+
+#~ msgid "Currently using G_BROKEN_FILENAMES=%s ...\n"
+#~ msgstr "Използва Ñе G_BROKEN_FILENAMES=%s ...\n"
+
+#~ msgid ""
+#~ "Do you want to rename the file and directory \n"
+#~ "'%s'\n"
+#~ "to \n"
+#~ "'%s' ?Rename Directory..."
+#~ msgstr ""
+#~ "Желаете ли да преименувате файла и папката \n"
+#~ "'%s\n"
+#~ "на \n"
+#~ "'%s' ?Преименува папка..."
+
+#~ msgid ""
+#~ "Some files have been modified but not saved...\n"
+#~ "Do you want to save them before exiting the program? Do you really want "
+#~ "to exit the program? "
+#~ msgstr ""
+#~ "ÐÑкои файлове бÑха променени, но не запазени...\n"
+#~ "Желаете ли да ги запазите, преди да напуÑнете програмата?ÐаиÑтина ли "
+#~ "желаете да напуÑнете програмата? "
diff --git a/po/cs.gmo b/po/cs.gmo
new file mode 100644
index 0000000..e3f0be2
--- /dev/null
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..4c8ffd8
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,4941 @@
+# Czech translation for EasyTAG
+# Copyright (C) 2002-2007 Free Software Foundation, Inc.
+# Milan Siebenburger <milan.siebenburger@ais.cz>, 2002, 2003, 2004.
+# Zbynek Mrkvicka <zbynek@oachot.cz>, 2005, 2006, 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 2.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2007-05-09 20:58+0100\n"
+"Last-Translator: Zbynek Mrkvicka <zbynek@mrkvicka.eu>\n"
+"Language-Team: Czech <zbynek@mrkvicka.eu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Czech\n"
+"X-Poedit-Country: CZECH REPUBLIC\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG je utilita na prohlížení a úpravu tagů v MP3, MP2, FLAC, Ogg "
+"Vorbis, MP4/AAC, MusePack a Monkey Audio souborech. S jednoduchým a pěkným "
+"GTK+ rozhraním je tagování v GNU/Linuxu mnohem jednodušší."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Německý překlad)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Ruský překlad)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Holandský překlad)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Švédský překlad)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(MaÄarský pÅ™eklad)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Italský překlad)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Japonský překlad)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Ukrajinský překlad)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Český překlad)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Španělský překlad)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Polský překlad)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Rumunský překlad)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Dánský překlad)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Řecký překlad)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Brazilský překlad)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(Bulharský překlad)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(Čínský překlad)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Řecký překlad)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "O aplikaci..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "O aplikaci"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(kompilováno: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(používá: GTK+ %d.%d.%d a id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(podpora MP3 vypnuta)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(podpora MP3 vypnuta)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(podpora MP3 vypnuta)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(podpora MP3 vypnuta)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(podpora Ogg Vorbis formátu vypnuta)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(podpora MP3 vypnuta)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(podpora FLAC formátu vypnuta)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(podpora MP4/AAC vypnuta)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(podpora MP3 vypnuta)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Autor: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Webová stránka: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Popis:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Poděkování"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Překlady:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Obecné:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Změny"
+
+#: src/about.c:454
+#, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Nelze otevřít soubor '%s' (%s)\n"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "CHYBA při otevírání souboru: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Soubor"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Setřídit seznam podle tagu"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Setřídit seznam podle vlastnosti"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Vzestupně podle názvu souboru"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Sestupně podle názvu souboru"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Vzestupně podle data vytvoření"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Sestupně podle data vytvoření"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Vzestupně podle pořadí skladby"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Sestupně podle pořadí skladby"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Vzestupně podle názvu skladby"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Sestupně podle názvu skladby"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Vzestupně podle umělce"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Sestupně podle umělce"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Vzestupně podle názvu alba"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Sestupně podle názvu alba"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "VzestupnÄ› podle roku"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "SestupnÄ› podle roku"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Vzestupně podle žánru"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Sestupně podle žánru"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Vzestupně podle poznámky"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Sestupně podle poznámky"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "VzestupnÄ› podle skladatele"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "SestupnÄ› podle skladatele"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Vzestupně podle původního umělce"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Sestupně podle původního umělce"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "VzestupnÄ› podle copyrightu"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "SestupnÄ› podle copyrightu"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "VzestupnÄ› podle URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "SestupnÄ› podle URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Vzestupně podle názvu enkodéru"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Sestupně podle názvu enkodéru"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "VzestupnÄ› podle typu souboru"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "SestupnÄ› podle typu souboru"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "VzestupnÄ› podle velikosti souboru"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "SestupnÄ› podle velikosti souboru"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Setřídit seznam vzestupně podle délky skladby"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Setřídit seznam sestupně podle délky skladby"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Setřídit seznam vzestupně podle bitrate"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Setřídit seznam sestupně podle bitrate"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Setřídit seznam vzestupně podle vzorkování"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Setřídit seznam sestupně podle vzorkování"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Otevřít soubor(y) s ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "OznaÄit vÅ¡echny soubory"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "OdznaÄit vÅ¡echny soubory"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Invertovat výběr souborů"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Vymazat soubor(y)..."
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "P_rvní soubor"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "První soubor"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "_Předchozí soubor"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Předchozí soubor"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "_Další soubor"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Další soubor"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "Pos_lední soubor"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Poslední soubor"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "Na_skenovat soubor(y)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Naskenovat soubor(y)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Vymazat tag(y)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Vymazat tag(y)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "Vrátit poslední změny na souboru(ech)"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Vrátit poslední změny na souboru(ech)"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "Zopakovat poslední změny na soubo_ru(ech)"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Zopakovat poslední změny na souboru(ech)"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Uložit soubor(y)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Uložit soubor(y)"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "Vynutit uložení souboru(ů)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Vynutit uložení souboru(ů)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Zrušit poslední změny"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Zopakovat poslední změny"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "U_konÄit"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "UkonÄit"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_ProhlížeÄ"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Přejít do _domovského adresáře"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Přejít do domovského adresáře"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Přejít do _výchozího adresáře"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Přejít do výchozího adresáře"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Nastavit aktuální _cestu jako výchozí"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Nastavit aktuální cestu jako výchozí"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Stromová struktura | Zobrazení Autor-Album"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Přejmenovat adresář..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Obnovit adresář"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Procházet adresář s ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Zabalit strom"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Obnovit strom"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "S_kener"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Vyplnit tag(y)..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Vyplnit tag(y)..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "Přejmenovat soubo_r(y) a adresář..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Přejmenovat soubor(y) a adresář..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "Z_pracovat pole..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Zpracovat pole..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Ostatní"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Hl_edat soubor(y)..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Hledat soubor(y)..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "Hledání v CD data_bázi..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB hledání..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Nahrát názvy souborů z TXT..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Zapsat seznam skladeb..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Spustit pÅ™ehrávaÄ"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "N_astavení"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Možnosti..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Možnosti..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Nápověda"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "O _aplikaci"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Zastavit probíhající akci"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_Souborové operace"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Hledat soubor(y) pomocí CDDB..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr "VyÄistit log"
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Procházet _podadresáře"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Zobrazit skryté adresáře"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Zobrazit stromovou strukturu / Zobrazit podle Autora a Alba"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr ""
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Připraveno..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Vybrána nová výchozí cesta k souborům"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Potvrzení..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Některé soubory byly modifikovány, ale nebyly uloženy...\n"
+"Chcete je před změnou adresáře uložit?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Zadaná cesta je neplatná!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Chyba..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<VÅ¡echna alba>"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Chyba: Hledal jsem %s, nemohu nalézt uzel %s ve stromu."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Umělec"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Alba"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Soubory"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Přejít do nadřazeného adresáře"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Napište název adresáře."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Strom"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Umělec & Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Přejmenovat adresář"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Přejmenovat adresář '%s' na : "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Použít masku :"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "Pokud je aktivováno, použijí se k přejmenování adresáře masky."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Vyberte nebo vepište masku z kódů (viz Legenda) pro přejmenování adresáře "
+"použitím polí tagu."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Chybná maska skeneru"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Náhled přejmenování adresáře..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Musíte vyplnit název adresáře!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr "Nemohu převést '%s' do kódování názvu souboru. Použijte jiný název."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Nelze přejmenovat, protože adresář s tímto názvem již existuje!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nelze přejmenovat adresář \n"
+"'%s'\n"
+" na \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Adresář přejmenován"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Spustit program :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Napište název programu, který se spustí. Tomuto programu se předá aktuální "
+"adresář jako parametr."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Otevřít soubor s ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Napište název programu, který se spustí. Tomuto programu se předá aktuální "
+"soubor jako parametr."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Musíte vyplnit název programu!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Nemohu nalézt program '%s'!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Nemohu spustit %s (chyba %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Nelze vytvořit proces!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Spuštěný příkaz : '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Umělec / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Kategorie"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Název skladby"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "ÄŒas"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "Hledání v CD databázi..."
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Automatické hledání"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "Požadavek na CD databázi :"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Automaticky zaslat požadavek do CDDB databáze na základě vybraných souborů "
+"(pořadí je důležité) k vytvoření CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Zastavit hledání ..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr "Použít lokální Cddb"
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"PÅ™i spuÅ¡tÄ›ní této volby, po naÄtení vÅ¡ech polí, bude spuÅ¡tÄ›n aktuální skener "
+"(okno skeneru musí být otevřeno)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Manuální hledání"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Slova :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Napište slova, která chcete vyhledat (oddělená mezerou nebo '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Hledat v :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "VÅ¡echna pole"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Další"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "VÅ¡echny kategorie"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Klasická hudba"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Ostatní"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Soundtrack"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "obsahuje : funk, soul, rap, pop, industrial, metal, atd."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "filmy, show"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "ostatní, které nepatří do zobrazených kategorií"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " Kategorie"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Výsledky :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Hledat :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Napište slova, která chcete vyhledat v seznamu"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Hledat další"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Hledat předchozí"
+
+#: src/cddb.c:571
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr ""
+"Zobrazit pouze Äervené řádky (nebo vÅ¡echny řádky) v seznamu 'UmÄ›lec / Album'"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "OdznaÄit vÅ¡echny řádky"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Invertovat výběr řádků"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "OznaÄit vÅ¡echny řádky"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Vyberte řádky pro 'použití' pro váš seznam souborů. Pokud nebude vybrán "
+"žádný řádek, budou použity všechny řádky."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Nastavit do :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "VÅ¡e"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Název souboru"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Název"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Rok"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Pořadí #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# skladeb"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Žánr"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Spustí aktuální skener pro každý soubor"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"K porovnání a výběru CDDB titulu s názvem souboru se použije Levenshteinův "
+"algoritmus (DLM: Damerau-Levenshtein Metric)."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "NaÄíst vybrané řádku nebo vÅ¡echny řádky (pokud nejsou žádné vybrány)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Připraveno k vyhledání..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album: '%s', umělec: '%s', délka: '%s', rok: '%s', žánr: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Invertovat výběr"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Setřídit podle pořadí skladby"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Setřídit podle názvu skladby"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Hledám server '%s' ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Nemohu nalézt server '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Nelze vytvořit nový socket (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Probíhá připojování k '%s', port '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Nelze se připojit k '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Připojeno k '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Přijímám data (%s) ..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Chyba pÅ™i naÄítán odpovÄ›di cddb (%s)!"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Nelze vytvořit soubor '%s' (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Nelze otevřít soubor '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Odesílání požadavku"
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Nelze odeslat požadavek (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Přijímám data ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "Server vrátil Å¡patnou odpovÄ›Ä!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Server vrátil Å¡patnou odpovÄ›Ä! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Webové vyhledávání právě není v provozu."
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Nalezeno %d odpovídajících alb"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Přijímám data %d ..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Přijímám data %d ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "Další výsledky k naÄtení ..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Nebyl vybrán soubor!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "Vybráno %d souborů!"
+
+#: src/cddb.c:2945
+msgid "Local CD search..."
+msgstr "Lokální vyhledávání CD..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+"Cesta k 'Lokální CD Databázi' nebyla definována!\n"
+"Vyplňte jí v okně nastavení."
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Posílám požadavek (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+
+#: src/cddb.c:3231
+#, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Nalezeno %d odpovídajících alb pro DiscID '%s'"
+
+#: src/cddb.c:3327
+#, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Nelze naÄíst soubor '%s' (%s)!"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "NaÄítání skladeb z alba ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Pozor, chcete aplikovat %d řádků z CDDB výsledku na %d řádků v seznamu "
+"souborů!\n"
+"\n"
+"Chcete pokraÄovat?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Zapsat tag z CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arabské (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabské (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arabské (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltické (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltické (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Baltické (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltské (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Středoevropské (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Středoevropské (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Středoevropské (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Čínské zjednodušené (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Čínské zjednodušené (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Čínské tradiÄní (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Čínské tradiÄní (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Azbuka (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Azbuka (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Azbuka (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Azbuka (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Azbuka (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Azbuka/Rusko (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Azbuka/Ukrajina (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Anglické (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Řecké (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Řecké (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrejské (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrejské (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japonské (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonské (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonské (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Korejské (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Severské (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Jihoevropské (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Thajské (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Turecké (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turecké (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Turecké (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamské (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamské (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Vizuální hebrejské (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Západní (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Západní (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Západní (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Západní (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Název souboru '%s' nemohl být převeden do UTF-8 (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "Neplatné UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"UTF-8 řetězec '%s' nemohl být převeden do kódové stránky souboru (%s)\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Řetězec '%s' nemohl být převeden do UTF-8 (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Spouštím EasyTAG %s (PId: %d) ..."
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Používám id3lib ve verzi %d.%d.%d ..."
+
+#: src/easytag.c:182
+#, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Používám id3lib ve verzi %d.%d.%d ..."
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+"Proměnná prostředí EASYTAGLANG nebyla definována. Nastavuji locale : '%s'"
+
+#: src/easytag.c:191
+#, c-format
+msgid "Setting locale : '%s'"
+msgstr "Nastavuji locale : '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "Používám locale '%s' (případně '%s')..."
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s od %s (zkompilováno %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Webová stránka: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr "Neznámý parametr nebo cesta '%s'\n"
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "ProhlížeÄ"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Soubor"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Soubor je jen pro Ätení"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Vadný link na soubor"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Vrstva ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Datový tok:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Vzorkování:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Mód:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Velikost:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "ÄŒas:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Tag"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Obecné"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Název:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Nastavit vybraným souborům tento název"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Umělec:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Nastavit vybraným souborům tohoto umělce"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Nastavit vybraným souborům tento název alba"
+
+#. Disc Number
+#: src/easytag.c:642
+msgid "CD:"
+msgstr "CD:"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Nastavit vybraným souborům toto Äíslo disku"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Rok:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Nastavit vybraným souborům tento rok"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"OÄíslovat vybrané skladby sekvenÄnÄ›. ZaÄíná od 01 v každém podadresáři."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Pořadí #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Nastavit poÄet souborů ve stejném adresáři jako zobrazený do pole poÄet "
+"skladeb."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Nastavit vybraným souborům tento poÄet skladeb"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Žánr:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Nastavit vybraným souborům tento žánr"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Poznámka:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Nastavit vybraným souborům tuto poznámku"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Skladatel:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Nastavit vybraným souborům tohoto skladatele"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Původní umělec:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Nastavit vybraným souborům tohoto původního umělce"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Copyright:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Nastavit vybraným souborům tento copyright"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Nastavit vybraným souborům tuto URL"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Enkódováno:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Nastavit vybraným souborům tento enkodér"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Obrázky"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Obrázky:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Pro přidání obrázku můžete použít drag and drop."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Nastavit vybraným souborům tyto obrázky"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Odstranit vybrané obrázky, jinak všechny obrázky."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Přidat obrázky do tagu (i drag and drop)"
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Uložit vybrané obrázky na pevný disk."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Nastavit vlastnosti vybraných obrázků."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Vybraným souborům byl nastaven název '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Z vybraných souborů byl vymazán název."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Vybraným souborům byl nastaven autor '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Z vybraných souborů byl vymazán autor."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Vybraným souborům bylo nastaveno album '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Z vybraných souborů bylo vymazáno album."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Vybraným souborům bylo nastaveno Äíslo disku '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Z vybraných souborů bylo vymazáno Äíslo disku."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Vybraným souborům byl nastaven rok '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Z vybraných souborů byl vymazán rok."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Vybraným souborům bylo nastaveno pořadí 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Vybraným souborům bylo nastaveno pořadí 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Z vybraných souborů bylo vymazáno pořadí skladby."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Vybrané skladby byly sekvenÄnÄ› oÄíslovány."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Vybraným souborům byl nastaven žánr '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Z vybraných souborů byl vymazán žánr."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Vybraným souborům byla nastavena poznámka '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Z vybraných souborů byla vymazána poznámka."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Vybraným souborům byl nastaven skladatel '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Z vybraných souborů byl vymazán skladatel."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Vybraným souborům byl nastaven původní umělec '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Z vybraných souborů byl vymazán původní umělec."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Vybraným souborům byl nastaven copyright '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Z vybraných souborů byl vymazán copyright."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Vybraným souborům byla nastavena URL '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Z vybraných souborů byla vymazána URL."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Vybraným souborům byl nastaven enkodér '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Z vybraných souborů byl vymazán enkodér."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Vybraným souborům byly nastaveny obrázky."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Z vybraných souborů byly vymazány obrázky."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Vyberte Mód a Masku, a zopakujte stejnou akci"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Všechny tagy byly naskenovány"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Všechny tagy byly vymazány"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Všechny soubory byly uloženy..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Některé soubory nebyly uloženy..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Některé soubory nebyly vymazány..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Všechny soubory byly vymazány..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Chcete zapsat tag do souboru\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Zapsat tag..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Přejmenovat soubor a adresář..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Chcete přejmenovat soubor a adresář\n"
+"'%s'\n"
+"na \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Přejmenovat adresář... "
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Chcete přejmenovat adresář \n"
+"'%s'\n"
+"na \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Přejmenovat soubor..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Chcete přejmenovat soubor \n"
+"'%s'\n"
+"na \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Zapisování tagu do '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Tagy zapsány"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Nelze zapsat tag do souboru '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Přejmenování souboru '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nelze přejmenovat soubor '%s'\n"
+" na \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Soubor(y) nebyly přejmenovány..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Nelze přejmenovat soubor \n"
+"'%s'\n"
+"protože soubor stejného názvu již existuje:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nemohu vytvořit cílový adresář\n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Soubor '%s' přejmenován na '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Soubor(y) přejmenovány..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nemohu odstranit starý adresář\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Soubor '%s' přejmenován na '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Soubor(y) přejmenovány..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nemohu přesunout soubor '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Soubor(y) nebyl přesunut..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Opravdu chcete definitivnÄ› vymazat soubor\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Vymazání souboru..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Soubor '%s' byl vymazán"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Nelze Äíst adresář :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Probíhá hledání..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Soubor: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Nalezeno %d souborů v tomto adresáři a jeho podadresářích."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Nalezeno %d souborů v tomto adresáři."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u souborů"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Nebyl nalezen žádný soubor v tomto adresáři a jeho podadresářích!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Nebyl nalezen žádný soubor v tomto adresáři!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Hledání..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " PŘERUŠIT vyhledávání... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Vyberte adresář, který se bude procházet!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Nastavit vybraným souborům tento název"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Konvertovat '_' a '%20' na mezery"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Konvertovat ' ' na '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Všechno velkými písmeny"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Všechno malými písmeny"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "První písmeno velké"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "První písmeno každého slova velké"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Smazat mezery"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Vložit mezeru před velká písmena"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Vymazat dvojité mezery nebo podtržítka"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Nestandardní ukonÄení! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, c-format
+msgid "Received signal %s (%d)"
+msgstr "Zachycen signál %s (%d)"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Nejspíše jste nalezli chybu v EasyTAGu. Prosím, zašlete informaci chybě s "
+"gdb výpisem zásobníku ('gdb easytag core' potom 'bt' a 'l') na adresu "
+"<easytag@gmail.com>"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Neznámy signál"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Použití: easytag [VOLBA] \n"
+" nebo: easytag [ADRESÃŘ]\n"
+"\n"
+"Volby:\n"
+"-------\n"
+"-h, --help Zobrazí tento text a skonÄí.\n"
+"-v, --version Vypíše základní informace a skonÄí.\n"
+"\n"
+"Adresář:\n"
+"----------\n"
+"/cesta_k/souborům Použije absolutní cestu,\n"
+"., ./ NaÄte aktuální adresář.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Standardní ukonÄení"
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Některé soubory byly modifikovány, ale nebyly uloženy...\n"
+"Chcete je pÅ™ed ukonÄením programu uložit ?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Opravdu chcete ukonÄit program? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3 Tag"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis Tag"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Tag"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE Tag"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "MP4/M4A/AAC Tag"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr "Wavpack Tag"
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3 soubor"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2 soubor"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis soubor"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Další soubor"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC soubor"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MusePack soubor"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey Audio soubor"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "MP4/AAC soubor"
+
+#: src/et_core.c:2599
+msgid "Wavpack File"
+msgstr "Wavpack soubor"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Obrázky"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Nemohu převést název souboru : '%s'\n"
+"do systémového kódování\n"
+"(Zkuste nastavit proměnnou prostředí G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Překlad názvu souboru"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "Název souboru '%s' pÅ™ekroÄil %d znaků a proto bude zkrácen!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Enkodér:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Channels:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "CHYBA při otevírání souboru: '%s' jako FLAC (%s)."
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "CHYBA: Selhalo zapsání komentářů do souboru '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Zapsán tag do '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Vymazán tag z '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Chyba při mazání ID3v1 tagu v '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Chyba při mazání ID3v2 tagu v '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Chyba při úpravě ID3v2 tagu v '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Chyba při úpravě ID3v1 tagu v '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Upraven tag v '%s'"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Neohlášena žádná chyba"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Není dostupná žádná pamět"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Žádná data pro parsování"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Chybně zformátovaná data"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Nebyl nalezen buffer pro zápis"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Buffer je přlož nový"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Chybné ID rámce"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Požadované pole nebylo nalezeno"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Neznámé pole"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Tag v souboru již je"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Chybná verze tagu"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Nebyl nalezen soubor pro parsování"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Pokus o zápis do read-only souboru"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Chyba při kompresi/dekompresi"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Neznámá chyba!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Protože by následující poškozený soubor: '%s'\n"
+"způsobil chybu v id3lib, nebude programem zpracován."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Poškozený soubor..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr "Log"
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Ano "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Ne "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Použít "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Uložit "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Zrušit "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Zavřít "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Zapsat "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Spustit "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr "Hledání..."
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " Procházet... "
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Vybrat adresář..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Vybrat soubor..."
+
+#: src/misc.c:886
+msgid "Warning..."
+msgstr "Varování..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr "Nebyl nastaven audio pÅ™erávaÄ!"
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Nemohu spustit %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Vygenerovat seznam skladeb"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "Název seznamu M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Použít název adresáře"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Upravit masku"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Možnosti seznamu skladeb"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Zahrnout pouze vybrané soubory"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Pokud je aktivováno, budou do seznamu skladeb zapsány pouze vybrané soubory. "
+"Jinak budou zapsány všechny soubory."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Použít celou cestu k souborům v seznamu"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Použít relativní cestu k souborům v seznamu"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Vytvořit seznam skladeb v nadřazeném adresáři"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Pokud je aktivováno, bude se seznam skladeb vytvářet v nadřazeném adresáři."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Používat DOSovský oddÄ›lovaÄ adresářů"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Tato volba nahrazuje UNIXovský oddÄ›lovaÄ adresářů '/' na DOSovský oddÄ›lovaÄ "
+"'\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Obsah seznamu skladeb"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Zapsat jen seznam souborů"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Zapsat informace za použití názvu souboru"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Zapsat informace za použití:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Soubor seznamu skladeb '%s' již existuje!\n"
+"Přepsat?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Zapsat seznam skladeb..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Nelze zapsat do souboru seznamu skladeb '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Zapsán soubor seznamu skladeb '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Pořadí"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Poznámka"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Skladatel"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Původní umělec:"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Copyright"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Enkódováno"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Najít soubor"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Napište výraz pro vyhledávání mezi soubory. Nebo nepište nic pro zobrazení "
+"všech souborů."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "V :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "Název souboru"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "Tag"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Rozlišovat velikost písmen"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Nalezeno %d souborů"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Nahrát názvy souborů z TXT souboru."
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Soubor :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Nahrát "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "NaÄten obsah souboru :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Seznam souborů :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"PÅ™i spuÅ¡tÄ›ní této volby, po naÄtení názvů souboru, bude spuÅ¡tÄ›n aktuální "
+"skener (okno skeneru musí být otevřeno)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Vložit prázdný řádek"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Vymazat tento řádek"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Vymazat všechny prázdné řádky"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Obnovit"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Audio"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Neznámý"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "Neplatný formát MP4"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr "Stereo"
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr "Joint stereo"
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr "Dual channel"
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr "Single channal"
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Opakovat akci pro zbytek souborů"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+"Ogg Vorbis: specifikovaný stream neexistuje, nebo byl soubor nesprávně "
+"inicializován (soubor: '%s')."
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr "Ogg Vorbis: pÅ™i Ätení z média doÅ¡lo k chybÄ› (soubor: '%s')."
+
+#: src/ogg_header.c:134
+#, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Ogg Vorbis: toto nejsou Vorbis data (soubor: '%s')."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr "Ogg Vorbis: neshoda verzí Vorbis (soubor: '%s')."
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr "Ogg Vorbis: neplatná hlaviÄka streamu Vorbis (soubor: '%s')."
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+"Ogg Vorbis: vnitřní logická chyba signalizující bug, nebo poškození "
+"zásobníku (soubor: '%s')."
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "CHYBA: Selhalo otevření souboru: '%s' jako vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Varování : Soubor Ogg Vorbis '%s' obsahuje ID3v2 tag."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Přidat obrázky"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "VÅ¡echny soubory"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG a JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Vlastnosti obrázku %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Typ obrázku"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Popis obrázku:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Uložit obrázek %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Následující soubor již existuje :\n"
+"'%s'\n"
+"Chcete jej přepsat?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Uložit soubor..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "JPEG obrázek"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "PNG obrázek"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Neznámý obrázek"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "32x32 px PNG ikona souboru"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Jiná ikona souboru"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Přebal (přední)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Přebal (zadní)"
+
+#: src/picture.c:808
+#, fuzzy
+msgid "Leaflet page"
+msgstr "webová stránka"
+
+#: src/picture.c:810
+#, fuzzy
+msgid "Media (e.g. label side of CD)"
+msgstr "Velikost etikety (CD/DVD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Hlavní umÄ›lec/hlavní úÄinkující/sólista"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "UmÄ›lec/ÚÄinkující"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Dirigent"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Skupina/Orchestr"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "TextaÅ™"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Místo nahrávání"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Během nahrávání"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Během představení"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Zachytávání filmu/videa"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Pestrobarevná ryba"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Ilustrace"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Logo skupiny/umělce"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Logo vydavatele/studia"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Neznámý typ obrázku"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "pixely"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Typ"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Popis"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Nemohu zobrazit obrázek, protože nebyl naÄten dostatek dat k vytvoÅ™ení "
+"bufferu."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Nahrávám obrázek..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nemohu otevřít soubor :\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Soubor s obrázkem nebyl naÄten..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Nastavení..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "ProhlížeÄ souborů"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Přejít do výchozího adresáře"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Specifikuje adresář, kde jsou umístěny vaše soubory. Soubory z této cesty "
+"budou naÄteny, pokud je EasyTAG spuÅ¡tÄ›n bez parametru."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Automaticky hledat soubory v následujícím adresáři po spuštění EasyTAGu. "
+"Poznámka: Tato cesta může být přepsána, pokud je programu předán parametr "
+"(easytag /cesta_k/mp3_souborum)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Prohledávat podadresáře"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "Prohledávat podadresáře pÅ™i Ätení adresáře ve stromu."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Zobrazit podadresáře, když je vybrán adresář"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr "Rozbalí vybraný prvek v prohlížeÄí souborů a zobrazí podadresáře."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Prohledávat skryté adresáře"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "Prohledávat skryté adresáře (adresáře zaÄínající na '.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Uživatelské rozhraní"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Zobrazovat informace z hlaviÄky souboru"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Pokud je zapnuto, jsou pod polem s názvem souboru zobrazovány informace o "
+"souboru, jako je tok dat, Äas, velikost "
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Zobrazit změněné soubory:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "ÄervenÄ›"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "tuÄnÄ›"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Možnosti třídění"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Setřídit seznam souborů :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Vzestupně podle názvu souboru"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Sestupně podle názvu souboru"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Vzestupně podle pořadí skladby"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Sestupně podle pořadí skladby"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Vzestupně podle data vytvoření"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Sestupně podle data vytvoření"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Vzestupně podle názvu skladby"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Sestupně podle názvu skladby"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Vzestupně podle umělce"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Sestupně podle umělce"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Vzestupně podle názvu alba"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Sestupně podle názvu alba"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "VzestupnÄ› podle roku"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "SestupnÄ› podle roku"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Vzestupně podle žánru"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Sestupně podle žánru"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Vzestupně podle poznámky"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Sestupně podle poznámky"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Vyberte typ třídÄ›ní souborů pÅ™i naÄítání adresáře."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+"Po zapnutí této volby se bude při třídění brát ohled na velikost písmen"
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Pozice dialogu se zprávami"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "žádné specifické umístění"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Okna umístí správce oken."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "střed hlavního okna"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Okna budou umístěna ve středu hlavního okna."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "střed obrazovky"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Okna budou umístěna ve středu obrazovky."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "pozice kurzoru myši"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Okna budou umístěna na aktuální pozici kurzoru myši."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "PÅ™ehrávaÄ souborů"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "PÅ™ehrávaÄ :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Napište název programu, který používáte na přehrávání souborů. Některé "
+"programy potřebují vložit i další parametry (např 'xmms -p')."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Nastavení souborů"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Možnosti souboru"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "Nahradit neplatné znaky v názvu souborů (pro Windows a CD-Rom)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Konvertuje neplatné znaky pro FAT32/16 a ISO9660 + Joliet souborové systémy "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') v názvu souboru, aby se "
+"pÅ™edeÅ¡lo problémům pÅ™i pÅ™ejmenovávání souboru. Toto je užiteÄné pÅ™i "
+"přejmenovávání soubory z tagu skenerem."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Konvertovat připonu souborů na :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "malá písmena"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Přípona bude převedena na '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "všechno velkými písmeny"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Přípona bude převedena na '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "beze změn"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "Přípona nebude převedena"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Zachovat Äas modifikace souboru"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Zachovat Äas modifikace (ve vlastnostech souboru) pÅ™i ukládání souboru."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Znaková sada pro název souboru"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Pravidla pro případ, že nebude možné konvertovat některé znaky při zápisu "
+"názvu souboru:"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Vyzkoušet jinou znakovou sadu"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"S touto možností se zkusí převod do kódové stránky vašeho locale (např.: ISO-"
+"8859-1 pro 'fr', KOI8-R pro 'ru', ISO-8859-2 pro 'ro'). Pokud se to nezdaří, "
+"zkusí se kódová stránka ISO-8859-1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr "Vynutit systémovou znakovou sadu a aktivovat transliteraci"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Pokud nemůže být znak reprezentován v cílové znakové sadě, může být nahrazen "
+"jedním nebo několika přibližně podobnými znaky."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr "Vynutit systémovou znakovou sadu a zahazovat některé znaky"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Pokud nemůže být znak reprezentován v cílové znakové sadě, bude zahozen."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Nastavení tagů"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Možnosti tagování"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Automatické doplnění data, pokud není kompletní"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Zkusí doplnit rok, pokud vložíte jen poslední Äísla data (napÅ™, pokud "
+"souÄasný rok je 2005: 5 => 2005, 4 => 2004, 6 => 1996, 95 => 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Zapisovat pole pořadí skladby na zadanou délku :"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Pokud je zapnuto, je pole pořadí skladby doplněno z leva nulami na zadanou "
+"délku 'n' znaků (Např. pro dva znaky : '05', '09', '10'). Jinak ponechává "
+"původní hodnotu."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Soubory Ogg Vorbis : Zapsat komentář ve formátu XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS oproti jiným aplikacím nepoužívá korektní způsob pro identifikaci "
+"komentáře v Ogg Vorbis souborech. Standardně je toto pole identifikováno dle "
+"řetězce 'comment=', ale XMMS hledá pouze '='. Zakažte tuto volbu, pokud "
+"nechcete aby jiné aplikace hlásily 'neznámé pole'. Ale pak nebude komentář "
+"vidět ani v XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr "Zaměření pole při přepínání mezi soubory klávesami Page Up/Page Down:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Ponechat fokus ve stejném poli"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Vrátit fokus do prvního pole (Název)"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "Nastavení ID3 tagu"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Pravidla pro ID3 Tagy"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Zapsat ID3 tagy ve FLAC souborech s FLAC tagem"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Pokud je aktivováno, budou do FLAC souboru zapsány i ID3 tagy (podle dvou "
+"předchozích pravidel, plus FLAC tag). Jinak budou ID3 tagy odstraněny."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Odstranit tag, pokud jsou všechna pole prázdná"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Protože mohou ID3v2 tagy obsahovat i jiná data než Název, Autor, Album, Rok, "
+"Pořadí, Žánr nebo Poznámku (např. přiložený obrázek, text, ...), umožňuje "
+"tato volba vymazat celý tag, pokud je těchto sedm standardních polí prázdných"
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Automaticky konvertovat staré ID3v2 verze tagů"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Pokud je zapnuto, staré ID3v2 tagy (ID3v2.2) budou upraveny na ID3v2.3 verzi."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Zapisovat ID3v2 tag"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Znaková sada pro ID3 tagy"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Zapisovat ID3v2 tag"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Zapisovat ID3v2 tag"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Pokud je zapnuto, bude se na zaÄátek MP3 souborů pÅ™idávat nebo upravovat "
+"ID3v2 tag. V opaÄném případÄ› bude odstranÄ›n."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Popis:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Enkódováno"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Znaková sada použitá pro zápis dat tagu do souboru."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " Ne "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3 Tag"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Zapisovat ID3v1.x tag"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Pokud je zapnuto, bude se na konec MP3 souborů přidávat nebo upravovat ID3v1 "
+"tag. V opaÄném případÄ› bude odstranÄ›n."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Znaková sada použitá pro zápis dat tagu do souboru."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Znaková sada pro ID3 tagy"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Znaková sada použitá pro Ätení dat tagu v souboru."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Skener"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Vyplnění tagu - Konverze znaků"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Konvertovat podtržítko '_' a řetězec '%20' na mezeru ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Konvertovat mezeru ' ' na podržítko '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Pokud je zapnuto, bude se při aplikaci masky na tagy používat tato konverze."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Přejmenování souboru - Konverze znaků"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Pokud je zapnuto, bude se při aplikaci masky na soubory používat tato "
+"konverze."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Skenování tagu - Úpravy - Konverze znaků"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr "Nekonvertovat první písmena slov na velká v případě předložek."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Nekonvertovat první písmena slov na velká v případě předložek a slov jako "
+"feat., když používáte možnost 'První písmeno každého slova velké'."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Okno skeneru"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Otevřít okno skeneru při startu"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Zapněte tuto volbu pro automatické otevření okna skeneru při startu EasyTAGu."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Okno skeneru bude vždy navrchu"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Pokud je zapnuto, okno s maskami zůstane vždy nad hlavním oknem programu."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Pole"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Přepsat pole při skenování tagu"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Pokud je zapnuto, skener přepíše existující text v polích novou hodnotou. "
+"Pokud je vypnuto, budou vyplněny pouze prázdná pole tagu."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Nastavit tento text jako výchozí poznámku:"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Nastavte hodnotu, jestliže chcete, aby byl následující řetězec vždy vložen "
+"do pole poznámky při použití možnosti 'Naplň tag'."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "Použít CRC32 jako výchozí komentář (jen pro soubory s ID3 tagem)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"PÅ™i 'VyplnÄ›ní tagu' vypoÄítá hodnotu CRC-32 souboru a zapíše ji do pole "
+"komentáře."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "CD databáze"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "Nastavení serveru pro automatické hledání"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Název :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Port :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI Cesta :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "Nastavení serveru pro manuální hledání"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+msgid "Local CD Data Base"
+msgstr "Lokální CD databáze"
+
+#: src/prefs.c:1203
+msgid "Path :"
+msgstr "Cesta :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+"UrÄete adresář, ve kterém je uložena místní CD databáze. Místní databáze "
+"obsahuje těchto jedenáct adresářů: 'blues', 'classical', 'country', 'data', "
+"'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' a 'misc'."
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Nastavení proxy"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Použít proxy"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Pro připojení k serveru používat proxy."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Server :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Název proxy serveru."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Port proxy serveru."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Login :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Jméno uživatele pro proxy serveru."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Heslo :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Heslo uživatele pro proxy server."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Seznam názvů skladeb"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"Vybrat příslušný soubor (podle pozice nebo DLM pokud je aktivováno níže)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Pokud je aktivováno, bude v případě výběru řádku v seznamu názvů skladeb "
+"vybrán i odpovídající řádek v hlavním seznamu."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Použít Levenshteinův algoritmus (DLM) k porovnání řádků (podle název) s "
+"audio soubory (podle názvu souboru)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Potvrzování"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Potvrdit opuštění programu"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Pokud je zapnuto, otevře se dialogové okno s potvrzením při zavírání "
+"programu."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Potvrdit zápis tagu do souboru"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Potvrdit přejmenování souboru"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Potvrdit smazání souboru"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Potvrdit zápis seznamu skladeb."
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Použije změny (ale neuloží) a zavře okno"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Zavře toto okno bez uložení"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Uloží změny a zavře toto okno"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Příklad : %.*d_-_Nazev_stopy_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Změny byly použity"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Konfigurace uložena"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Konfigurace nebyla změněna"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" Nastavená cesta jako 'Výchozí cesta k souborům' není platná!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Není adresář"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "Nemohu nalézt audio pÅ™ehrávaÄ '%s'!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Vyplnit tag"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Přejmenovat soubor a adresář"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Upravit"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Tag byl úspěšně naskenován..."
+
+#: src/scan.c:352
+#, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Tag byl úspěšně naskenován...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr "Skener: oops..., přípona '%s' nebyla v názvu souboru '%s' nalezena!"
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Chyba skenování: nelze nalézt oddÄ›lovaÄ '%s' pÅ™ed '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "Nemohu převést název souboru '%s' do systémového kódování."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Nový název souboru byl úspěšně naskenován..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Nový název souboru byl úspěšně naskenován...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Skenování tagu a názvu souboru"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Skener :"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Vyberte druh skenování"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Otevřít okno skeneru / Naskenovat oznaÄené soubory"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Možnosti skenování"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Zobrazit / Skrýt editor masky"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Zobrazit / Skrýt legendu"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Zavřít toto okno"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Vyberte nebo napiště masku, vytvořenou z kódů (viz Legenda), podle které se "
+"budou plnit pole tagu z názvu souboru a cesty."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Náhled tagu..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr ""
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Vyberte nebo napište masku za použití kódů (viz Legenda) ke zpracování polí "
+"tagu. Použití pro přejmenování souboru.\n"
+"Použijte / k vytvoření adresářů. Pokud je prvním znakem /, znamená to "
+"absolutní cestu, jinak je cesta relativní."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Náhled nového názvu souboru..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Vyberte pole:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"TlaÄítka vpravo reprezentují pole, které se budou upravovat. Vyberte ty, "
+"které chcete upravit."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "S"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Upravit pole názvu souboru"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "N"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Upravit název skladby"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Au"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Upravit autora"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Upravit album"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Upravit pole žánru"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "P"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Upravit poznámku"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "S"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Upravit pole skladatele"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "P"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Upravit pole původního umělce"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Upravit pole copyrightu"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Upravit pole URL"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Upravit pole názvu enkodéru"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Invertovat výběr"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "OznaÄit/OdznaÄit vÅ¡e."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Konvertovat '_' a '%20' na mezery"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Konvertovat :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "na : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Podtržítka nebo řetězec '%20' budou nahrazovány jednou mezerou. Příklad, "
+"před: 'Text%20In%20An_Entry', po: 'Text In An Entry'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Mezera bude nahrazována jedním podtržítkem. Příklad, před: 'Text In An "
+"Entry', po: 'Text_In_An_Entry'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Nahradí znak jiným znakem."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Všechna slova budou převedena na velká písmena. Příklad, před: 'Text IN AN "
+"entry', po: 'TEXT IN AN ENTRY'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Všechna slova budou převedena na malá písmena. Příklad, před: 'TEXT IN an "
+"entry', po: 'text in an entry'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"První písmeno prvního slova bude převedeno na velké. Příklad, před: 'text IN "
+"An ENTRY', po: 'Text in an entry'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"První písmeno každého slova bude převedeno na velké. Příklad, před: 'Text in "
+"an ENTRY', po: 'Text In An Entry'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Vkládat mezeru před velká písmena"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Odstranit dvojité mezery nebo podtržítka"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Mezery mezi slovy budou odstraňovány. Příklad, před: 'Text In An Entry', po: "
+"'TextInAnEntry'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Před každé velké písmeno bude vložena mezera. Příklad, před: "
+"'TextInAnEntry', po: 'Text In An Entry'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Dvojité mezery nebo podtržítka budou odstraňovány. Příklad, před: "
+"'Text__In__An Entry', po: 'Text_In_An Entry'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Legenda"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : autor"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : poznámka"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : skladatel"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : copyright"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : Äíslo disku"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : enkódoval"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : žánr"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ignorováno"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : poÄet skladeb"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : pův. umělec"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : pořadí"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : název"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : rok"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Editor masky"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Vytvořit novou masku"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Posunout masku nahoru"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Posunout masku dolů"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Duplikovat masku"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Přidat základní masky"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Odebrat masku"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Uložit masky"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Nová_maska"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Kopírování: Nebyl vybrán žádný řádek!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Odebrání: Nebyl vybrán žádný řádek!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Posun nahoru: Nebyl vybrán žádný řádek!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Posun dolů: Nebyl vybrán žádný řádek!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "CHYBA: Nemohu zapsat konfiguraÄní soubor: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Nelze naÄíst konfiguraÄní soubor '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "NaÄítá se výchozí konfigurace..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Nelze vytvořit nebo otevřít soubor '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "CHYBA: Nemohu zapsat seznam do souboru: %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "NaÄítám výchozí masky pro vyplnÄ›ní tagů..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "NaÄítám výchozí masky pro pÅ™ejmenování souborů..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "NaÄítám výchozí masky pro pÅ™ejmenování adresářů..."
+
+#: src/setting.c:1589
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr "CHYBA: Proměnná prostředí HOME není definována!"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "CHYBA: Nelze vytvořit adresář '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Vstup zkrácen nebo je prázdný."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Vstup není Ogg bitstream."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Chyba pÅ™i Ätení první stránky Ogg bitstreamu."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Chyba pÅ™i Ätení poÄáteÄní hlaviÄky paketu."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Ogg bitstream neobsahuje vorbis data."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Chybná sekundární hlaviÄka."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "Konec souboru pÅ™ed hlaviÄkou vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "PoÅ¡kozená nebo chybná data, pokraÄuji..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Chyba při zápisu proudu do výstupu. Výstupní proud může být poškozen nebo "
+"zkrácen."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr "DLL '%s' nebyla nalezena. Zkuste jí naÄíst..."
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr "DLL '%s' nelze naÄíst"
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr "Tato verze '%s' obsahuje '%s'"
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr "Funci '%s' nebyla v dll '%s' nalezena"
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, c-format
+msgid "Audio player: '%s'"
+msgstr "Audio pÅ™ehrávaÄ: '%s'"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr "Adresář s nastavením EasyTag: '%s'"
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Chybná verze tagu"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Použít padding"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Nastavit padding v ID3v2 tagu pro rychlejší zápis v případě dalších změn "
+#~ "v tagu."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Vždy ukládat tagy ve znakové sadě ISO-8859-1"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "K zápisu tagu použít znakovou sadu ISO-8859-1. Tato znaková sada může být "
+#~ "použita pro ID3v2 a ID3v1 tagy, ale mějte na paměti, že znaky mimo ISO-"
+#~ "8859-1 budou ztraceny.\n"
+#~ "\n"
+#~ "Pokud je zvolena odlišná znaková sada, bude použita namísto ISO-8859-1.\n"
+#~ "Mohou být nadefinována pravidla pro případ, že některé znaky nemohou být "
+#~ "převedeny."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Vyzkoušet uložení tagu v ISO-8859-1. Pokud to není možné, použít UNICODE "
+#~ "(doporuÄeno)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Pokud převod do ISO-8859-1 selže, použije se znaková sada UNICODE. "
+#~ "Unicode může být použito pro ID3v2, nikoli pro ID3v1 tagy, které "
+#~ "používají single byte znakovou sadu (výchozí je ISO-8859-1).\n"
+#~ "\n"
+#~ "Pokud je vybrána odlišná znaková sada, použije se namísto ISO-8859-1.\n"
+#~ "Mohou být nadefinována pravidla pro případ, že některé znaky nemohou být "
+#~ "převedeny."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Vždy ukládat tagy ve znakové sadě UNICODE"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Použít UNICODE pro ID3v2 tagy. ID3v1 tagy budou vždy uloženy v single "
+#~ "byte znakové sadě (výchozí ISO-8859-1).\n"
+#~ "\n"
+#~ "Pokud je vybrána jiná znaková sada, použije se namísto ISO-8859-1."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "Pole s ISO-8859-1 přepsat následující znakovou sadou (pouze pro experty):"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "Použít nestandardní znakovou sadu pro Ätení ID3 tagů:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "Použít nestandardní znakovou sadu pro zápis ID3 tagů:"
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Tato znaková sada bude použita pro zápis tagů při konverzi řetězců "
+#~ "uložených v ISO-8859-1 (pro ID3v2 nebo / a ID3v1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "Pro pole s ISO-8859-1 použít tato pravidla v případě, že některé znaky "
+#~ "nemohou být převedeny:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Nedělat nic"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr "Vnutit použití znakové sady a aktivovat transliteraci"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr "Vnutit používání znakové sady a zahazovat některé znaky"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "Konverze znakové sady z '%s'\n"
+#~ "do '%s' není podporována!"
+
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "CHYBA při otevírání souboru: '%s' (%s)"
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "NaÄítat soubory v adresáři ihned po spuÅ¡tÄ›ní"
diff --git a/po/da.gmo b/po/da.gmo
new file mode 100644
index 0000000..ea9b361
--- /dev/null
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 0000000..d8a2e59
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,5149 @@
+# Danish translation of easytag.
+# Copyright (C) 2004-2005 Free Software Foundation, Inc.
+# Morten Brix Pedersen <morten@wtf.dk>, 2004-2005.
+#
+# This file is distributed under the same license as the easytag package.
+#
+# Kommentarer:
+# samplerate er ikke blevet oversat, i mangel af bedre ord.
+# encoder er ikke blevet oversat, i mangel af bedre ord.
+msgid ""
+msgstr ""
+"Project-Id-Version: easytag 1.99.11\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2005-12-18 14:36+0200\n"
+"Last-Translator: Morten Brix Pedersen <morten@wtf.dk>\n"
+"Language-Team: Danish <dansk@klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG er et program til at vise og redigere mærker på MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack og Monkey's Audio-filer. Det er en simpel og "
+"lækker GTK+ grænseflade, som gør mærkning nemmere under GNU/Linux."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Tysk oversættelse)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Russisk oversættelse)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Hollandsk oversættelse)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Svensk oversættelse)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Ungarsk oversættelse)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Italiensk oversættelse)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Japansk oversættelse)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Ukrainsk oversættelse)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Tjekkisk oversættelse)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Spansk oversættelse)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Polsk oversættelse)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Rumænsk oversættelse)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Dansk oversættelse)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Græsk oversættelse)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Brasiliansk-portugisisk oversættelse)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(Bulgarsk oversættelse)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(Japansk oversættelse)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Græsk oversættelse)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Om..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Om"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(kompileret: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(bruger: GTK+ %d.%d.%d og id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(MP3 filunderstøttelse slået fra)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(MP3 filunderstøttelse slået fra)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(MP3 filunderstøttelse slået fra)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(MP3 filunderstøttelse slået fra)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Ogg Vorbis filunderstøttelse slået fra)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(MP3 filunderstøttelse slået fra)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(FLAC filunderstøttelse slået fra)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(MP4/AAC filunderstøttelse slået fra)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(MP3 filunderstøttelse slået fra)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Forfatter: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Hjemmeside: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Beskrivelse:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Tak"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Oversættelser:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Generelt:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Ændringer"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Kan ikke åbne fil '%s' (%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "FEJL ved åbning af fil: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Fil"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Sortér liste efter mærke"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Sortér liste efter egenskab"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Filnavn opadgående"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Filnavn nedadgående"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Oprettelsesdato opadgående"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Oprettelsesdato nedadgående"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Spornummer opadgående"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Spornummer nedadgående"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Titel opadgående"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Titel nedadgående"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Kunstner opadgående"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Kunstner nedadgående"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Album opadgående"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Album nedadgående"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "År opadgående"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "År nedadgående"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Genre opadgående"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Genre nedadgående"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Kommentar opadgående"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Kommentar nedadgående"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Komponist opadgående"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Komponist nedadgående"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Original kunstner opadgående"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Original kunstner nedadgående"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Ophavsret opadgående"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Ophavsret nedadgående"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "URL opadgående"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "URL nedadgående"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Encoder-navn opadgående"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Encoder-navn nedadgående"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Filtype opadgående"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Filtype nedadgående"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Filstørrelse opadgående"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Filstørrelse nedadgående"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Længde opadgående"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Længde nedadgående"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Bithastighed opadgående"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Bithastighed nedadgående"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Samplerate opadgående"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Samplerate nedadgående"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Ã…bn fil(er) med ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Vælg alle filer"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Fravælg alle filer"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Invertér filvalg"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Slet fil(er)"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Første fil"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Første fil"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "_Forrige fil"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Forrige fil"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "_Næste fil"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Næste fil"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "_Sidste fil"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Sidste fil"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "S_can fil(er)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Scan fil(er)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Fjern mærke(r)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Fjern mærke(r)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "_Fortryd ændringer på sidste fil(er)"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Fortryd ændringer på sidste fil(er)"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "_Omgør ændringer på sidste fil(er)"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Omgør ændringer på sidste fil(er)"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Gem fil(er)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Gem fil(er)"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "_Tving gemning af fil(er)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Tving genmning af fil(er)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Fortryd sidste ændringer"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Omgør sidste ændringer"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Afslut"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Afslut"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Browser"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "GÃ¥ til _hjemmemappe"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "GÃ¥ til hjemmemappe"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "GÃ¥ til _standardmappe"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "GÃ¥ til standardmappe"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Sæt _nuværende sti som standard"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Sæt nuværende sti som standard"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Træ-visning | Kunstner-Album-visning"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Omdøb mappe ..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Genindlæs mappe"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Gennemse mappe med ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Kollaps træ"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Opdatér træ"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "S_canner"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Udfyld mærke(r) ..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Udfyld mærke(r) ..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Omdøb fil(er) og mappe ..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Omdøb fil(er) og mappe ..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Behandl felt(er) ..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Behandl felt(er) ..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Diverse"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Søg _fil(er) ..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Søg fil(er)..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "CDDB søgning ..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB søgning ..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Hent filnavne fra TXT ..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Skriv spilleliste ..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Kør musikafspiller"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Opsætning"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Indstillinger ..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Indstillinger ..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Hjælp"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Om"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Stop den nuværende handling"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_Filhandlinger"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "CDDB søg fil(er)..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Gennemse _undermapper"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Vis skjule mapper"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Vis træ-browser / Vis ved kunstner og album"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Kunne ikke flette UI, fejl var: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Klar til at starte..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Ny standardsti for filer valgt"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Bekræft..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Nogle filer er blevet ændret, men ikke gemt...\n"
+"Vil du gemme dem, før du ændrer mappe?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Den indtastede sti er ugyldig!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Fejl..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "# Albums"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Fejl: Søgning efter %s, kunne ikke finde node %s i træ."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Kunstner"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Albums"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Filer"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "GÃ¥ et niveau op"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Indtast en mappe at gennemse."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Træ"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Kunstner & Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Omdøb mappen"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Omdøb mappen '%s' til : "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Brug maske :"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "Hvis aktiveret, vil masker blive brugt til at omdøbe mappen."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Vælg eller indtast en maske vha. koder (se signatur i skannervinduet) til at "
+"omdøbe mappen fra mærke-felter."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Ugyldig scanner maske"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Omdøb mappeforvisning..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Du skal indtaste et mappenavn!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr "Kunne ikke konvertere '%s' til filnavnets tegnsæt. Brug et andet navn."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Kan ikke omdøbe fordi det mappenavn allerede findes!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan ikke omdøbe mappe \n"
+"'%s'\n"
+" til \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Mappe omdøbt"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Program der skal køres :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Indtast programmet der skal køres. Det vil modtage den nuværende mappe som "
+"parameter."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Ã…bn fil med ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Indtast programmet der skal køres. Det vil modtager den nuværende fil som "
+"parameter."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Du skal indtaste et programnavn!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Programmet '%s' blev ikke fundet!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Kan ikke køre %s (fejl %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Kan ikke 'fork' endnu en process!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Kørte kommando : '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Kunstner / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Kategori"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Spornavn"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Tid"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "CDDB søgning"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Automatisk søgning"
+
+#: src/cddb.c:284
+#, fuzzy
+msgid "Request CD database :"
+msgstr "Send anmodning til FreeDB database:"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Anmod automatisk CDDB-databasen med de valgte filer (rækkefølgen er vigtig!) "
+"for at generere CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Stop søgningen ..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Når du aktiverer denne indstilling, efter indlæsning af felterne, vil den "
+"nuværende valgte scanner blive kørt (scannervinduet skal være åbent)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Manuel søgning"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Ord :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr ""
+"Indtast ordene der skal søges efter (separeret med mellemrum eller '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Søg i :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Alle felter"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Andre"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Alle kategorier"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Klassisk"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folkesang"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Diverse"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Soundtrack"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "inkluderet : funk, soul, rap, pop, industrial, metal, osv."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "film, shows"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "andre der ikke passer ind i ovenstående kategorier"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " Kategorier "
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Resultater :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Søg :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Indtast ordene at søge efter i listen forneden"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Søg næste"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Søg forrige"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "Vis kun røde linjer/ Vis alle linjer"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Fravælg alle linjer"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Invertér linjevalg"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Vælg alle linjer"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Vælg linjer der skal 'anvendes' på din filliste. Bemærk at alle linjer vil "
+"blive behandlet hvis ingen linjer er valgt.Du kan også ændre rækkefølgen på "
+"linjer i denne liste før du bruger 'anvend' knappen."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Sæt ind i :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Alle"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Filnavn"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Titel"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Ã…r"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Spor #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# Spor"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Genre"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Kør den nuværende scanner for hver enkel fil"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"NÃ¥r denne indstilling er aktiveret, vil Levenshtein algoritmen (DLM : "
+"Damerau-Levenshtein Metric) blive brugt til at konvertere CDDB-titlen imod "
+"hvert filnavn i den nuværende mapper, og for at vælge den bedste match. "
+"Dette vil blive brugt når der bliver valgt en tilsvarende lydfil, eller "
+"anvendelse af cddb-resulatater, i stedet for at bruge positionsrækkefølgen."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Indlæs de valgte linjer eller alle linjer (hvis ingen linje valgt)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Klar til at søge..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album: '%s', kunstner: '%s', længde: '%s', år: '%s', genre: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Invertér valg"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Sortér efter spornummer"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Sortér efter spornavn"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Slår værtsnavn '%s' op ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Kunne ikke slå værtsnavn '%s' op (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Kan ikke oprette en ny socket (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Forbinder til vært '%s', port '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Kan ikke forbinde til vært '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Forbundet til vært '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Modtager svar (%s) ..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Fejl under fjernelse af ID3v1 mærke på '%s' (%d)\n"
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Kan ikke oprette eller åbne fil '%s' (%s)\n"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Kan ikke åbne fil '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Sender anmodning ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Kunne ikke sende anmodning (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Modtager data ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+#, fuzzy
+msgid "The server returned a wrong answer!"
+msgstr "Serveren returnerede forkert svar! (%s)"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Serveren returnerede forkert svar! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Desværre, web-baseret søgning virker ikke i øjeblikket!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Fandt %d matchende album(s)"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Modtager svar (%s) ..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Modtager svar (%s) ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Ingen filer valgt!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d fil(er) valgt"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Klar til at søge..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Sender anmodning (CddbId: %s, #tracks: %d, disk længde: %d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Fandt %d matchende album(s)"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Kan ikke åbne fil '%s' (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Henter albums sporliste ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Vær forsigtig, du anvender %d linjer af CDDB-resultater på %d linjer i "
+"listen over filer!\n"
+"\n"
+"Vil du fortsætte?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Skriver mærke fra CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arabisk (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabisk (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arabisk (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltisk (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltisk (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Baltisk (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtisk (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Centraleuropæisk (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Centraleuropæisk (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Centraleuropæisk (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Simplificeret kinesisk (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Simplificeret kinesisk (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Traditionelt kinesisk (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Traditionelt kinesisk (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Kyrillisk (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kyrillisk (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kyrillisk (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kyrillisk (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kyrillisk (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Kyrillisk/Russisk (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Kyrillisk/Ukrainsk (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Engelsk (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Græsk (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Græsk (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hebraisk (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebraisk (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japansk (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japansk (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japansk (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Koreansk (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordisk (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Sydeuropæisk (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Thailandsk (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Tyrkisk (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Tyrkisk (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Tyrkisk (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamesisk (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamesisk (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Visuelt hebraisk (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Vestlig (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Vestlig (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Vestlig (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Vestlig (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Filnavnet '%s' kunne ikke konverteres til UTF-8 (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "Ugyldig UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr "UTF-8 strengen '%s' kunne ikke konverteres til filnavnstegnsæt (%s)\n"
+
+#: src/charset.c:705
+#, fuzzy, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Filnavnet '%s' kunne ikke konverteres til UTF-8 (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Starter EasyTAG %s (PId: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Bruger id3lib version %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Bruger id3lib version %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Omdøber fil '%s'"
+
+#: src/easytag.c:195
+#, fuzzy, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "Bruger locale '%s' (og senere '%s')...\n"
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s af %s (kompileret %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Hjemmeside: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Browser"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Fil"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Fil med kun læseadgang"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Fillænke ødelagt"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Layer ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Bithastighed:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Frek:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Mode:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Størrelse:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Tid:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Mærke"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Fælles"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Titel:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Mærk valgte filer med denne titel"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Kunstner:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Mærk valgte filer med denne kunstner"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Mærk valgte filer med dette albumnavn"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Mærk valgte filer med dette disknummer"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Ã…r:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Mærk valgte filer med dette år"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Giv numre til valgte spor sekventielt. Starter ved 01 i hver undermappe."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Spor #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Sæt antallet af filer, i den samme mappe som den viste fil, til det valgte "
+"antal spor."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Mærk valgte filer med dette antal spor"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Genre:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Mærk valgte filer med denne genre"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Mærk valgte filer med denne kommentar"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Komponist:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Mærk valgte filer med denne komponist"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Orig. kunstner:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Mærk valgte filer med denne originale kunstner"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Ophavsret:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Mærk valgte filer med denne ophavsret"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Mærk valgte filer med denne URL"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Encoded af:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Mærk valgte filer med denne encoders navn"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Billeder"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Billeder:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Du kan bruge træk-og-slip for at tilføje et billede."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Mærk valgte filer med disse billeder"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Fjern valgte billeder, ellers alle billeder."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Tilføj billeder til mærket (træk-og-slip kan også bruges)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Gem de valgte billeder på harddisken."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Sæt egenskaber på valgte billeder."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Valgte filer mærket med titlen '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Fjernede titel fra valgte filer."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Valgte filer mærket med kunstneren '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Fjernede kunstner fra valgte filer."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Valgte filer mærket med album '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Fjernede albumnavn fra valgte filer."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Valgte filer mærket med disknummer '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Fjernede disknummer fra valgte filer."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Valgte filer mærket med år '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Fjernede år fra valgte filer."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Valgte filer mærket med spor som 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Valgte filer mærket med spor som 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Fjernede spornummer fra valgte filer."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Valgte spor givet numre sekventielt."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Valgte filer mærket med genre '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Fjernede genre fra valgte filer."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Valgte filer mærket med kommentar '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Fjernede kommentar fra valgte filer."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Valgte filer mærket med komponist '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Fjernede komponist fra valgte filer."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Valgte filer mærket med original kunstneren '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Fjernede original kunstner fra valgte filer."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Valgte filer mærket med ophavsret '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Fjernede ophavsret fra valgte filer."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Valgte filer mærket med URL '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Fjernede URL fra valgte filer."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Vælg filer mærker med encoder-navn '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Fjern encoder-navn fra valgte filer."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Valgte filer mærket med billeder."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Fjernede billeder fra valgte filer."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Vælg mode og maske, og omgør den samme handling"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Alle mærker er blevet scannet"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Alle mærker er blevet fjernet"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Alle filer er blevet gemt..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Filer er blevet delvist gemt..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Filer er blevet delvist slettet..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Alle filer er blevet slettet..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Vil du skrive mærket på filen\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Skriv mærke..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Omdøb fil og mappe..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vil du omdøbe filen og mappen \n"
+"\n"
+"'%s'\n"
+"til \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Omdøb mappe ..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vil du omdøbe mappen \n"
+"'%s'\n"
+"til \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Omdøb fil..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vil du omdøbe filen \n"
+"'%s'\n"
+"til \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Skriver mærker på '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Mærke(r) skrevet"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Kan ikke skrive mærke til fil '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Omdøber fil '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan ikke omdøbe fil '%s'\n"
+" til \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Fil(er) ikke omdøbt..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Kan ikke omdøbe fil \n"
+"'%s'\n"
+"fordi den følgende fil allerede eksisterer:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan ikke oprette målmappe\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Omdøbte fil '%s' til '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Fil(er) omdøbt..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan fjerne gammel mappe\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Flyttede fil '%s' til '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Fil(er) flyttet..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan ikke flytte fil fil '%s'\n"
+" til \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Fil(er) ikke flyttet"
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Vil du virkelig slette filen\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Slet fil..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Fil '%s' slettet"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Kan ikke læse mappe :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Søgning i gang..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Fil: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Fandt %d fil(er) i denne mappe og undermapper."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Fandt %d fil(er) i denne mappe."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u fil(er)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Ingen filer fundet i denne mappe og undermapper!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Ingen fil fundet i denne mappe!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Søger..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " STOP søgningen... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Vælg en mappe at gennemse!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Mærk valgte filer med dette felt"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Konvertér '_' og '%20' til mellemrum"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Konvertér ' ' til '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Alle store bogstaver"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "All små bogstaver"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Første bogstav stort"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Første bogstav stort på hvert ord"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Fjern mellemrum"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Indsæt mellemrum før store bogstaver"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Fjern dubletter af mellemrum og underscores"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Unormal afslutning! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "Modtog signal %s (%d)\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Du har sikkert fundet en fejl i EasyTAG. Send en fejlrapport med en gdb "
+"backtrace ('gdb easytag core', så 'bt' og så 'l') og oplysninger der kan "
+"reproducere problemet til <easytag@gmail.com>"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Ukendt signal"
+
+#: src/easytag.c:4452
+#, fuzzy
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+" Brug: easytag [tilvalg] \n"
+"eller: easytag [mappe]\n"
+"\n"
+"Tilvalg:\n"
+"--------\n"
+"-h, --help Vis denne tekst og afslut.\n"
+"-v, --version Print versionsoplysninger og afslut.\n"
+"\n"
+"Mappe:\n"
+"------\n"
+"/sti_til/filer Indlæs en absolut sti,\n"
+"sti_til/filer Indlæs relativ sti.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Normal afslutning."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Nogle filer er blevet ændret men ikke gemt...\n"
+"Vil du gemme dem før du afslutter programmet?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Vil du virkelig afslutte programmet? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3 mærke"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis mærke"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis mærke"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE mærke"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "MP4/M4A/AAC mærke"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3 fil"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2 fil"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis fil"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Næste fil"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC fil"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MusePack fil"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey's Audio fil"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "MP4/AAC fil"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "MusePack fil"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Billeder"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Kunne ikke konvertere filnavn : '%s'\n"
+"til systemets tegnsæt\n"
+"(Prøv at sætte miljø-variablen G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Filnavn oversættelse"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "Filnavnet '%s' overskrider %d tegn og vil blive forkortet!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Encoder:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Kanaler:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"FEJL ved åbning af fil: '%s' (%s).\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "FEJL: Kunne ikke skrive kommentarer til fil '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Skrev mærke på '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Fjernede mærke på '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Fejl under fjernelse af ID3v1 mærke på '%s' (%d)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Fejl under fjernelse af ID3v2 mærke på '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Fejl under opdatering af ID3v2 mærke på '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Fejl under opdatering af ID3v1 mærke på '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Opdaterede mærke på '%s'"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Ingen fejl rapporteret"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Ingen tilgængelige hukommelse"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Ingen data at fortolke"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Forkert formatteret data"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Ingen buffer at skrive til"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Buffer er for lille"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Ugyldigt frame ID"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Anmodet felt ikke fundet"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Ukendt felt type"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Mærke er allerede tilknyttet til en fil"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Ugyldig mærke version"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Ingen fil at fortolke"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Prøver at skrive til en fil med kun læseadgang"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Fejl i pakning/udpakning"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Ukendt fejlbesked!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Eftersom den følgende ødelagte fil: '%s'\n"
+"vil skabe en fejl i id3lib, vil den ikke blive indlæst af programmet."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Ødelagt fil..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " O.k. "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Ja "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Nej "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Anvend "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Gem "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Annullér "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Luk "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Skriv "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Kør "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " Søg "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " Gennnemse... "
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Vælg mappe..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Vælg fil..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "Søger..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Kan ikke køre %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Opret en spilleliste"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "M3U spillelistenavn"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Brug mappenavn"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Redigér masker"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Spilleliste tilvalg"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Inkludér kun de valgte filer"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Hvis aktiveret, vil kun de valgte filer blive skrevet til spillelisten. "
+"Ellers, vil alle filer blive skrevet."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Brug fuld sti for filer i spilleliste"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Brug relativ sti for filer i spilleliste"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Opret spilleliste i et niveau højere end dette"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Hvis aktiveret, vil spillelisten blive oprettet i mappen et niveau højere "
+"end dette."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Brug DOS-mappe adskiller"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Denne indstilling erstatter UNIX-mappenavne adskiller '/' med DOS-adskiller "
+"'\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Spilleliste indhold"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Skriv kun liste af filer"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Skriv oplysninger ved hjælp af filnavn"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Skriv oplysninger med :"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Spileliste fil '%s' eksisterer allerede!\n"
+"Overskriv?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Skriv spilleliste..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Kan ikke skrive spilleliste fil '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Skrev spilleliste fil '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Spor"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Kommentar"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Komponist"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Orig. kunstner"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Ophavsret"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Encoded af"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Søg efter en fil"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Indtast ordet der skal søges efter filer på. Hvis du ikke skriver noget, vil "
+"alle filer blive vist."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "I :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "filnavnet"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "mærket"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Forskel på store og små bogstaver"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Fandt : %d fil(er)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Hent filnavne fra TXT fil"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Fil :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Indlæs "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Indlæst filindhold :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Filnavne liste :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Efter aktivering af denne indstilling, og efter at indlæse filnavne, den "
+"nuværende scanner vil blive kørt (scannervinduet skal være åbent)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Indsæt en blank linje"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Slet denne linje"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Slet alle blanke linje"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Genindlæs"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Lyd"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Ukendt"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "MP4 format ugyldigt"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Gentag handling for resten af filerne"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Ogg bitstrøm indeholder ikke vorbis data."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "FEJL: Kunne ikke åbne filen '%s' som vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Advarsel : Ogg Vorbis filen '%s' indeholder et ID3v2 mærke."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Tilføj billeder"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Alle filer"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG og JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Billed egenskaber %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Billedtype"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Billedbeskrivelse:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Gem billede %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Den følgende fil eksisterer allerede:\n"
+"'%s'\n"
+"Vil du overskrive?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Gem fil..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "JPEG-billede"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "PNG-billede"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Ukendt billede"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "32x32 billedpunkter, PNG filikon"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Andet filikon"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Cover (forside)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Cover (bagside)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Brochure side"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Medie (f.eks. mærkesiden af CD'en)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Hovedkunstner"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Kunstner/optræder"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Leder"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Band/orkester"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Lyrik skriver"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Optagelsesplacering"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Under optagelse"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Under optræden"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Film/video skærmbillede"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "En lys farvet fisk"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Illustration"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Band/Kunstner logotype"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Udgiver/studie logotype"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Ukendt billedtype"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "billedpunkter"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Type"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Kan ikke vise billedet, eftersom ikke nok data er blevet læst der kan "
+"bestemme hvordan billedbufferen skal oprettes."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Indlæser billedfil..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan ikke åbne fil:\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Billedfil ikke indlæst..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Indstillinger..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Filbrowser"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "GÃ¥ til standardmappe"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Angiv mappen hvor dine filer er placeret. Stien vil blive indlæst når "
+"EasyTAG startes uden en parameter."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Automatisk søg efter filer, når EasyTAG starter, i den følgende mappe. "
+"Bemærk at stien kan overskrides af parametren givet til easytag (easytag /"
+"sti_til/mp3_filer)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Søg i undermapper"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "Søg undermapper for filer når der læses en mappe ind i træet."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Vis undermapper når der vælges en mappe"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Dette udfolder den valgte gren i filbrowseren til at vise undermapperne."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Søg i skjulte mapper"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "Søg i skjulte mapper efter filer (mapper der starter med '.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Brugergrænseflade"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Vis header-oplysninger for filer"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Hvis aktiveret, vil oplysninger så som bithastighed, tiden og størrelsen "
+"blive vist under filnavns feltet."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Vis ændrede filer i listen med :"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Rød farve"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Fed skrift"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Sorterings tilvalg"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Sortér fillisten efter :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Filnavn opadgående"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Filnavn nedadgående"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Spornummer opadgående"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Spornummer nedadgående"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Oprettelsesdato opadgående"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Oprettelsesdato nedadgående"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Titel opadgående"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Titel nedadgående"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Kunstner opadgående"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Kunstner nedadgående"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Album opadgående"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Album nedadgående"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "År opadgående"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "År nedadgående"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Genre opadgående"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Genre nedadgående"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Kommentar opadgående"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Kommentar nedadgående"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Vælg filsorteringstypen når en mappe indlæses."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+"Hvis aktiveret, vil sortering af listen være afhængighed af forskellen på "
+"store og små bogstaver."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Dialogboks position"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Ingen bestemt position"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Lad vindueshåndteringsprogrammet placere vinduer"
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "Hovedvinduets centrum"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Vinduer bliver placeret i centrum af hovedvinduet."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Skærmens centrum"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Vinduer bliver placeret i skærmens centrum"
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Museposition"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Vinduer bliver placeret i den nuværende museposition"
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Afspilningsprogram"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Afspiller der skal køres :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Indtast programmet der skal bruges til at afspille filer. Nogle argumenter "
+"kan blive givet til programmet (som f.eks. 'xmms -p') for at angive filer "
+"som næste argument."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Filindstillinger"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Filnavn indstillinger"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "Erstat ugyldige karakterer i filnavn (for Windows og CD-rom)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Konvertér ugyldige karakterer for FAT32/16 og ISO9660 + Joliet filsystemer "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') i filnavn for at undgå "
+"problemer når filen omdøbes. Dette er nyttigt når filen omdøbes fra mærket "
+"med scanneren."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Konvertér filnavn endelse til :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Små bogstaver"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "For eksempel: Endelsen vil blive konverteret til '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Store bogstaver"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "For eksempel: Endelsen vil blive konverteret til '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Ingen ændringer"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "Endelsen vil ikke blive konverteret"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Oprethold ændringstidspunktet af filen"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Når filen bliver gemt, kan du opretholde det oprindelige ændringstidspunkt "
+"på filen."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Tegnsæt for filnavn"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Regler der skal anvendes hvis nogle tegn ikke kan konverteres til "
+"systemtegnsættet når filnavn skal skrives:"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Prøv et andet tegnsæt"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Med denne indstilling, vil der prøvæs at konverteres til tegnsættet "
+"associeret med dit locale (f.eks: ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-"
+"8859-2 for 'ro'). Hvis det fejler, vil den prøve tegnsættet ISO-8859-1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr "Tving at brug systemtegnsættet og aktivér konvertering af ukendte tegn"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Med denne indstilling, når et tegn ikke kan repræsenteres i det valgte "
+"tegnsæt, vil der blive gættet på et andet tegn der ligner."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr "Tving til at bruge systemtegnsæt og smid nogle tegn væk"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Med denne indstilling, når et tegn ikke kan repræsenteres i det valgte "
+"tegnsæt, vil det blive smidt væk."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Mærke indstillinger"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Mærke tilvalg"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Auto-færdiggør dato hvis ikke færdig"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Forsøg på at færddiggør års-feltet hvis du kun indtaster de sidste tal i "
+"datoen (f.eks., hvis det nuværende år er 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Skriv sporfeltet med det følgende antal cifre :"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Hvis aktiveret, vil sporfeltet blive skrevet med tallet '0' som udfyldning "
+"til at opnå et tal med 'n' cifre (f.eks. two cifre: '05', '09', '10',...). "
+"Ellers vil den beholde den 'rå' spor værdi."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Ogg Vorbis filer : Skriv også kommentaren til XMMS format"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS bruger ikke den rigtige måde at identificere en kommentar i Ogg Vorbis "
+"filer ligesom andre programmer. Faktisk er dette felt normalt navngivet med "
+"'comment=', hvor XMMS kun bruger `='. Fjern dette flueben, hvis du ikke vil "
+"have andre programmer til at klage om et ukendt felt. Kommentarer vil dog "
+"ikke blive vist i XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr "Mærke-felt fokus når der skiftes filer med genveje Page Up/Page Down:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Hold fokus til samme mærke-felt"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Returnér fokus til første mærke-felt (f.eks. 'Titel'-feltet)"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "ID3 mærke indstillinger"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "ID3 mærke regler"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Skriv ID3 mærker i FLAC filer med FLAC mærke"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Hvis aktiveret, vil ID3 mærker også blive tilføjet til FLAC filen (ifølge de "
+"to regler foroven, plus FLAC mærket). Ellers vil ID3 mærker blive sprunget "
+"over."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Fjern mærker hvis alle felter er sat til blankt"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Et ID3v2 mærke kan indeholde andre data end titel, kunstner, album, år, "
+"spor, genre eller kommentar (som f.eks. et tilknyttet billede, lyrik, ...). "
+"Denne indstilling tillader dig at fjerne hele mærket når de syv standard "
+"data felter er sat til blankt."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Automatisk konvertér gamle ID3v2 mærke versioner"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Hvis aktiveret, vil gamle ID3v2 mærke versioner (såsom ID3v2.2) blive "
+"opdateret til ID3v2.3 versionen."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Skriv ID3v2 mærke"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Tegnsæt for ID3-mærker"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Skriv ID3v2 mærke"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Skriv ID3v2 mærke"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Hvis aktiveret, vil et ID3v2 mærke blive tilføjet eller opdateret i "
+"begyndelsen af MP3-filer. Ellers vil det blive fjernet."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Beskrivelse:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Encoded af"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Tegnsæt der skal bruges til at skrive mærke-data i filen."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " Nej "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3 mærke"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Skriv ID3v1.x mærke"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Hvis aktiveret, vil et ID3v1 mærke blive tilføjet eller opdateret for enden "
+"af MP3-filer. Ellers vil det blive fjernet."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Tegnsæt der skal bruges til at skrive mærke-data i filen."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Tegnsæt for ID3-mærker"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Dette tegnsæt vil blive brugt når mærke-data bliver læst, for at konvertere "
+"alle strenge i et ISO-8859-1 felt i mærket (for ID3v2 og/eller ID3v1 "
+"mærker).\n"
+"\n"
+"For eksempel :\n"
+" - i tidligere versioner af EasyTAG, kunne du gemme UTF-8 strenge i et ISO-"
+"8859-1 felt. Dette er ikke korrekt! For at konvertere disse mærker til "
+"Unicode: aktivér denne indstilling og vælg UTF-8. Du skal også aktivere den "
+"ovenståænde indstilling 'Prøv at gem mærker til ISO-8859-1. Hvis det ikke er "
+"muligt så brug UNICODE (anbefalet)' eller 'Gem altid mærker i ISO-8859-1 "
+"tegnsæt'.\n"
+" - Hvis unicode ikke blev brugt, kan russiske mennesker vælge tegnsættet "
+"'Windows-1251' for at indlæse mærker skrevet under Windows. Og 'KOI8-R' til "
+"at indlæse mærker skrevet med Unix systemer."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Tegnsæt der skal bruges til at læse mærke-data i filen."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Scanner"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Udfyld mærke scanner - Karakter konvertering"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Konvertér underscore karakter '_' og streng '%20' til mellemrum ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Konvertér mellemrum ' ' til underscore '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Hvis aktiveret, vil denne konvertering blive brugt når der anvendes en maske "
+"fra scanneren for mærker."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Omdøb filscanner - Karakter konvertering"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Hvis aktiveret, vil denne konvertering blive brugt når der anvendes en maske "
+"i scanneren for filnavne."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Behandl felter scanner - Karakter konvertering"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+"Lav ikke stort bogstav i starten af ord for nogle præpositioner og artikler."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Konvertér ikke første bogstav af ord som præpositioner, artikler og ord som "
+"f.eks. 'feat.' (featuring)."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Scannervindue"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Ã…bn scannervindue ved opstart"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Aktiver denne indstilling for automatisk at åbne scannervinduet når EasyTAG "
+"starter."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Scannervindue altid øverst"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Hvis aktiveret, vil vinduet som indeholder maskerne altid være over "
+"hovedvinduet."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Felter"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Overskriv felter når der scannes efter mærker"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Hvis aktiveret, vil scanneren erstatte eksisterened tekst i felter med ny "
+"tekst. Hvis deaktiveret, vil kun blanke felter af felter blive udfyldt."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Sæt denne tekst som standard kommentar :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Aktiver denne indstilling, hvis du vil putte den følgende streng ind i "
+"kommentar feltet når der bruges 'Udfyld mærke' scanneren."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "Brug CRC32 som standard kommentar (for filer med ID3 tags kun)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Beregner CRC-32 værdien for filen og skriver den ind i kommentarfeltet når "
+"'Udfyld mærke' scanneren bruges."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "CDDB"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+#, fuzzy
+msgid "Server Settings for Automatic Search"
+msgstr "Automatisk søgning"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Navn :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Port :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI-sti :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "Serverindstillinger"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "CDDB"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "CGI-sti :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Mellemværtsindstillinger"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Brug en mellemvært"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Aktivér mellemværtsindstillinger"
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Værtsnavn :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Navn på mellemværtsserveren."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Port på mellemværtsserveren."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Brugernavn :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Navn på bruger for mellemværten."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Bruger adgangskode :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Brugerens adgangskoden til mellemværten."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Spornavn liste"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr "Vælg tilsvarende lydfil (position eller DLM hvis aktiveret nedenunder)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Hvis aktiveret, når der vælges linjer i listen af spornavne, vil den "
+"tilsvanrede lydfil i hovedlisten også blive valgt."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Brug Levenshtein algoritmen (DLM for at matche linjer (med titel) med "
+"lydfiler (vha. filnavn)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Bekræftelse"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Bekræft afslutning fra programmet"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Hvis aktiveret, åbnes en dialogboks for at spørge om bekræftelse før "
+"afslutning af programmet."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Bekræft skrivning af filmærke"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Bekræft omdøbning af fil"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Bekræft sletning af fil"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Bekræft skrivning af spilleliste"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Anvend ændringer (men gem ikke) og luk dette vindue"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Luk dette vinduet uden at gemme"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Gem ændringer og luk dette vindue"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Eksempel : %.*d_-_Spor_navn_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Ændringer anvendt"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Opsætning gemt"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Opsætning uændret"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" Den valgte sti for 'Standard sti til filer' er ikke gyldig!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Ikke en mappe"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "Lydafspilleren '%s' blev ikke fundet!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Udfyld mærke"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Omdøb fil og mappe"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Behandl felter"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Mærke succesfuldt scannet..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Mærke succesfuldt scannet...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Scan fejl: kan ikke finde adskiller '%s' i '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "Kunne ikke konvertere filnavn '%s' til systemets tegnsæt for filnavne."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Nyt filnavn succesfuldt scannet..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Nyt filnavn succesfuldt scannet...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Mærk og filnavns scan"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Scanner :"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Vælg scannertypen"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Ã…bn scannervindue / Scan valgte filer"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Scanner indstillinger"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Vis / Skjul maske redigering"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Vis / Skjul signatur"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Luk dette vindue"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Vælg eller indtast en maske vha. koder (se signatur) til at fortolke "
+"filnavne og sti. Brugt til at udfylde i mærke-felter."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Udfyld-mærke forvisning..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Præfiks maske med nuværende sti"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Vælg eller indtast en maske vha. koder (se signatur) til at fortolke mærker. "
+"Brugt til at omdøbe filen.\n"
+"Anvend / til at lave mapper. Hvis det første tegn er /, er det en absolut "
+"sti, ellers er den relativ til den gamle sti."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Omdøb filforvisning..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Vælg felter:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Knapperne til højre repræsenterer de felter som kan blive behandlet. Vælg "
+"dem som har din interesse."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Behandl filnavnsfelt"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Behandl titel felt"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "K"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Behandl kunstnerfelt"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "A"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Behandl album felt"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Behandl genre felt"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Ko"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Behandl kommentar felt"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Op"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Behandl komponist felt"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Behandl original kunstner felt"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Oh"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Behandl ophavsret felt"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Behandl URL felt"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Behandl encoder-navn felt"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Invertér valg"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Vælg/fravælg alle."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Konvertér '_' og '%20' til ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Konvertér :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "til : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Underscore-karakteren eller strengen '%20' er erstattet af et mellemrum. F."
+"eks., før: 'Text%20In%20An_Entry', efter: 'Text In An Entry'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Mellemrumskarakteren er erstattet af en underscore-karakter. F.eks.:, før: "
+"'Text In An Entry', efter: 'Text_In_An_Entry'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Erstat en karakter med en anden"
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Konvertér alle ord i alle felter til store bogstaver. F.eks., før: 'Text IN "
+"AN entry', efter: 'TEXT IN AN ENTRY'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Konvertér alle ord i felter til små bogstaver. F.eks., før: 'TEXT IN an "
+"entry', efter: 'text in an entry'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Konvertér det første bogstav i hvert felt til stort. F.eks., før: 'text IN "
+"An ENTRY', efter: 'Text in an entry'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Konvertér det første bogstav for hvert ord i hvert felt til stort. F.eks., "
+"før: 'Text in an ENTRY', efter: 'Text In An Entry'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Indsæt et mellemrum før et stort bogstav"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Fjern dubletter af mellemrum og underscores"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Alle mellemrum mellem ord er fjernet. F.eks., før: 'Text In An Entry', "
+"efter: 'TextInAnEntry'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Et mellemrum er indsat før hvert store bogstav. F.eks., før: "
+"'TextInAnEntry', efter: 'Text In An Entry'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Mellemrumsdubletter eller underscores bliver fjernet. F.eks., før: "
+"'Text__In__An Entry', efter: 'Text_In_An Entry'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Signatur"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : kunstner"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : kommentar"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : komponist"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : ophavsret"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : disknummer"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : encoded af"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : genre"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ignoreret"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : antal spor"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : orig. kunstner"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : spor"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : titel"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : år"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Maske redigering"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Opret ny maske"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Flyt denne maske op"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Flyt denne maske ned"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Dublér maske"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Tilføj standard maskem"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Fjern maske"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Gem masker"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Ny_maske"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Kopi: Ingen række valgt!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Fjern: Ingen række valgt!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Flyt op: Ingen række valgt!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Flyt ned: Ingen række valgt!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr ""
+"FEJL: Kan ikke skrive opsætningsfil: %s (%s)\n"
+""
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Kan ikke åbne opsætningsfil '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Henter standardopsætning..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Kan ikke oprette eller åbne fil '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+"FEJL: Kan ikke skrive liste til fil: %s (%s)\n"
+""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Indlæser standard 'Udfyld mærke' masker..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Indlæser standard 'Omdøb fil' masker..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Indlæser standard 'Omdøb mappe' masker..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"FEJL: Miljøvariablen HOME er ikke sat!\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "FEJL: Kan ikke oprette mappe '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Inddata ødelagt eller tom."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Inddata er ikke en Ogg bitstrøm."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Fejl ved læsning af første side af Ogg bitstrøm."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Fejl ved læsning af initiel header-pakke."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Ogg bitstrøm indeholder ikke vorbis data."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Korrupt sekundær header."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF før slutningen af vorbis headers."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Korrupt eller manglende data, fortsætter..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Fejl ved skrivning af strøm til uddata. Uddata strømme kan være korrupte "
+"eller ødelagte."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "Kør musikafspiller"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Ugyldig mærke version"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Brug udfyldning"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Brug udfyldning i ID3v2 mærker for hurtigere skrivning næste gang mærket "
+#~ "ksal skrives."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Gem altid mærker i ISO-8859-1 tegnsæt"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Brug ISO-8859-1 tegnsættet (enkelt byte tegnsæt) til at skrive mærket. "
+#~ "Dette tegnsæt kan bruges til ID3v2 og ID3v1 mærker, men bemærk at tegn "
+#~ "der ikke er i ISO-8859-1 vil blive tabt.\n"
+#~ "\n"
+#~ "Hvis et andet tegnsæt er valgt med 'Brug ikke-standard tegnsæt til at "
+#~ "skrive ID3 mærker:', vil det blive brugt i stedet for ISO-8859-1.\n"
+#~ "Nogle indstillinger kan også sættes hvis nogle tegn ikke kan konverteres."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Prøv at gem mærker til ISO-8859-1. Hvis det ikke er muligt så brug "
+#~ "UNICODE (anbefalet)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "UNICODE tegnsættet vil blive brugt hvis konvertering til ISO-8859-1 "
+#~ "fejler. Unicode kan bruges til ID3v2 men ikke til ID3v1 som kun bruger "
+#~ "enkelt-byte tegnsæt (som standard ISO-8859-1).\n"
+#~ "\n"
+#~ "Hvis et andet tegnsæt er valgt med 'Brug ikke-standard tegnsæt til at "
+#~ "skrive ID3-mærker', vil det blive brugt i stedet for ISO-8859-1.\n"
+#~ "Nogle indstillinger kan også sættes hvis nogle tegn ikke kan konverteres."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Altid gem mærker til UNICODE tegnsæt"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Brug UNICODE tegnsæt for ID3v2 mærker. ID3v1 mærker er altid gemt med et "
+#~ "enkelt-byte tegnsæt (som standard ISO-8859-1).\n"
+#~ "\n"
+#~ "Hvis et andet tegnsæt er valgt med 'Brug ikke-standard tegnsæt til at "
+#~ "skrive ID3-mærker', vil det blive brugt i stedet for ISO-8859-1."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr "For ISO-8859-1 felter, brug følgende tegnset (kun for eksperter!):"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "Brug ikke-standard tegnsæt til at læse ID3-mærker: "
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "Brug ikke-standard tegnsæt til at skrive ID3 mærker: "
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Dette tegnsæt vil blive brugt når mærket bliver skrevet, til at "
+#~ "konvertere hver streng gemt i ISO-8859-1 feltet i mærket (for ID3v2 og/"
+#~ "eller ID3v1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "For ISO-8859-1 felter, anvend også disse regler hvis nogle tegn ikke kan "
+#~ "konverteres når der skrives mærker:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Gør ingenting"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr ""
+#~ "Tving til at bruge tegnsættet og aktivér konvertering af ukendte tegn."
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr "Tving til at bruge tegnsættet og smid ukendte tegn væk"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "Tegnsæt oversættelse fra '%s'\n"
+#~ "til '%s' er ikke understøttet!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "FEJL ved åbning af fil: '%s' (%s).\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Indlæs mappe ved opstart"
+
+#~ msgid "#:"
+#~ msgstr "#:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "Sæt gul baggrund på værktøjstips"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "Hvis aktiveret, vil baggrunden på værktøjstips blive farvet gul, som "
+#~ "overskriver dit vindueshåndteringsprogram."
+
+#~ msgid "Can't execute %s (%d)!\n"
+#~ msgstr "Kan ikke køre %s (%s)!\n"
+
+#~ msgid "Set new style for displaying list items"
+#~ msgstr "Sæt ny stil for at vise listeelementer"
+
+#~ msgid ""
+#~ "If activated, items in list will be styled black and bold instead of red "
+#~ "and gray (example : for changed and not saved files)."
+#~ msgstr ""
+#~ "Hvis aktiveret, vil elementer blive vist som sort og fed istedet for rød "
+#~ "og grå (f.eks., for ændrede og ikke gemte filer)."
+
+#~ msgid "Save _Configuration Now"
+#~ msgstr "Gem _opsætning nu"
+
+#~ msgid "Save Configuration Now"
+#~ msgstr "Gem opsætning nu"
+
+#~ msgid "Set main window size"
+#~ msgstr "Sæt hovedvinduets størrelse"
+
+#~ msgid "Width :"
+#~ msgstr "Bredde :"
+
+#~ msgid "Height :"
+#~ msgstr "Højde :"
+
+#~ msgid " Get current size "
+#~ msgstr " Hent nuværende størrelse "
+
+#~ msgid ""
+#~ "Specify the default size for the main window. You must restart the "
+#~ "program to apply the new size. For your display, the max values are: "
+#~ "width=%d and height=%d."
+#~ msgstr ""
+#~ "Angiv standard størrelsen for hovedvinduet. Du skal genstarte programmet "
+#~ "for at anvende den nye størrelse. For din skærm, er max værdierne: bredde="
+#~ "%d og højde=%d."
+
+#~ msgid "Width: set -1 for automatic size"
+#~ msgstr "Bredde: sæt -1 for automatisk størrelse"
+
+#~ msgid "Heigth: set -1 for automatic size"
+#~ msgstr "Højde: sæt -1 for automatisk størrelse"
+
+#~ msgid "Set vertical right pane handle position"
+#~ msgstr "Sæt vertikal højre panels position"
+
+#~ msgid "Position :"
+#~ msgstr "Position :"
+
+#~ msgid " Get current position "
+#~ msgstr " Hent nuværende position "
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser frame and the tag frame. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Angiv standard positionen for panelet mellem browseren og mærke-rammen. "
+#~ "Ændringer vil blive anvendt ved næste opstart."
+
+#~ msgid "Position: set -1 for automatic positioning"
+#~ msgstr "Position: sæt -1 for automatisk position"
+
+#~ msgid "Set vertical left pane handle position"
+#~ msgstr "Sæt vertikal venstre panels position"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser tree and the list of files. Changes will be applied the next "
+#~ "start."
+#~ msgstr ""
+#~ "Angiv standard positionen for panelet mellem browseren og listen over "
+#~ "filer Ændringer vil blive anvendt ved næste opstart."
+
+#~ msgid "Set horizontal pane handle position"
+#~ msgstr "Sæt horisontal panel position"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "artist list and album list. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Angiv standard positionen for panelet mellem kunstner listen og album "
+#~ "listen. Ændringer vil blive anvendt ved næste opstart."
+
+#~ msgid "Set scanner window position"
+#~ msgstr "Sæt scanner vinduesposition"
+
+#~ msgid ""
+#~ "If activated, the scanner window will appear at the specified coordinates "
+#~ "relative to the main window. Use it if you want to keep the same position "
+#~ "of the scanner window each times you open it. If deactivated, the window "
+#~ "manager determines the position."
+#~ msgstr ""
+#~ "Hvis aktiveret, vil scannervinduet dukke op på de angivne koordinater "
+#~ "relativt til hovedvinduet. Brug det, hvis du vil beholde den samme "
+#~ "position til scanneren hver gang du åbner det. Hvis deaktiveret, vil "
+#~ "vindueshåndteringsprogrammet bestemme positionen."
+
+#~ msgid "X :"
+#~ msgstr "X :"
+
+#~ msgid "Y :"
+#~ msgstr "Y :"
+
+#~ msgid "CD Data Base Window"
+#~ msgstr "CDDB-vindue"
+
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "Sæt CDDB-vinduestørrelse"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "Angiv standard størrelsen for CDDB-vinduet."
+
+#~ msgid "Set pane handle position"
+#~ msgstr "Sæt panel position"
+
+#~ msgid "Specify the default position for the pane handle in the CDDB window."
+#~ msgstr "Angiv standard position for panelt i CDDB-vinduet."
+
+#~ msgid " Window height (%d) is bigger than screen height (%d)! "
+#~ msgstr " Vinduehøjde (%d) er større end skærmhøjde (%d)! "
+
+#~ msgid "Size Error..."
+#~ msgstr "Størrelsesfejl..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr " Vinduebredde (%d) er større end skærmbredde (%d)! "
+
+#~ msgid "The scanner window must be open to get its current position!"
+#~ msgstr "Scannervinduet skal være åbent for at få dets nuværende position"
+
+#~ msgid "The CDDB window must be open to get its current position!"
+#~ msgstr "CDDB-vinduet skal være åbent for at få dets nuværende position!"
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "Gem opsætningen før afslutning af program"
+
+#~ msgid ""
+#~ "If activated, the configuration will be automatically saved before "
+#~ "exiting the program."
+#~ msgstr ""
+#~ "Hvis aktiveret, vil opsætningen automatisk blive gemt før afslutning af "
+#~ "programmet."
diff --git a/po/de.gmo b/po/de.gmo
new file mode 100644
index 0000000..219edcb
--- /dev/null
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..a306e7e
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,5891 @@
+# German catalog for EasyTAG.
+# Copyright (C) 2000-2007 Free Software Foundation, Inc.
+# Bastian Kleineidam <calvin@users.sourceforge.net>, 2000.
+# Adrian Bunk <bunk@fs.tum.de>, 2000.
+# Colin Marquardt <colin@marquardt-home.de>, 2001.
+# Philipp Thomas <pthomas@suse.de>, 2001.
+# Götz Waschk <goetz.waschk@gmail.com>, 2001, 2002, 2003, 2004, 2005, 2006, 2007.
+#
+# [Please leave these: öäüßÖÄÜ]
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 2.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2007-05-08 07:15+0200\n"
+"Last-Translator: Götz Waschk <goetz.waschk@gmail.com>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG ist ein Werkzeug zum Anschauen, Editieren und Schreiben von Tags "
+"Ihrer MP3-, MP2-, FLAC-, Ogg Vorbis-, MP4/AAC-, MusePack- und Monkey's "
+"Audio-Dateien. Seine einfache und hübsche GTK+-Oberfläche macht das Taggen "
+"einfacher."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Deutsche Ãœbersetzung)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Russische Ãœbersetzung)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Holländische Übersetzung)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Schwedische Ãœbersetzung)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Ungarische Ãœbersetzung)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Italienische Ãœbersetzung)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Japanische Ãœbersetzung)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Ukrainische Ãœbersetzung)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Tschechische Ãœbersetzung)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Spanische Ãœbersetzung)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Polnische Ãœbersetzung)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Rumänische Übersetzung)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Dänische Übersetzung)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Griechische Ãœbersetzung)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Brasilianisch Portugische Ãœbersetzung)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(Bulgarische Ãœbersetzung)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(Chinesische Ãœbersetzung)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Griechische Ãœbersetzung)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Ãœber..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Ãœber"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(compiliert: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(verwendet: GTK+ %d.%d.%d und id3lib Version %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(MP3-Unterstützung deaktiviert)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(MP3-Unterstützung deaktiviert)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(MP3-Unterstützung deaktiviert)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(MP3-Unterstützung deaktiviert)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Ogg Vorbis-Unterstützung deaktiviert)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(MP3-Unterstützung deaktiviert)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(FLAC-Unterstützung deaktiviert)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(MP4/AAC-Unterstützung deaktiviert)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(MP3-Unterstützung deaktiviert)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Autor: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-Mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Homepage: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Beschreibung:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Danksagung"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Ãœbersetzungen:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Allgemeines:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Änderungen"
+
+#: src/about.c:454
+#, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Datei '%s' kann nicht geöffnet werden (%s)\n"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "FEHLER beim Öffnen der Datei: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Datei"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Liste nach Tag sortieren"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Liste nach Eigenschaft sortieren"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Aufsteigend nach Datei-Namen "
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Absteigend nach Datei-Namen"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Aufsteigend nach Erstellungsdatum"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Absteigend nach Erstellungsdatum"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Aufsteigend nach Titelnummer"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Absteigend nach Titelnummer"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Aufsteigend nach Titel"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Absteigend nach Titel"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Aufsteigend nach Künstler"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Absteigend nach Künstler"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Aufsteigend nach Album"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Absteigend nach Album"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Aufsteigend nach Jahr"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Absteigend nach Jahr"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Aufsteigend nach Genre"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Absteigend nach Genre"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Aufsteigend nach Kommentar"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Absteigend nach Kommentar"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Aufsteigend nach Komponisten"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Absteigend nach Komponisten"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Aufsteigend nach Originalkünstler"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Absteigend nach Originalkünstler"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Aufsteigend nach Copyright"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Absteigend nach Copyright"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Aufsteigend nach URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Absteigend nach URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Aufsteigend nach Kodierer"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Absteigend nach Kodierer"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Aufsteigendn nach Dateityp"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Absteigend nach Dateityp"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Aufsteigend nach Dateigröße"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Absteigend nach Dateigröße"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Aufsteigend nach Länge"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Absteigend nach Länge"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Aufsteigend nach Bitrate"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Absteigend nach Bitrate"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Aufsteigend nach Samplerate"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Absteigend nach Samplerate"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Öffne Datei(en) mit ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Alle Dateien auswählen"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Alle Dateien abwählen"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Dateiauswahl umkehren"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Datei(en) löschen..."
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Erste Datei"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Erste Datei"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "_Vorherige Datei"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Vorherige Datei"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "_Nächste Datei"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Nächste Datei"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "Let_zte Datei"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Letzte Datei"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "Datei(en) _scannen"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Datei(en) scannen"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "Tag(s) ent_fernen"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Tag(s) entfernen"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "Letzte Änderungen rückgängig _machen"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Letzte Änderungen rückgängig machen"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "_Wiederholen der letzten Änderungen"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Wiederholen der letzten Änderungen"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Speichere Datei(en)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Speichere Datei(en)"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "Er_zwinge Speichern der Datei(en)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Erzwinge Speichern der Datei(en)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Mache letzte Änderungen rückgängig"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Wiederhole letzte Änderungen"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Beenden"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Beenden"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Auswahl"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Zum _persönlichen Ordner gehen"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Zum persönlichen Ordner gehen"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Zum _Vorgabeverzeichnis gehen"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Zum Vorgabeverzeichnis gehen"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "_Aktuellen Pfad als Vorgabe setzen"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Aktuellen Pfad als Vorgabe setzen"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Baumansicht | Künstler-Album-Ansicht"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Verzeichnis umbenennen..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Verzeichnis neu einlesen"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Verzeichnis betrachten mit ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Verzeichnisbaum schließen"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "Verzeichnisbaum _aktualisieren"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "S_canner"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Fülle Tag(s)..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Fülle Tag(s)..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "Dateien und Verzeichnis _umbenennen ..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Dateien und Verzeichnis umbenennen ..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "Felder _verarbeiten ..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Felder verarbeiten ..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Extra"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Suche _Datei(en)..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Suche Datei(en)..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "CD-Daten_banksuche ..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB-Suche ..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Lade Dateinamen aus Textdatei..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Schreibe Wiedergabeliste..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Audio-Player starten"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Einstellungen"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Einstellungen..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Einstellungen..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Ãœber"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Aktuellen Befehl abbrechen"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_Dateioptionen"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "CDDB-Dateisuche..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr "Lösche Logbuch"
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "_Unterverzeichnisse durchsuchen"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Zeige versteckte Verzeichnisse"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Zeige Baumansicht / Ansicht nach Künstler und Album"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Konnte Oberfläche nicht verschmelzen, der Fehler war: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Bereit zum Start..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Neuer Vorgabepfad für Dateien ausgewählt"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Bestätigen..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Einige Dateien wurden verändert, aber nicht gespeichert...\n"
+"Möchten sie diese vor dem Wechseln des Verzeichnisses speichern?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Der eingegebene Pfad ist ungültig!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Fehler..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<Alle Alben>"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr ""
+"Fehler: Bei der Suche nach %s konnte der Knoten %s nicht im Baum gefunden "
+"werden."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Künstler"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Alben"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Dateien"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Zum Elternverzeichnis gehen"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Geben sie das zu durchsuchende Verzeichnis an"
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Baum"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Künstler & Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Verzeichnis umbenennen"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Benenne Verzeichnis '%s' um in : "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Nutze Maske :"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr ""
+"Wenn aktiviert, dann werden Masken zur Umbenennung des Verzeichnisses "
+"verwendet."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Wählen sie eine Maske aus oder Tippen sie Codes ein (siehe Legende im "
+"Scanner), um das Verzeichnis aus Tagfeldern umzubenennen."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Ungültige Scannermaske"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Verzeichnisumbenennungsvorschau..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Sie müssen einen Verzeichnisnamen angeben!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Konnte '%s' nicht in die Dateinamenskodierung umwandeln. Verwenden sie bitte "
+"einen anderen Namen."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Umbenennung nicht möglich, da dieser Verzeichnisname bereits existiert!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Verzeichnis \n"
+"'%s'\n"
+" kann nicht in \n"
+"'%s' umbenannt werden!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Verzeichnis umbenannt"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Programm starten:"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Gib den Namen des Programms an, das gestartet werden soll. Es wird das "
+"aktuelle Verzeichnis als Parameter verwendet."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Öffne Datei mit ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Gib den Namen des Programms an, das gestartet werden soll. Es wird die "
+"aktuelle Datei als Parameter verwendet."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Sie müssen einen Programmnamen angeben!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Das Programm '%s' wurde nicht gefunden!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Kann %s nicht ausführen (Fehler %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Kein weiterer Prozess kann gestartet werden!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Ausgeführtes Programm: '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Künstler / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Kategorie"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Stückname:"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Zeit"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "CD-Datenbanksuche"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Automatische Suche"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "Frage CD-Datenbank an :"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Frage die CDDB-Datenbank automatisch mit den ausgewählten Dateien (die "
+"Reihenfolge ist wichtig!) an, um die CddbID zu erzeugen."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Suche abbrechen ..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr "Benutze lokale CDDB"
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Wenn diese Option aktiviert wird, dann wird der ausgewählte Scanner nach dem "
+"Laden der Felder gestartet (das Scannerfenster muss offen sein)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Manuelle Suche"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Wörter :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Gib die zu suchenden Wörter ein (durch Leerzeichen oder '+' getrennt)"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Suche in :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Alle Felder"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Andere"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Alle Kategorien"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Klassik"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Extra"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "New Age"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Soundtrack"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "beinhaltet: Funk, Soul, Rap, Pop, Industrial, Metal, usw."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "Filme, Shows"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "andere, die nicht in die obigen Kategorien passen"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr "Kategorien"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Ergebnisse :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Suche :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Gib die in der unten stehenden Liste zu suchenden Wörter ein"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Suche nächsten"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Suche vorherigen"
+
+#: src/cddb.c:571
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr ""
+"Zeige nur rote Zeilen (oder zeige alle Zeilen) in der 'Künster / Album'-"
+"Liste "
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Alle Zeilen abwählen"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Zeilenauswahl umkehren"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Alle Zeilen auswählen"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Wählen sie die Zeilen aus, die sie auf Ihre Dateiliste 'anwenden' wollen. "
+"Wenn keine ausgewählt sind, werden alle verarbeitet.\n"
+"Sie können die Zeilen auch umordnen bevor sie den 'Anwenden'-Knopf drücken."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Setze ein :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Alle"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Dateiname"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Titel"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Jahr"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Stück #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# Stücke"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Genre"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Aktuellen Scanner für alle Dateien ausführen"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr "Finde passende Zeilen mit dem Levenshtein-Algorithmus"
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Wenn aktiviert, dann wird der Levenshtein-Algorithmus (DLM : Damerau-"
+"Levenshtein-Metrik) verwendet, um den CDDB-Titel mit jedem Dateinamen im "
+"aktuellen Ordner zu vergleichen und die beste Übereinstimmung auszuwählen. "
+"Dies wird bei der Auswahl der zugehörigen Audiodatei oder der Anwendung der "
+"CDDB-Ergebnisse statt der Benutzung der direkten Reihenfolge durchgeführt."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Lade die ausgewählten oder alle Zeilen (wenn keine ausgewählt sind)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Bereit zur Suche..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album: '%s', Künstler: '%s', Länge: '%s', Jahr: '%s', Genre: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Auswahl umkehren"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Sortiere nach Stücknummer"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Sortiere nach Stücknamen"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Suche Rechner '%s' ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Kann Rechner '%s' nicht finden (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Kann keinen neuen Socket öffnen (%s)! "
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Verbinde mit Rechner '%s' Port '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Kann keine Verbindung zu '%s' aufbauen (%s)! "
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Verbunden mit Rechner '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Empfange Daten (%s) ..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Fehler beim Lesen der CDDB-Anfrage (%s)!"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Datei '%s' kann nicht angelegt werden (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "FEHLER: Datei '%s' kann nicht geöffnet werden (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Sende Anfrage ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Kann die Anfrage nicht senden (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Empfange Daten ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "Der Server hat eine falsche Antwort gegeben!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Der Server hat eine falsche Antwort gegeben! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Entschuldigung, die Web-basierte Suche funktioniert gerade nicht."
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "%d passende Alben gefunden."
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Empfange Daten der Seite %d ..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Empfange Daten der Seite %d ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "Mehr Ergebnisse zu laden ..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Keine Datei ausgewählt!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d Datei(en) ausgewählt!"
+
+#: src/cddb.c:2945
+msgid "Local CD search..."
+msgstr "Lokale CD-Suche..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+"Der Pfad zur 'lokalen CD-Datenbank' wurde nicht festgelegt!\n"
+"Stellen sie ihn im Einstellungsfenster ein."
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Sende Anfrage (CddbId: %s, #Stücke: %d, CD-Länge: %d) ..."
+
+#: src/cddb.c:3231
+#, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "%d passende Alben für die DiscID '%s' gefunden."
+
+#: src/cddb.c:3327
+#, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Datei '%s' kann nicht geöffnet werden (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Lade Titelliste des Albums ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Achtung, sie wenden %d Zeilen der CDDB-Anfrage auf %d Zeilen in der "
+"Dateiliste an!\n"
+"\n"
+"Wollen sie weitermachen?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Schreibe Tag aus CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arabisch (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabisch (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arabisch (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltisch (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltisch (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Baltisch (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltisch (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Mitteleuropäisch (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Mitteleuropäisch (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Mitteleuropäisch (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Vereinfachtes Chinesisch (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Vereinfachtes Chinesisch (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Traditionelles Chinesisch (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Traditionelles Chinesisch (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Kyrillisch (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kyrillisch (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kyrillisch (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kyrillisch (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kyrillisch (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Kyrillisch/Russisch (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Kyrillisch/Ukrainisch (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Englisch (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Griechisch (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Griechisch (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hebräisch (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebräisch (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japanisch (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japanisch (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japanisch (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Koreanisch (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordisch (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Südeuropäisch (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Türkisch (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Türkisch (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Türkisch (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamesisch (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamesisch (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Visuelles Hebräisch (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Westlich (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Westlich (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Westlich (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Westlich (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Der Dateiname '%s' konnte nicht nach UTF-8 konvertiert werden (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "ungültiges UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"Die UTF-8-Zeichenkette '%s' konnte nicht in die Dateinamenskodierung "
+"umgewandelt werden (%s)\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"Die Zeichenkette '%s' konnte nicht nach UTF-8 konvertiert werden (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "EasyTAG %s wird gestartet (PId: %d)..."
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Verwendet id3lib Version %d.%d.%d ..."
+
+#: src/easytag.c:182
+#, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Verwendet id3lib Version %d.%d.%d ..."
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr "Variable EASYTAGLANG definiert. Setze Sprache: '%s'"
+
+#: src/easytag.c:191
+#, c-format
+msgid "Setting locale : '%s'"
+msgstr "Setze Sprache: '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "Verwende momentan die Spracheinstellung '%s' (letztendlich '%s')..."
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s von %s (kompiliert um %s am %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Homepage: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr "Unbekannter Parameter oder Pfad '%s'\n"
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Auswahl"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Datei"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Datei ist nur lesbar"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Datei-Link kaputt"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Ebene ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Bitrate:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Frequenz:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Modus:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Größe:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Dauer:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Tag"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Allgemein"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Titel:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Diesen Titel in allen ausgewählten Dateien eintragen"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Künstler:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Diesen Künstler in allen ausgewählten Dateien eintragen"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Diesen Albumnamen in allen ausgewählten Dateien eintragen"
+
+#. Disc Number
+#: src/easytag.c:642
+msgid "CD:"
+msgstr "CD:"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Diesen CD-Nummer in allen ausgewählten Dateien eintragen"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Jahr:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Dieses Jahr in allen ausgewählten Dateien eintragen"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Alle ausgewählten Stücke sequentiell durchnummerieren. Beginnt mit 01 in "
+"jedem Unterverzeichnis."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Stück #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Fügt die Anzahl der Dateien, die in dem gleichen Verzeichnis wie die "
+"aktuelle Datei sind, den ausgewählten Dateien hinzu."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Diese Gesamtzahl an Stücken in allen ausgewählten Dateien eintragen"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Genre:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Dieses Genre in allen ausgewählten Dateien eintragen"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Diesen Kommentar in allen ausgewählten Dateien eintragen"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Komponist"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Diesen Komponisten in allen ausgewählten Dateien eintragen"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Originalkünstler:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Diesen Originalkünstler in allen ausgewählten Dateien eintragen"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Copyright:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Dieses Copyright in allen ausgewählten Dateien eintragen"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Diese URL in allen ausgewählten Dateien eintragen"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Kodierer:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Diesen Kodierer in allen ausgewählten Dateien eintragen"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Bilder"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Bilder:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Sie können Bilder durch Drag und Drop hinzufügen."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Diese Bilder in allen ausgewählten Dateien eintragen"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Entferne ausgewählter Bilder, sonst alle Bilder."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Fügt Bilder zu diesem Tag hinzu (Drag und Drop ist auch verfügbar)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Speichere ausgewählte Bilder auf der Festplatte."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Setze Eigenschaftern der ausgewählten Bilder."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "In allen ausgewählten Dateien wurde der Title '%s' eintragen."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Dieser Titel wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Künstler '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Künstler wurde(n) aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Album '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Albumname wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "CD-Nummer '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "CD-Nummer aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Jahr '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Jahr wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr ""
+"In allen ausgewählten hDateien wurden Stücknummern wie 'xx/%s' eingetragen."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr ""
+"In allen ausgewählten Dateien wurden Stücknummern wie 'xx' eingetragen."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Stücknummer aus allen ausgewählten Dateien entfernt."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Alle ausgewählten Stücke wurden durchnummeriert."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Genre '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Genre wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Kommentar '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Kommentar wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Komponist '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Komponist wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Originalkünstler '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Originalkünstler wurde(n) aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Copyright '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Copyright wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "URL '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "URL wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Kodierer '%s' wurde in allen ausgewählten Dateien eingetragen."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Kodierer wurde aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "In allen ausgewählten Dateien wurden die Bilder eingetragen."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Die Bilder wurden aus allen ausgewählten Dateien entfernt."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Wählen sie Modus und Maske und wiederholen sie die Aktion"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Alle Tags wurden durchsucht"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Alle Tags wurden entfernt"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Alle Dateien wurden gespeichert..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Dateien wurden teilweise gespeichert..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Dateien wurden teilweise gelöscht..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Alle Dateien wurden gelöscht..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Wollen sie den Tag der Datei\n"
+"'%s' schreiben?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Tag wird geschrieben..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Datei und Verzeichnis umbenennen..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Wollen sie die Dateien und Verzeichnisse\n"
+"'%s'\n"
+"in \n"
+"'%s' umbenennen?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Verzeichnis umbenennen..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Wollen sie das Verzeichnis\n"
+"'%s'\n"
+"in \n"
+"'%s' umbenennen?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Datei umbenennen..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Wollen sie die Datei \n"
+"'%s'\n"
+"in \n"
+"'%s' umbenennen?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Schreibe Tag von '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Tag(s) wurden geschrieben"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Tag kann nicht in Datei '%s' geschrieben werden!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Benenne Datei '%s' um"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Datei '%s'\n"
+" kann nicht in \n"
+"'%s' umbenannt werden!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Datei(en) nicht umbenannt..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Datei \n"
+"'%s'\n"
+"kann nicht umbenannt werden, da die folgende Datei bereits existiert:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kann das Zielverzeichnis nicht anlegen\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Datei '%s' wurde in '%s' umbenannt"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Datei(en) umbenannt..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kann das alte Verzeichnis nicht entfernen\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Datei '%s' nach '%s' verschoben"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Datei(en) verschoben..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Datei '%s'\n"
+" kann nicht nach \n"
+"'%s' verschoben werden!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Datei(en) nicht verschoben..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Wollen sie diese Datei wirklich löschen:\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Datei löschen..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Datei '%s' gelöscht"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Kann das Verzeichnis nicht lesen :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Suche läuft..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Datei: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "%d Datei(en) in diesem Verzeichnis und Unterverzeichnissen gefunden"
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "%d Datei(en) in diesem Verzeichnis gefunden"
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u Datei(en)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Keine Datei in diesem Verzeichnis oder Unterverzeichnissen gefunden!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Keine Datei in diesem Verzeichnis gefunden!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Suche..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr "Suche ABBRECHEN... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Wählen sie ein Verzeichnis aus!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Dieses Feld in allen ausgewählten Dateien eintragen"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "'_' und '%20' in Leerzeichen umwandeln"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "' ' in '_' umwandeln"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Alles groß schreiben"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Alles klein schreiben"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Ersten Buchstaben groß schreiben"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Der erste Buchstabe jeden Wortes wird groß geschrieben"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Leerzeichen entfernen"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Vor Großbuchstaben ein Leerzeichen einfügen"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Doppelte Leerzeichen oder Unterstriche entfernen"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Fehlerhaft beendet! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, c-format
+msgid "Received signal %s (%d)"
+msgstr "Signal %s (%d) empfangen "
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Sie haben evtl. einen Fehler in EasyTAG gefunden, sende bitte einen "
+"Fehlerbericht mit einem GDB-Backtrace ('gdb easytag core', dann 'bt' und "
+"'l') an <easytag@gmail.com>"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Unbekanntes Signal"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Benutzung: easytag [Option] \n"
+" oder: easytag [Verzeichnis]\n"
+"\n"
+"Optionen:\n"
+"---------\n"
+"-h, --help Diesen Text anzeigen und beenden.\n"
+"-v, --version Grundlegende Informationen anzeigen und beenden.\n"
+"\n"
+"Verzeichnis:\n"
+"------------\n"
+"c:/Pfad_zu/Dateien Absoluten Pfad laden,\n"
+"/Pfad_zu/Dateien Absoluten Pfad laden,\n"
+"Pfad_zu/Dateien verwende relativen Pfad.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Normal beendet."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Einige Dateien wurden verändert, aber nicht gespeichert...\n"
+"Möchten sie diese vor Beendigung des Programms speichern?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Wollen sie das Programm wirklich beenden? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3-Tag"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis Tag"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis Tag"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE-Tag"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "MP4/M4A/AAC-Tag"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr "Wavpack-Tag"
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3-Datei"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2-Datei"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis-Datei"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Nächste Datei"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC-Datei"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MusePack-Datei"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey's-Audio-Datei"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "MP4/AAC-Datei"
+
+#: src/et_core.c:2599
+msgid "Wavpack File"
+msgstr "Wavpack-Datei"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Bilder"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Der Dateiname '%s' konnte nicht in die\n"
+"Dateinamenskodierung des Systems konvertiert werden.\n"
+"(Versuchen sie, die Umgebungsvariable G_FILENAME_ENCODING zu setzen)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Dateinamensübersetzung"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "Der Dateiname '%s' überschreitet %d Zeichen und wird abgeschnitten!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Encoder:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Kanäle:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "FEHLER beim Öffnen der Datei: '%s' als FLAC (%s)."
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "FEHLER: Kann Kommentare nicht in Datei schreiben: '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Tag von '%s' wurde geschrieben"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Tag von '%s' wurde entfernt"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Fehler beim Entfernen des IDv1-Tags von '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Fehler beim Entfernen des IDv2-Tags von '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Fehler beim Aktualisieren des ID3v2-Tags von '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"Sie haben versucht, dieses Tag als Unicode zu speichern, aber Ihre Version "
+"von id3lib ist fehlerhaft.\n"
+"Wenn sie diese Datei neu laden, dann könnten einige Zeichen nicht richtig "
+"angezeigt werden...\n"
+"Wenden sie bitte den Patch src/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug."
+"diff\n"
+"aus den EasyTAG-Quellen auf id3lib an.\n"
+"Beachten sie, dass diese Nachricht nur einmal angezeigt wird.\n"
+"\n"
+"Datei : %s"
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Fehler beim Aktualisieren des ID3v1-Tags von '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Tag von '%s' wurde aktualisiert"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Kein Fehler gemeldet"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Kein Speicher verfügbar"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Keine Daten zu analysieren"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Ungeeignet formatierte Daten"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Kein Schreibpuffer vorhanden"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Puffer zu klein"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Ungültige Frame-ID"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Angefordertes Feld nicht gefunden"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Unbekannter Feldtyp"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Tag hängt bereits an einer Datei"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Ungültige Tag-Version"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Keine Datei zu analysieren"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Versuch, in eine nur lesbare Datei zu schreiben"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Fehler beim Komprimieren/Dekomprimieren"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Unbekannte Fehlermeldung!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Da die beschädigte Datei '%s' einen Fehler mit id3lib auslöst,\n"
+"wird sie vom Programm nicht bearbeitet."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Beschädigte Datei..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr "Logbuch"
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Ja "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Nein "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Anwenden "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Speichern "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Abbrechen "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Schließen "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Schreiben "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr "Ausführen "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr "Suche "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "Auswahl..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Wähle Verzeichnis..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Datei auswählen..."
+
+#: src/misc.c:886
+msgid "Warning..."
+msgstr "Warnung..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr "Kein Musikprogramm vorgegeben!"
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Kann %s nicht ausführen (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Erzeuge eine Wiedergabeliste"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "M3U-Wiedergabelistenname"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Nutze Verzeichnisnamen"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Bearbeite Masken"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Wiedergabelisten-Optionen"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Nur ausgewählte Dateien einfügen"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Wenn aktiviert, dann werden nur die ausgewählten Dateien in die "
+"Wiedergabeliste geschrieben, ansonsten werden alle Dateien verwendet."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Benutze vollen Pfad für Dateien in der Wiedergabeliste"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Benutze relativen Pfad für Dateien in der Wiedergabeliste"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Erzeuge Wiedergabeliste im Elternverzeichnis"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Wenn aktiviert, dann wird die Wiedergabelistendatei im Elternverzeichnis "
+"erzeugt."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Nutze DOS-Verzeichnistrennsymbol"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Diese Option ersetzt das UNIX-Verzeichnistrennzeichen '/' durch das DOS-"
+"Zeichen '\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Inhalt der Wiedergabeliste"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Nur Liste der Dateien schreiben."
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Verwende Dateinamen beim Schreiben der Informationen"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Schreibe Information mit :"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Wiedergabelistendatei '%s' existiert bereits!\n"
+"Ãœberschreiben?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Schreibe Wiedergabeliste..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Kann Wiedergabelistendatei '%s' nicht schreiben!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Wiedergabelistendatei '%s' wurde geschrieben."
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Stück #"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Kommentar"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Komponist"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Originalkünstler"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Copyright"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Kodierer"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Suche eine Datei"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Geben sie ein Wort zur Suche in den Dateien ein. Oder geben sie nichts ein "
+"zur Anzeige aller Dateien."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "In :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "der Dateiname"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "das Tag"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Groß/Kleinschreibung beachten"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Gefunden : %d Datei(en)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Lade die Dateinamen aus einer Textdatei"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Datei :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr "Laden "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Geladener Dateiinhalt :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Dateinamensliste :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Wenn diese Option aktiviert wird, dann wird der ausgewählte Scanner nach dem "
+"Laden der Dateinamen gestartet (das Scannerfenster muss offen sein)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Füge eine Leerzeile ein"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Diese Zeile löschen"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Lösche alle Leerzeilen"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Neu Laden"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Audio"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "MP4-Format ungültig"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr "Stereo"
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr "Joint Stereo"
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr "Zweikanal"
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr "Einzelner Kanal"
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Aktion für die übrigen Dateien wiederholen"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+"Ogg Vorbis: Der ausgewählte Bitstrom existiert nicht oder die Datei wurde "
+"nicht richtig initialisiert (Datei: '%s')."
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr "Ogg Vorbis: Lesen vom Datenträger lieferte einen Fehler (Datei: '%s')."
+
+#: src/ogg_header.c:134
+#, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Ogg Vorbis: Bitstrom enthält keine Vorbis-Daten (Datei: '%s')."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr "Ogg Vorbis: Nicht passende Vorbis-Version (Datei: '%s')."
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr "Ogg Vorbis: Ungültige Vorbis-Bitstromkennung (Datei: '%s')."
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+"Ogg Vorbis: Interner Logikfehler, das deutet auf einen Fehler oder einen "
+"defekten Heap/Stack hin (Datei: '%s')."
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "FEHLER beim Öffnen der Datei: '%s' als Vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Warnung: Die Ogg-Datei '%s' enthält ein ID3v2-Tag."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Füge Bilder hinzu"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Alle Dateien"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG und JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Bildeigenschaften %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Bildtyp"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Bildbeschreibung:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Speichere Bild %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Diese Datei existiert bereits:\n"
+"'%s'\n"
+"Soll sie überschrieben werden?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Datei speichern..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "JPEG-Bild"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "PNG-Bild"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Unbekanntes Bild"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "32x32-Pixel PNG-Symboldatei"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Andere Symboldatei"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Frontcover"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Rückseite"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Faltblatt"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Medium (z.B. Label der CD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Führender Künstler/Darsteller/Solist"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Künstler/Darsteller"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Dirigent"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Band/Orchester"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Lyriker/Textautor"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Aufnahmeort"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Während der Aufnahme"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Während der Aufführung"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Film/Video-Bildschirmfoto"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Ein heller, farbiger Fisch"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Illustration"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Band/Künstlerlogo"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Verlags/Studiologo"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Unbekannter Bildtyp"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "Pixel"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Typ"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Beschreibung"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Das Bild kann nicht angezeigt werden, da nicht genug Daten zur Erzeugung "
+"eines Bildpuffers geladen werden konnten."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Lade Bilddatei..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kann die Datei nicht öffnen : '\n"
+"%s' !\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Bilddatei nicht geladen..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Einstellungen..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Auswahl"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Zum Vorgabeverzeichnis gehen"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Geben sie das Verzeichnis an in dem sich Ihre Dateien befinden. Dieser Pfad "
+"wird geladen wenn EasyTAG ohne Parameter gestartet wird."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Suche automatisch beim Start von EasyTAG in dem folgenden Verzeichnis nach "
+"Dateien. Der Pfad kann mit einem Parameter an easytag überschrieben werden "
+"(easytag /Pfad_zu/mp3_Dateien)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Durchsuche Unterverzeichnisse"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr ""
+"Durchsuche Unterverzeichnisse nach Dateien, wenn ein Verzeichnis in den Baum "
+"eingelesen wird."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Zeige Unterverzeichnisse, wenn ein Verzeichnis ausgewählt wird"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Dies klappt den ausgewählten Knoten in der Dateiauswahl auf, um die "
+"Unterverzeichnisse anzuzeigen."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Durchsuche versteckte Verzeichnisse"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+"Durchsuche versteckte Verzeichnisse nach Dateien (Verzeichnisse, die mit "
+"einem '.' anfangen)."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Benutzerschnittstelle"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Header-Informationen werden angezeigt"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Informationen über die Datei wie Bitrate, Spielzeit, Dateigröße werden unter "
+"dem Dateinamen angezeigt."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Zeige veränderte Dateien in der Liste durch:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "rote Farbe"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Fettschrift"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Sortierungseinstellungen"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Sortiere die Dateiliste nach :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Sortiere Datei-Namen aufsteigend..."
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Sortiere Datei-Namen absteigend..."
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Aufsteigende Titelnummer"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Absteigende Titelnummer"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Aufsteigendes Erstellungsdatum"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Absteigendes Erstellungsdatum"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Titel aufsteigend..."
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Titel absteigend..."
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Künstler aufsteigend"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Künstler absteigend"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Album aufsteigend"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Album absteigend"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Jahr aufsteigend"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Jahr absteigend"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Genre aufsteigend"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Genre absteigend"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Kommentar aufsteigend"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Kommentar absteigend"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Wähle die Art der Datei-Sortierung beim Laden eines Verzeichnisses.."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+"Wenn aktiviert, dann hängt die Sortierung der Liste von der Groß/"
+"Kleinschreibung ab."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Position der Meldungs-Dialoge"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Keine festgelegte Position"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Fenstermanager die Fenster platzieren lassen."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "Mitte des Hauptfensters"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Fenster sollen in der Mitte des Hauptfensters plaziert werden."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Mitte des Bildschirms"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Fenster sollen in der Mitte des Bildschirms plaziert werden."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Mausposition"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Fenster sollen an der aktuellen Mausposition plaziert werden."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Datei Audio-Player"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Player starten :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Gib das Programm zum Abspielen der Dateien an. Einige Argumente können dem "
+"Programm übergeben vor den Dateinamen übergeben werden (z.B. 'xmms -p')."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Dateieinstellungen"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Dateioptionen"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "Ersetze illegale Zeichen im Dateinamen (für Windows und CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Konvertiere illegale Zeichen des Dateinamens für FAT32/16- und ISO9660"
+"+Joliet-Dateisysteme ('\\', ':', '*', '?', '\"', '<', '>', '|'), um "
+"Probleme beim Umbenennen der Datei zu verhindern. Das ist sinnvoll beim "
+"Umbenennen der Datei über die Tags mit dem Scanner."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Wandle Dateinamenserweiterung in :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Kleinbuchstaben"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Die Erweiterung wird beispielsweise nach '.mp3' konvertiert."
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Großbuchstaben"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Die Erweiterung wird beispielsweise nach '.MP3' konvertiert."
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Keine Änderungen"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "Die Erweiterung wird nicht konvertiert."
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Bewahre Änderungsdatum der Datei"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Bewahre das Änderungsdatum (in den Dateieinstellungen) beim Speichern der "
+"Datei."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Zeichensatz für Dateinamen"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Anzuwendende Regeln, wenn einige Zeichen beim Schreiben das Dateinamens "
+"nicht in die Systemzeichenkodierung umgewandelt werden können:"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Verwende eine andere Zeichenkodierung"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Mit dieser Einstellung wird die Umwandlung in die zu Ihrer Spracheinstellung "
+"gehörende Kodierung versucht (z.B. ISO-8859-1 für 'fr', KOI8-R für 'ru', ISO-"
+"8859-2 für 'ro'). Wenn das fehlschlägt, wird die Kodierung ISO-8859-1 "
+"versucht."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr "Erzwinge die Systemzeichenkodierung und aktiviere die Transliteration"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Mit dieser Einstellung wird ein Zeichen, das nicht im Zielzeichensatz "
+"existiert, durch ein oder mehrere ähnlich aussehende Zeichen ersetzt."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"Erzwinge die Systemzeichenkodierung und lasse einige Zeichen einfach weg"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Mit dieser Einstellung werden Zeichen, die im Zielzeichensatz nicht "
+"existieren, einfach weggelassen."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Tag-Einstellungen"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Tag-Optionen"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr ""
+"Automatische Vervollständigung des Datums falls dieses nicht vollständig ist"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Versuche, das Feld für den Jahreseintrag zu vervollständigen, wenn nur die "
+"letzten Ziffern eingegeben wurden. (Beispiel, aktuelles Jahr 2005: 5 => "
+"2005, 4 => 2004, 6 => 1996, 95 => 1995, ...)Wenn nur die letzten Ziffern des "
+"Jahres eingegeben wurden, wird versucht, die Angaben zu vervollständigen. "
+"(Beispiel, aktuelles Jahr 2005: 5 => 2005, 4 => 2004, 6 => 1996, 95 => "
+"1995, ...)"
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Schreibe die Stück-Nummer mit der folgenden Stellenanzahl :"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Wenn aktiviert, dann werden für das Feld mit der Stück-Nummer 'n' Zeichen "
+"verwendet und die Ziffer '0' zum Auffüllen benutzt (z.B. mit zwei Zeichen: "
+"'05', '09', '10'...). Ansonsten wird der 'rohe' Wert verwendet."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Ogg Vorbis-Dateien: Den Kommentar auch in das XMMS-Format schreiben"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS verwendet im Gegensatz zu den anderen Anwendungen nicht den richtigen "
+"Weg, um einen Kommentar in einer Ogg Vorbis-Datei zu erkennen. Normalerweise "
+"wird dieses Feld durch die Zeichenkette 'comment=' erkannt, XMMS verwendet "
+"aber nur '='. Deaktiviere diese Option, damit sich andere Anwendungen nicht "
+"über ein unbekanntes Feld beschweren. Dann wird aber in XMMS der Kommentar "
+"nicht angezeigt."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"Fokus beim Wechsel zwischen Dateien in der Liste mit Bild Hoch/Bild Runter:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Lasse Fokus auf dem gleichen Eingabefeld"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Wechsel den Fokus zurück zum 'Titel'-Feld"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "ID3-Tag-Einstellungen"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "ID3-Tag-Regeln"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Schreibe ID3-Tags in FLAC-Dateien mit FLAC-Tag"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Ist dies aktiviert, werden ID3-Tags auch in FLAC-Dateien geschrieben. (nach "
+"den obigen zwei Regeln, plus das FLAC-Tag). Ansonsten werden ID3-Tags "
+"entfernt."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Tags werden entfernt wenn alle Felder leer sind"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Da ID3v2-Tags außer Titel, Künstler, Album, Jahr, Stück, Genre, oder "
+"Kommentar noch weitere Daten enthalten können (wie z.B. angehängte Bilder, "
+"Liedtexte, ...) , erlaubt es diese Option, den Tag gänzlich zu entfernen, "
+"wenn alle der sieben Standard-Datenfelder leer sind."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Automatisch alte ID3v2-Versionen konvertieren"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Wenn aktiviert, dann wird ein Tag in einer alten ID3v2-Version (z.B. "
+"ID3v2.2) auf die ID3v2.3-Version aktualisiert."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "ID3v2-Tag schreiben"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Zeichensatz für ID3-Tags"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "ID3v2-Tag schreiben"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "ID3v2-Tag schreiben"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Ist dies aktiviert, wird ein ID3v2-Tag am Anfang von MP3-Dateien hinzugefügt "
+"oder aktualisiert. Anderenfalls wird der Tag entfernt."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Beschreibung:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Kodierer"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Zeichensatz um Tag-Daten in die Datei zu schreiben."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr "Keine"
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3-Tag"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "ID3v1.x-Tag schreiben"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Ist dies aktiviert, wird ein ID3v1-Tag am Ende von MP3-Dateien hinzugefügt "
+"oder aktualisiert. Anderenfalls wird der Tag entfernt."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Zeichensatz um Tag-Daten in die Datei zu schreiben."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Zeichensatz für ID3-Tags"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Dieser Zeichensatz wird verwendet zum Lesen des Tags, zur Konvertierung "
+"jeder Zeichenkette aus einem ISO-8859-1-Feld des Tags (für ID3v2 und/oder "
+"ID3v1-Tag).\n"
+"\n"
+"Zum Beispiel:\n"
+" - in früheren Versionen von EasyTAG konnte man UTF-8-Zeichenketten in ein "
+"ISO-8859-1-Feld speichern. Das ist nicht korrekt! Zur Konvertierung dieser "
+"Tags in Unicode: Aktivieren sie diese Einstellung und wählen sie UTF-8. Sie "
+"müssen außerdem oben 'Versuche die Tags als ISO-8859-1 zu speichern. Wenn "
+"das nicht möglich ist, verwende UNICODE (empfohlen)' oder 'Speichere Tags "
+"immer im UNICODE-Zeichensatz'.\n"
+" - Wenn Unicode nicht verwendet wird, dann können Russen den Zeichensatz "
+"'Windows-1251' wählen, wenn die Tags unter Windows geschrieben wurden oder "
+"'KOI8-R' für Tags, die unter Unix geschrieben wurden."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Zeichensatz um Tag-Daten aus der Datei zu lesen."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Scanner"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Scanner zum Füllen der Tags - Zeichensatzkonvertierung"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Unterstrich '_' und '%20' durch ein Leerzeichen ' ' ersetzen"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Leerzeichen ' ' durch Unterstrich '_' ersetzen"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Wenn aktiviert, dann wird diese Konvertierung bei der Anwendung einer Maske "
+"im Scanner nach Tags benutzt."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Scanner zum Umbenennen der Dateien - Zeichensatzkonvertierung"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Wenn aktiviert, dann wird diese Konvertierung bei der Anwendung einer Maske "
+"im Scanner nach Dateinamen benutzt."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Scanner zum Verarbeiten der Felder - Zeichensatzkonvertierung"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+"Wandle die ersten Buchstaben von einigen Präpositionen und Artikeln nicht in "
+"Großbuchstaben um."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Wandle die ersten Buchstaben von Wörtern wie Präpositionen, Artikeln oder "
+"Wörtern wie feat. nicht in Großbuchstaben um, wenn im Scanner 'Der erste "
+"Buchstabe jeden Wortes wird groß geschrieben' eingestellt ist (z.B. erhält "
+"man 'Text in an Entry' statt 'Text In An Entry')."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Scannerfenster"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Öffne das Scannerfenster beim Start"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Aktiviere diese Option, um beim Start von EasyTAG automatisch das "
+"Scannerfenster zu öffnen."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Scanner-Fenster immer im Vordergrund"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Wenn aktiviert, wird das Maskenfenster immer über dem Hauptfenster liegen."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Felder"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Felder werden überschrieben, wenn ein Tag gescannt wird"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Scanner ersetzt vorhandenen Text in Feldern mit neuem Inhalt, wenn "
+"aktiviert. Wenn nicht, werden nur leere Felder ausgefüllt."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Standardmäßig diesen Text verwenden :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Aktivieren sie diese Option, wenn bei Verwendung des 'Fülle Tag'-Scanners "
+"dieser Text in das Kommentarfeld eingetragen werden soll."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "Verwende CRC32 als Standardkommentar (nur für Dateien mit ID3-Tags)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Berechnet den CRC-32-Wert der Datei und schreibt ihn bei der Verwendung des "
+"'Fülle Tag'-Scanners in das Kommentarfeld."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "CD-Datenbank"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "Servereinstellungen für automatische Suche"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Name :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Port :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI-Pfad :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "Server-Einstellungen für manuelle Suche"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+msgid "Local CD Data Base"
+msgstr "Lokale CD-Datenbank"
+
+#: src/prefs.c:1203
+msgid "Path :"
+msgstr "Pfad :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+"Geben sie das Verzeichnis mit der lokalen CD-Datenbank an. Die lokale CD-"
+"Datenbank enthält die elf Verzeichnisse 'blues', 'classical', 'country', "
+"'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' und 'misc'."
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Proxy-Einstellungen"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Verwende Proxy"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Aktiviere die Einstellungen des Proxy-Servers."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Rechnername :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Name des Proxy-Servers."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Port des Proxy-Servers."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Nutzername :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Nutzername für den Proxy-Server."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Nutzer-Passwort :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Passwort des Nutzers des Proxy-Servers."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Stücknamensliste:"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr "Wähle passende Datei (nach Position oder DLM wenn unterhalb aktiviert)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Wenn aktiviert, wird bei der Auswahl einer Zeile in der Titelliste die "
+"passende Datei in der Hauptliste ebenfalls ausgewählt."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Benutze den Levenshtein-Algorithmus (DLM), um passende Zeilen (Titel) zu "
+"Audiodateien (Dateinamen) zu finden"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Bestätigung"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Beenden des Programms bestätigen"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Falls aktiviert, öffnet sich eine Dialogbox, um eine Bestätigung zu "
+"erfragen, bevor das Programm beendet wird."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Schreiben des Tags bestätigen"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Umbenennen der Datei bestätigen"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Löschen der Datei bestätigen"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Schreiben der Wiedergabeliste bestätigen"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Wende Änderungen an (ohne zu speichern!) und schließe dieses Fenster"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Dieses Fenster schließen ohne abzuspeichern"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Änderungen speichern und dieses Fenster schließen"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Beispiel: %.*d_-_Stück_Name_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Änderungen angewandt"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Konfiguration gespeichert"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Konfiguration ist unverändert"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" Der ausgewählte Pfad für 'Vorgabepfad zu Dateien' ist nicht gültig!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Kein Verzeichnis"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "Das Wiedergabeprogramm '%s' wurde nicht gefunden!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Fülle Tag"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Datei und Verzeichnis umbenennen"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Felder verarbeiten"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Tag wurde erfolgreich gescannt..."
+
+#: src/scan.c:352
+#, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Tag wurde erfolgreich gescannt...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+"Tag-Scanner: Seltsam..., die Erweiterung '%s' wurde nicht im Dateinamen '%s' "
+"gefunden!"
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Scan-Fehler: Separator '%s' in '%s' nicht auffindbar"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+"Konnte den Dateinamen '%s' nicht in die Dateinamenskodierung des Systems "
+"konvertieren."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Neuer Dateinamen wurde erfolgreich gescannt..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Neuer Dateiname wurde erfolgreich gescannt...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Scan von Tag und Dateinamen"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Scanner :"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Typ des zu verwendenden Scanners auswählen"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Öffne Scanner-Fenster / Ausgewählte Dateien scannen"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Scanneroptionen"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Maskeneditor anzeigen/verstecken"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Legende anzeigen/verstecken"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Dieses Fenster schließen"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Wählen sie für die Bestimmung von Dateiname und Pfad eine Maske aus oder "
+"geben sie unter Verwendung von Codes (siehe Legende) eine solche ein. Wird "
+"zum Ausfüllen der Tag-Felder verwendet."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Tag-Füllungs-Vorschau"
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Stelle aktuellen Pfad vor die Maske"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Auswahl oder Eingabe der Maske. Entsprechend der Codes (siehe Legende), die "
+"die Felder der Tags bestimmen, wird der neue Dateiname erzeugt.\n"
+"Verwenden sie / zum Anlegen von Verzeichnissen. Wenn das erste Zeichen / "
+"ist, ist es ein absoluter Pfad, ansonsten relativ zum alten Pfad."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Umbenennungs-Vorschau"
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Felder auswählen:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Die Schaltflächen rechts repräsentieren die Felder, welche verarbeitet "
+"werden können.\n"
+"Wählen sie die interessanten aus."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Verarbeite Dateinamensfeld"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Titelfeld verarbeiten"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Kü"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Künstlerfeld dieser Datei bearbeiten"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Albumfeld verarbeiten"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Verarbeite Genrefeld"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "K"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Kommentarfeld verarbeiten"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Ko"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Komponistenfeld verarbeiten"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Originalkünstlerfeld dieser Datei bearbeiten"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Co"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Copyright-Feld verarbeiten"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "URL-Feld verarbeiten"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "K"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Verarbeite Kodiererfeld"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Auswahl umkehren"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Alle/Keine auswählen."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "'_' und '%20' durch ' ' ersetzen"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Konvertiere :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "nach : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Ein Unterstrich oder die Zeichenkette '%20' werden durch ein Leerzeichen "
+"ersetzt. \n"
+"(Beispiel, vorher: 'Text%20in%20einem_Eintrag', danach: 'Text in einem "
+"Eintrag')."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Ein Leerzeichen wird durch einen Unterstrich ersetzt. \n"
+"Beispiel, vorher: 'Text in einem Eintrag', danach: 'Text_in_einem_Eintrag'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Ersetze ein Zeichen durch ein anderes."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Alle Wörter in allen Feldern werden in Großbuchstaben geschrieben. \n"
+"Beispiel, vorher: 'Text IN EINEM Eintrag', danach: 'TEXT IN EINEM EINTRAG'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Wörter in allen Feldern klein schreiben. \n"
+"Beispiel, vorher: 'TEXT IN einem eintrag', danach: 'text in einem eintrag'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Der erste Buchstabe des ersten Wortes in allen Feldern wird groß "
+"geschrieben. \n"
+" Beispiel, vorher: 'text IN Einem EINTRAG', danach: 'Text in einem eintrag'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Der erste Buchstabe jedes Wortes in allen Feldern wird groß geschrieben. \n"
+"Beispiel, vorher: 'Text in einem EINTRAG', danach: 'Text In Einem Eintrag'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Vor einem Großbuchstaben ein Leerzeichen einfügen"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Doppelte Leerzeichen oder Unterstriche entfernen"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Alle Leerzeichen zwischen Wörtern werden entfernt. \n"
+"Beispiel, vorher: 'Text In Einem Eintrag', danach: 'TextInEinemEintrag'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Vor jedem Großbuchstaben wird ein Leerzeichen eingefügt. \n"
+"Beispiel, vorher: 'TextInEinemEintrag', danach: 'Text In Einem Eintrag'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Doppelte Leerzeichen oder Unterstriche werden entfernt. \n"
+"Beispiel, vorher: 'Text__In__Einem Eintrag', danach: 'Text_In_Einem Eintrag'"
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Legende"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : Künstler"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : Album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : Kommentar"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : Komponist"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : Copyright"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : CD-Nummer"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : Kodierer"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : Genre"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : wird ignoriert"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : Anzahl von Stücken"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : Originalkünstler"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : Stück"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : Titel"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : Jahr"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Maskeneditor"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Neue Maske erstellen"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Maske nach oben bewegen"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Maske nach unten bewegen"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Maske duplizieren"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Vorgabemasken hinzufügen"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Maske löschen"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Masken speichern"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Neue_Maske"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Kopieren: keine Zeile ausgewählt!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Löschen: keine Zeile ausgewählt!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Nach oben bewegen: keine Zeile ausgewählt!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Nach unten bewegen: keine Zeile ausgewählt!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "FEHLER: Konfigurationsdatei kann nicht geschrieben werden: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Konfigurationsdatei '%s' kann nicht geöffnet werden (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Standardkonfiguration wird geladen..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Datei '%s' kann nicht geöffnet werden (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "FEHLER: Liste kann nicht in Datei geschrieben werden: %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Vorgaben für 'Fülle Tag'-Masken werden geladen..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Vorgabe für 'Datei umbenennen'-Masken werden geladen..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Vorgabe für 'Verzeichnis umbenennen'-Masken werden geladen..."
+
+#: src/setting.c:1589
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr "ERROR: Die Umgebungsvariable HOME ist nicht definiert!"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "FEHLER: Kann Verzeichnis '%s' nicht anlegen! (%s)"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Eingabe abgeschnitten oder leer"
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Eingabe ist kein Ogg-Bitstrom."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Fehler beim Lesen der ersten Seite des Ogg-Bitstroms."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Fehler beim Lesen des initialen Header-Paketes."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Ogg-Bitstrom enthält keine Vorbis-Daten."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Fehlerhafter Sekundär-Header."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF vor dem Ende der Vorbis-Header."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Fehlerhafte oder fehlender Daten, setze fort..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Fehler beim Schreiben des Datenstroms zur Ausgabe. Der Ausgabestrom könnte "
+"fehlerhaft oder abgeschnitten sein."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr "DLL '%s' nicht gefunden. Versuche sie zu laden..."
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr "DLL '%s' konnte nicht geladen werden"
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr "Diese Version von '%s' enthält '%s'"
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr "Funktion '%s' nicht in DLL '%s' gefunden"
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, c-format
+msgid "Audio player: '%s'"
+msgstr "Audio-Player: '%s'"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr "Verzeichnis für EasyTAG-Einstellungen: '%s'"
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Ungültige Tag-Version"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Fülle Tags auf"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Fülle ID3v2-Tags auf, damit spätere Änderungen der Tags schneller "
+#~ "geschrieben werden."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Speichere Tags immer im ISO-8859-1-Zeichensatz"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Verwende den ISO-8859-1-Zeichensatz (Ein-Byte-Zeichensatz) zum Schreiben "
+#~ "des Tags. Dieser Zeichensatz kann für ID3v2 und ID3v1-Tags verwendet "
+#~ "werden, beachten sie, dass Nicht-ISO-8859-1-Zeichen verloren gehen.\n"
+#~ "Wenn ein anderer Zeichensatz mit 'Verwende Nicht-Standardzeichensatz zum "
+#~ "Schreiben von ID3-Tags' ausgewählt wird, dann wird der statt ISO-8859-1 "
+#~ "verwendet.\n"
+#~ "Es können ein paar Regeln definiert werden, falls einige Zeichen nicht "
+#~ "umgewandelt werden können."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Versuche die Tags als ISO-8859-1 zu speichern. Wenn das nicht möglich "
+#~ "ist, verwende UNICODE (empfohlen)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Der UNICODE-Zeichensatz wird verwendet, wenn die Umwandlung nach ISO-8859-"
+#~ "1 fehlschlägt. Unicode kann für ID3v2 aber nicht für ID3v1-Tags, welche "
+#~ "nur Ein-Byte-Zeichensätze unterstützen (standardmäßig ISO-8859-1), "
+#~ "verwendet werden.\n"
+#~ "\n"
+#~ "Wenn ein anderer Zeichensatz mit 'Verwende Nicht-Standardzeichensatz zum "
+#~ "Schreiben von ID3-Tags' ausgewählt wird, dann wird der statt ISO-8859-1 "
+#~ "verwendet.\n"
+#~ "Es können ein paar Regeln definiert werden, falls einige Zeichen nicht "
+#~ "umgewandelt werden können."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Speichere Tags immer im UNICODE-Zeichensatz"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Verwende den UNICODE-Zeichensatz für ID3v2-Tags. ID3v1-Tags werden immer "
+#~ "in einem Ein-Byte-Zeichensatz gespeichert (standardmäßig ISO-8859-1).\n"
+#~ "\n"
+#~ "Wenn ein anderer Zeichensatz mit 'Verwende Nicht-Standardzeichensatz zum "
+#~ "Schreiben von ID3-Tags' ausgewählt wird, dann wird der statt ISO-8859-1 "
+#~ "verwendet."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "Überschreibe die folgenden Zeichenkodierungen für ISO-8859-1-Felder (nur "
+#~ "für Experten!):"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "Verwende Nicht-Standardzeichensatz zum Lesen von ID3-Tags:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "Verwende Nicht-Standardzeichensatz zum Schreiben von ID3-Tags:"
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Dieser Zeichensatz wird verwendet zum Schreiben der Tags, zur "
+#~ "Konvertierung von jeder Zeichenkette, die in ein ISO-8859-1-Feld im Tag "
+#~ "gespeichert wird (für ID3v2 und/oder ID3v1-Tags)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "Wende diese Regeln für ISO-8859-1-Felder an, wenn einige Zeichen beim "
+#~ "Schreiben der Tags nicht umgewandelt werden können:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Tu nichts."
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr ""
+#~ "Erzwinge die Verwendung der Zeichenkodierung und aktiviere die "
+#~ "Transliteration"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr ""
+#~ "Erzwinge die Verwendung der Zeichenkodierung und lasse einige Zeichen weg"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "Die Zeichensatz-Ãœbersetzung von '%s'\n"
+#~ "nach '%s' wird nicht unterstützt."
+
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "FEHLER beim Öffnen der Datei: '%s' (%s)."
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Lade dieses Verzeichnis beim Start"
+
+#~ msgid "#:"
+#~ msgstr "#:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "Benutze gelben Hintergrund für Tool-Tipps"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "Wenn aktiviert, wird ein gelber Hintergrund für die Tool-Tipps verwendet, "
+#~ "unabhängig von den Einstellungen des Fenster-Managers."
+
+#~ msgid ""
+#~ "If activated, when switching files with the previous/next button (or "
+#~ "shortcut), it will return the focus to the first field ('Title') of the "
+#~ "tag area, instead of keeping the focus on the same field."
+#~ msgstr ""
+#~ "Wenn aktiviert, dann wird beim Wechsel zwischen Dateien mit den Vorwärts/"
+#~ "Rückwärts-Knöpfen (oder Tasten) der Fokus zum ersten Feld ('Titel') des "
+#~ "Tags zurückwechseln, anstatt im selben Feld zu bleiben."
+
+#, fuzzy
+#~ msgid "Can't execute %s (%d)!\n"
+#~ msgstr "Kann %s nicht ausführen (%s)!\n"
+
+#~ msgid "Set new style for displaying list items"
+#~ msgstr "Wähle neuen Stil zur Anzeige von Listenelementen"
+
+#~ msgid ""
+#~ "If activated, items in list will be styled black and bold instead of red "
+#~ "and gray (example : for changed and not saved files)."
+#~ msgstr ""
+#~ "Wenn aktiviert, dann werden Listenelemente schwarz und fett anstelle von "
+#~ "rot und grau dargestellt (z.B. geänderte, nicht gespeicherte Dateien)."
+
+#~ msgid "Save _Configuration Now"
+#~ msgstr "_Konfiguration jetzt speichern"
+
+#~ msgid "Save Configuration Now"
+#~ msgstr "Konfiguration jetzt speichern"
+
+#~ msgid "Set main window size"
+#~ msgstr "Größe des Hauptfensters"
+
+#~ msgid "Width :"
+#~ msgstr "Breite :"
+
+#~ msgid "Height :"
+#~ msgstr "Höhe:"
+
+#~ msgid " Get current size "
+#~ msgstr " Aktuelle Größe übernehmen"
+
+#~ msgid ""
+#~ "Specify the default size for the main window. You must restart the "
+#~ "program to apply the new size. For your display, the max values are: "
+#~ "width=%d and height=%d."
+#~ msgstr ""
+#~ "Geben Sie die Standardgröße für das Hauptfenster an. Sie müssen das "
+#~ "Programm neu starten, damit die neuen Werte gültig werden. Für Ihren "
+#~ "Bildschirm sind die Maximalwerte: Breite=%d, Höhe=%d."
+
+#~ msgid "Width: set -1 for automatic size"
+#~ msgstr ""
+#~ "Breite: Geben Sie -1 ein, wenn diese automatisch bestimmt werden soll"
+
+#~ msgid "Heigth: set -1 for automatic size"
+#~ msgstr "Höhe: Geben Sie -1 ein, wenn diese automatisch bestimmt werden soll"
+
+#~ msgid "Set vertical right pane handle position"
+#~ msgstr "Position des vertikalen rechten Trennergriffs"
+
+#~ msgid "Position :"
+#~ msgstr "Position :"
+
+#~ msgid " Get current position "
+#~ msgstr " Aktuelle Position übernehmen "
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser frame and the tag frame. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Vorgabeposition für den Trennergriff zwischen dem Auswahlbereich und\n"
+#~ "dem Tag-Bereich. Änderungen werden beim nächsten Start wirksam."
+
+#~ msgid "Position: set -1 for automatic positioning"
+#~ msgstr "Position: Geben Sie -1 ein für automatische Positionierung"
+
+#~ msgid "Set vertical left pane handle position"
+#~ msgstr "Position des linken vertikalen Trennergriffs"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser tree and the list of files. Changes will be applied the next "
+#~ "start."
+#~ msgstr ""
+#~ "Vorgabeposition für den Trennergriff zwischen dem Baum und\n"
+#~ "der Dateiliste. Änderungen werden beim nächsten Start wirksam."
+
+#~ msgid "Set horizontal pane handle position"
+#~ msgstr "Position des horizontalen Trennergriffs"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "artist list and album list. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Legt die Vorgabeposition für den Trennergriff zwischen Künstler- und "
+#~ "Albumlisten fest. Änderungen werden beim nächsten Start wirksam."
+
+#~ msgid "Set scanner window position"
+#~ msgstr "Position des Scanner-Fensters einstellen"
+
+#~ msgid ""
+#~ "If activated, the scanner window will appear at the specified coordinates "
+#~ "relative to the main window. Use it if you want to keep the same position "
+#~ "of the scanner window each times you open it. If deactivated, the window "
+#~ "manager determines the position."
+#~ msgstr ""
+#~ "Das Scannerfenster wird an den spezifizierten Koordinaten relativ zum "
+#~ "Hauptfenster erscheinen, wenn aktiviert. Anderenfalls bestimmt der "
+#~ "Fenstermanager die Position des Scannerfensters."
+
+#~ msgid "X :"
+#~ msgstr "X :"
+
+#~ msgid "Y :"
+#~ msgstr "Y :"
+
+#~ msgid "CD Data Base Window"
+#~ msgstr "CD-Datenbankfenster"
+
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "Stelle Größe des CD-Datenbankfensters ein"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "Gibt die Standardgröße des CDDB-Fensters an."
+
+#~ msgid "Set pane handle position"
+#~ msgstr "Setze Position des Trennergriffs"
+
+#~ msgid "Specify the default position for the pane handle in the CDDB window."
+#~ msgstr "Gibt die Standardposition des Trennergriffs im CDDB-Fenster an."
+
+#~ msgid " Window height (%d) is bigger than screen height (%d)! "
+#~ msgstr " Fensterhöhe (%d) überschreitet Bildschirmhöhe (%d)! "
+
+#~ msgid "Size Error..."
+#~ msgstr "Größenfehler..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr " Fensterbreite (%d) überschreitet Bildschirmbreite (%d)! "
+
+#~ msgid "The scanner window must be open to get its current position!"
+#~ msgstr ""
+#~ "Das Scannerfenster muss geöffnet sein, um seine aktuelle Position zu "
+#~ "bestimmen!"
+
+#~ msgid "The CDDB window must be open to get its current position!"
+#~ msgstr ""
+#~ "Das CDDB-Fenster muss geöffnet sein, um seine aktuelle Position zu "
+#~ "bestimmen!"
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "Konfiguration vor dem Beenden des Programms abspeichern"
+
+#~ msgid ""
+#~ "If activated, the configuration will be automatically saved before "
+#~ "exiting the program."
+#~ msgstr ""
+#~ "Falls dies aktiviert wird, wird die Konfiguration automatisch "
+#~ "gespeichert, bevor das Programm beendet wird."
+
+#, fuzzy
+#~ msgid ""
+#~ "...and apply these rules if conversion to character set for writing ID3 "
+#~ "tags fails:"
+#~ msgstr ""
+#~ "Verwende den Standardzeichensatz ISO-8859-1 für ID3-Tags (empfohlen)"
+
+#~ msgid "Unicode (UTF-32BE)"
+#~ msgstr "Unicode (UTF-32BE)"
+
+#~ msgid "Unicode (UTF-32LE)"
+#~ msgstr "Unicode (UTF-32LE)"
+
+#~ msgid "Currently using G_FILENAME_ENCODING=%s ...\n"
+#~ msgstr "Verwende momentan G_FILENAME_ENCODING=%s ...\n"
+
+#~ msgid "Currently using G_BROKEN_FILENAMES=%s ...\n"
+#~ msgstr "Verwende momentan G_BROKEN_FILENAMES=%s ...\n"
+
+#~ msgid "Use DLM to match lines with files"
+#~ msgstr "Verwende DLM zur Zuordnung von Zeilen zu Dateien"
+
+#~ msgid ""
+#~ "When activating this option, matching of lines with files is done by a "
+#~ "fuzzy string matching, instead of direct position."
+#~ msgstr ""
+#~ "Wenn aktiviert, wird die Abbildung von Zeilen zu Dateien durch "
+#~ "fehlertolerante Zeichenkettenzuordnung statt der direkten Position "
+#~ "durchgeführt."
+
+#~ msgid "Use title case while making first letter uppercase of each word."
+#~ msgstr ""
+#~ "Verwende Regeln der Groß/Kleinschreibung für Titel, wenn jedes Wort groß "
+#~ "geschrieben werden soll."
+
+#~ msgid "_Rename File(s) ..."
+#~ msgstr "Datei(en) _umbenennen..."
+
+#~ msgid "Rename File(s) ..."
+#~ msgstr "Datei(en) umbenennen..."
+
+#~ msgid "Rename File"
+#~ msgstr "Datei umbenennen"
+
+#~ msgid "Scan Tag"
+#~ msgstr "Scanne Tag"
+
+#~ msgid "Scan File Name"
+#~ msgstr "Dateinamen scannen"
+
+#~ msgid "Character set used for files on hard disk."
+#~ msgstr "Zeichensatz für Dateien auf der Festplatte."
+
+#~ msgid ""
+#~ "The filename '%s' couldn't be converted to UTF-8. (Try setting the "
+#~ "environment variable G_FILENAME_ENCODING): %s\n"
+#~ msgstr ""
+#~ "Der Dateiname '%s' konnte nicht nach UTF-8 konvertiert werden. (Versuchen "
+#~ "Sie, die Umgebungsvariable G_FILENAME_ENCODING zu setzen): %s\n"
+
+#~ msgid "Extra"
+#~ msgstr "Extra"
+
+#~ msgid "(Not available!)"
+#~ msgstr "(Nicht vorhanden!)"
+
+#~ msgid "Keep the tree browser in memory"
+#~ msgstr "Halte den Verzeichnisbaum im Speicher"
+
+#~ msgid ""
+#~ "If activated, the subdirectories of a node aren't regenerated when "
+#~ "collapsing and re-expanding this node."
+#~ msgstr ""
+#~ "Wenn aktiviert, dann werden die Unterverzeichnisse eines Knotens nicht "
+#~ "regeneriert wenn er zusammen- und wieder auseinandergeklappt wird."
+
+#~ msgid "Select first file"
+#~ msgstr "Erste Datei auswählen"
+
+#~ msgid "Select previous file"
+#~ msgstr "Vorherige Datei auswählen"
+
+#~ msgid "Select next file"
+#~ msgstr "Nächste Datei auswählen"
+
+#~ msgid "Select last file"
+#~ msgstr "Letzte Datei auswählen"
+
+#~ msgid "Undo last changes of selected files"
+#~ msgstr "Mache letzte Änderungen an den ausgewählten Dateien rückgängig"
+
+#~ msgid "Redo last changes of selected files"
+#~ msgstr "Letzte Änderungen an den ausgewählten Dateien wiederholen"
+
+#~ msgid "Save selected files"
+#~ msgstr "Ausgewählte Dateien speichern"
+
+#~ msgid "Select all files"
+#~ msgstr "Alle Dateien auswählen"
+
+#~ msgid "Exit EasyTAG!"
+#~ msgstr "EasyTAG beenden!"
+
+#~ msgid "Reload the directory"
+#~ msgstr "Verzeichnis neu einlesen"
+
+#~ msgid "Sort list ascending by filename"
+#~ msgstr "Liste aufsteigend nach Dateinamen sortieren"
+
+#~ msgid "Sort list descending by filename"
+#~ msgstr "Liste absteigend nach Dateinamen sortieren"
+
+#~ msgid "Sort list ascending by creation date"
+#~ msgstr "Liste aufsteigend nach Erzeugungsdatum sortieren"
+
+#~ msgid "Sort list descending by creation date"
+#~ msgstr "Liste absteigend nach Erzeugungsdatum sortieren"
+
+#~ msgid "Sort list ascending by track number"
+#~ msgstr "Liste aufsteigend nach Stücknummer sortieren"
+
+#~ msgid "Sort list descending by track number"
+#~ msgstr "Liste absteigend nach Stücknummer sortieren"
+
+#~ msgid "Other sorting (from tag)"
+#~ msgstr "Andere Sortierung (aus dem Tag)"
+
+#~ msgid "Sort list ascending by title"
+#~ msgstr "Liste aufsteigend nach Titel sortieren"
+
+#~ msgid "Sort list descending by title"
+#~ msgstr "Liste absteigend nach Titel sortieren"
+
+#~ msgid "Sort list ascending by artist"
+#~ msgstr "Liste aufsteigend nach Künstler sortieren"
+
+#~ msgid "Sort list descending by artist"
+#~ msgstr "Liste absteigend nach Künstler sortieren"
+
+#~ msgid "Sort list ascending by album"
+#~ msgstr "Liste aufsteigend nach Album sortieren"
+
+#~ msgid "Sort list descending by album"
+#~ msgstr "Liste absteigend nach Album sortieren"
+
+#~ msgid "Sort list ascending by year"
+#~ msgstr "Liste aufsteigend nach Jahr sortieren"
+
+#~ msgid "Sort list descending by year"
+#~ msgstr "Liste absteigend nach Jahr sortieren"
+
+#~ msgid "Sort list ascending by genre"
+#~ msgstr "Liste aufsteigend nach Genre sortieren"
+
+#~ msgid "Sort list descending by genre"
+#~ msgstr "Liste absteigend nach Genre sortieren"
+
+#~ msgid "Sort list ascending by comment"
+#~ msgstr "Liste aufsteigend nach Kommentar sortieren"
+
+#~ msgid "Sort list descending by comment"
+#~ msgstr "Liste absteigend nach Kommentar sortieren"
+
+#~ msgid "Other sorting (from properties)"
+#~ msgstr "Andere Sortierung (aus Einstellungen)"
+
+#~ msgid "Sort list ascending by file type"
+#~ msgstr "Liste aufsteigend nach Dateityp sortieren"
+
+#~ msgid "Sort list descending by file type"
+#~ msgstr "Liste absteigend nach Dateityp sortieren"
+
+#~ msgid "Sort list ascending by file size"
+#~ msgstr "Liste aufsteigend nach Dateigröße sortieren"
+
+#~ msgid "Sort list descending by file size"
+#~ msgstr "Liste absteigend nach Dateigröße sortieren"
+
+#~ msgid "Warning: Unknown pixmap asked!\n"
+#~ msgstr "Warnung: Eine unbekannte Pixmap wurde angefordert!\n"
+
+#~ msgid "Line style :"
+#~ msgstr "Zeilenstil :"
+
+#~ msgid "Solid"
+#~ msgstr "Gefüllt"
+
+#~ msgid "Dotted"
+#~ msgstr "Gepunktet"
+
+#~ msgid "Tabbed"
+#~ msgstr "Gerahmt"
+
+#~ msgid "Select the style of the line in the browser tree."
+#~ msgstr "Wähle den Zeilenstil im Auswahl-Baum"
+
+#~ msgid "Expander style :"
+#~ msgstr "Stil des Erweiterungsknopfes :"
+
+#~ msgid "Square"
+#~ msgstr "Quadrat"
+
+#~ msgid "Triangle"
+#~ msgstr "Dreieck"
+
+#~ msgid "Circular"
+#~ msgstr "Kreis"
+
+#~ msgid "Select the style of the expander in the browser tree."
+#~ msgstr "Wähle den Stil des Erweiterungsknopfes im Auswahl-Baum."
+
+#~ msgid "No row selected!\n"
+#~ msgstr "Keine Zeile ausgewählt!\n"
+
+#~ msgid "The Scanner window isn't opened."
+#~ msgstr "Das Scanner-Fenster ist nicht offen."
+
+#~ msgid "Press the Scan button again to run the scanner."
+#~ msgstr ""
+#~ "Drücken Sie die Schaltfläche Scan noch einmal um den Scanner zu starten."
+
+#~ msgid "Character Set"
+#~ msgstr "Zeichensatz"
+
+#, fuzzy
+#~ msgid "Unselect all files"
+#~ msgstr "Alle Zeilen abwählen"
+
+#~ msgid "Tag removed"
+#~ msgstr "Tag entfernt"
+
+#~ msgid "Scan this file"
+#~ msgstr "Diese Datei scannen"
+
+#~ msgid "Scan all files"
+#~ msgstr "Alle Dateien scannen"
+
+#~ msgid "Delete this file"
+#~ msgstr "Diese Datei löschen"
+
+#~ msgid "/File/Scan All Files"
+#~ msgstr "/Datei/Alle Dateien scannen"
+
+#~ msgid "/File/Remove All Tags"
+#~ msgstr "/Datei/Alle Tags entfernen"
+
+#~ msgid "/File/Save All Files"
+#~ msgstr "/Datei/Alle Dateien speichern"
+
+#~ msgid "Save this file"
+#~ msgstr "Diese Datei speichern"
+
+#~ msgid "Remove all tags"
+#~ msgstr "Alle Tags entfernen"
+
+#, fuzzy
+#~ msgid "CDDB : Can't get host name (%s)!\n"
+#~ msgstr "FEHLER: Kann Verzeichnis '%s' nicht anlegen! (%s)\n"
+
+#~ msgid "Writing tag(s)..."
+#~ msgstr "Tag(s) werden geschrieben..."
+
+#, fuzzy
+#~ msgid "List Content :"
+#~ msgstr "Inhalt der Playliste"
+
+#~ msgid "Prepare reading of directory..."
+#~ msgstr "Lesen des Verzeichnisses wird vorbereitet..."
+
+#~ msgid "Reading directory (%d items)..."
+#~ msgstr "Verzeichnis wird gelesen (%d Einträge)..."
+
+#~ msgid "Error, tag not written (file: %s)\n"
+#~ msgstr "Fehler, Tag wurde nicht geschrieben (Datei: %s)\n"
+
+#, fuzzy
+#~ msgid "(FLAC header informations reading disabled)"
+#~ msgstr "Header-Informationen werden angezeigt"
+
+#~ msgid "/Misc/_Open Scanner Window"
+#~ msgstr "/Extra/_Scannerfenster öffnen"
+
+#~ msgid "No path selected!"
+#~ msgstr "Kein Pfad ausgewählt!"
+
+#~ msgid "Commands"
+#~ msgstr "Befehle"
+
+#~ msgid "Select position of file in list, and press Enter key or GO button"
+#~ msgstr ""
+#~ "Legen Sie die Position der Datei in der Liste fest und drücken sie dann "
+#~ "die Eingabetaste oder die GO-Schaltfläche"
+
+#~ msgid "Go to this file"
+#~ msgstr "Zu dieser Datei gehen"
+
+#~ msgid "Show Command Buttons"
+#~ msgstr "Schaltflächen für Befehle anzeigen"
+
+#~ msgid ""
+#~ "If activated, the buttons 'Scan', 'Remove', ... on the right side of the "
+#~ "main window will be displayed."
+#~ msgstr ""
+#~ "Schaltflächen für 'Scannen', 'Löschen', ... an der rechten Seite des "
+#~ "Hauptfensters anzeigen."
+
+#~ msgid "Command buttons to display"
+#~ msgstr "Befehls-Schaltflächen, die angezeigt werden sollen"
+
+#~ msgid "Spin Button"
+#~ msgstr "Spin-Button"
+
+#~ msgid "GO Button"
+#~ msgstr "GO-Knopf"
+
+#~ msgid "First"
+#~ msgstr "Erster"
+
+#~ msgid "Next"
+#~ msgstr "Nächster"
+
+#~ msgid "Last"
+#~ msgstr "Letzter"
+
+#~ msgid "Scan"
+#~ msgstr "Scannen"
+
+#~ msgid "Scan All"
+#~ msgstr "Scanne alle"
+
+#~ msgid "Remove"
+#~ msgstr "Löschen"
+
+#~ msgid "Remove All"
+#~ msgstr "Alle entfernen"
+
+#~ msgid "Undo"
+#~ msgstr "Rückgängig"
+
+#~ msgid "Undo All"
+#~ msgstr "Alles rückgängig"
+
+#~ msgid "Redo All"
+#~ msgstr "Alle wiederholen"
+
+#~ msgid "Save"
+#~ msgstr "Speichern"
+
+#~ msgid "Save All"
+#~ msgstr "Alle speichern"
+
+#~ msgid "Scan failed!"
+#~ msgstr "Scan fehlgeschlagen!"
+
+#~ msgid "All files tagged with track '%s/%s'."
+#~ msgstr "In allen Dateien wurde als Stücknummer '%s/%s' eingetragen."
+
+#~ msgid "/Misc/Run _XMMS"
+#~ msgstr "/Extra/_XMMS starten"
+
+#~ msgid "Run XMMS"
+#~ msgstr "XMMS starten"
+
+#~ msgid "Select file for character translation table..."
+#~ msgstr "Datei mit Zeichenersetzungstabelle auswählen..."
+
+#~ msgid "Can't start XMMS!"
+#~ msgstr "XMMS kann nicht gestartet werden!"
+
+#~ msgid "XMMS is starting..."
+#~ msgstr "XMMS startet..."
+
+#, fuzzy
+#~ msgid "Information..."
+#~ msgstr "Bestätigung"
+
+#, fuzzy
+#~ msgid "All files tagged with track total '%s'."
+#~ msgstr "Stücknummer '%s' wurde in allen Dateien eingetragen."
+
+#, fuzzy
+#~ msgid "Removed total track number from all files."
+#~ msgstr "Stücknummer aus allen Dateien entfernt."
+
+#~ msgid "Remove this tag"
+#~ msgstr "Diesen Tag entfernen"
+
+#~ msgid "Undo all changes"
+#~ msgstr "Alle Veränderungen rückgängig machen"
+
+#~ msgid "/File/_Apply Changes"
+#~ msgstr "/Datei/Änderungen _anwenden"
+
+#~ msgid "/File/Undo All Changes"
+#~ msgstr "/Datei/Alle Änderungen rückgängig machen"
+
+#~ msgid "/File/Redo All Changes"
+#~ msgstr "/Datei/Alle Änderungen wiederholen"
+
+#~ msgid "/File/Apply All Changes"
+#~ msgstr "/Datei/Alle Änderungen anwenden"
+
+#~ msgid "Redo all changes"
+#~ msgstr "Alle Veränderungen wiederholen"
+
+#~ msgid "Character Translation Table file invalid!\n"
+#~ msgstr "Datei mit Zeichenersetzungstabelle ist ungültig!\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Character Translation Table file (%s) loaded...\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Datei (%s) mit Zeichenersetzungstabelle wurde geladen...\n"
+
+#~ msgid "Translation file:"
+#~ msgstr "Datei der Zeichenersetzungstabelle:"
+
+#~ msgid "Use a ircII style translation file."
+#~ msgstr "Verwende Ersetzungsdatei im ircII-Stil."
+
+#~ msgid ""
+#~ "The selected file for character translation table isn't valid!\n"
+#~ " (%s) "
+#~ msgstr ""
+#~ "Die ausgewählte Datei für die Zeichenersetzungstabelle ist ungültig!\n"
+#~ " (%s) "
+
+#~ msgid "Not a regular file or link"
+#~ msgstr "Weder eine Datei noch ein Link"
+
+#~ msgid "Can't load this translation file! (Invalid data!)"
+#~ msgstr "Kann diese Ersetzungsdatei nicht laden! (Ungültige Daten!)"
+
+#~ msgid "Arabic (IBM-864-I)"
+#~ msgstr "Arabisch (IBM-864-I)"
+
+#~ msgid "Arabic (ISO-8859-6-E)"
+#~ msgstr "Arabisch (ISO-8859-6-E)"
+
+#~ msgid "Arabic (ISO-8859-6-I)"
+#~ msgstr "Arabisch (ISO-8859-6-I)"
+
+#~ msgid "Arabic (MacArabic)"
+#~ msgstr "Arabisch (MacArabic)"
+
+#~ msgid "Armenian (ARMSCII-8)"
+#~ msgstr "Armenisch (ARMSCII-8)"
+
+#~ msgid "Central European (MacCE)"
+#~ msgstr "Mitteleuropäisch (MacCE)"
+
+#~ msgid "Chinese Simplified (GBK)"
+#~ msgstr "Vereinfachtes Chinesisch (GBK)"
+
+#~ msgid "Chinese Simplified (HZ)"
+#~ msgstr "Vereinfachtes Chinesisch (HZ)"
+
+#~ msgid "Chinese Traditional (EUC-TW)"
+#~ msgstr "Traditionelles Chinesisch (EUC-TW)"
+
+#~ msgid "Croatian (MacCroatian)"
+#~ msgstr "Kroatisch (MacCroatian)"
+
+#~ msgid "Cyrillic (MacCyrillic)"
+#~ msgstr "Kyrillisch (MacCyrillic)"
+
+#~ msgid "Cyrillic/Ukrainian (MacUkrainian)"
+#~ msgstr "Kyrillisch/Ukrainisch (MacUkrainian)"
+
+#~ msgid "Farsi (MacFarsi)"
+#~ msgstr "Farsi (MacFarsi"
+
+#~ msgid "Greek (MacGreek)"
+#~ msgstr "Griechisch (MacGreek)"
+
+#~ msgid "Gujarati (MacGujarati)"
+#~ msgstr "Gujarati (MacGujarati)"
+
+#~ msgid "Gurmukhi (MacGurmukhi)"
+#~ msgstr "Gurmukhi (MacGurmukhi"
+
+#~ msgid "Hebrew (ISO-8859-8-E)"
+#~ msgstr "Hebräisch (ISO-8859-8-E)"
+
+#~ msgid "Hebrew (ISO-8859-8-I)"
+#~ msgstr "Hebräisch (ISO-8859-8-I)"
+
+#~ msgid "Hebrew (MacHebrew)"
+#~ msgstr "Hebräisch (MacHebrew)"
+
+#~ msgid "Hindi (MacDevanagari)"
+#~ msgstr "Hindi (MacDevanagari)"
+
+#~ msgid "Icelandic (MacIcelandic)"
+#~ msgstr "Isländisch (MacIcelandic)"
+
+#~ msgid "Korean (JOHAB)"
+#~ msgstr "Koreanisch (JOHAB)"
+
+#~ msgid "Korean (UHC)"
+#~ msgstr "Koreanisch (UHC)"
+
+#~ msgid "Romanian (MacRomanian)"
+#~ msgstr "Rumänisch (MacRomanian)"
+
+#~ msgid "Turkish (MacTurkish)"
+#~ msgstr "Türkisch (MacTurkish)"
+
+#~ msgid "User Defined"
+#~ msgstr "Benutzerdefiniert"
+
+#~ msgid "Vietnamese (TCVN)"
+#~ msgstr "Vietnamesisch (TCVN)"
+
+#~ msgid "Vietnamese (VPS)"
+#~ msgstr "Vietnamesisch (VPS)"
+
+#~ msgid "Western (MacRoman)"
+#~ msgstr "Westlich (MacRoman)"
+
+#~ msgid "Stop"
+#~ msgstr "Stop"
+
+#~ msgid " STOP "
+#~ msgstr " STOP "
+
+#, fuzzy
+#~ msgid "Default path to the files"
+#~ msgstr "Vorgabepfad zu MP3-Dateien"
+
+#~ msgid "Load on startup"
+#~ msgstr "Lade beim Start"
+
+#~ msgid "Search files in the following directory when EasyTAG starts."
+#~ msgstr "Suche Dateien im angegebenem Verzeichnis beim Start von EasyTAG."
+
+#~ msgid "Added to undo list: %s\n"
+#~ msgstr "Zur Rückgängig-Liste hinzugefügt: %s\n"
+
+#~ msgid "Undo error: can't find file '%s' in the undo list!\n"
+#~ msgstr "Undo-Fehler: kann Datei '%s' nicht in der Undo-Liste finden!\n"
+
+#~ msgid "Undo restored: %s\n"
+#~ msgstr "Undo wiederhergestellt: %s\n"
+
+#~ msgid "(#:%d) Next undo for: %s"
+#~ msgstr "(#:%d) Nächstes Rückgängigmachen für: %s"
+
+#~ msgid "No undo data!"
+#~ msgstr "Keine Daten zum Rückgängigmachen!"
+
+#~ msgid "First file selected..."
+#~ msgstr "Erste Datei ausgewählt..."
+
+#~ msgid "Last file selected..."
+#~ msgstr "Letzte Datei ausgewählt..."
+
+#~ msgid ""
+#~ "id3lib-3.7.13: Some problems occur with this version.\n"
+#~ "Please install version 3.7.12 for better results.\n"
+#~ "See ftp://easytag.sourceforge.net/pub/easytag/id3lib/\n"
+#~ msgstr ""
+#~ "id3lib-3.7.13: Mit dieser Version gibt es einige Probleme.\n"
+#~ "Bitte installieren Sie Version 3.7.12 für bessere Ergebnisse.\n"
+#~ "Siehe ftp://easytag.sourceforge.net/pub/easytag/id3lib/\n"
+
+#~ msgid "All files tagged without track."
+#~ msgstr "Alle Dateien mit leerer Stücknummer getaggt."
+
+#~ msgid "Tag scanned successfully..."
+#~ msgstr "Tag erfolgreich gescannt..."
+
+#~ msgid "Convert ' ' into '_'"
+#~ msgstr "Konvertiere ' ' zu '_'"
+
+#~ msgid "Scanner for Tag and File Name..."
+#~ msgstr "Scanner für Tag und Dateinamen..."
+
+#~ msgid "Do the same for the rest"
+#~ msgstr "Wiederhole Aktion für die übrigen Dateien"
+
+#~ msgid "Save All Files"
+#~ msgstr "Speichere alle Dateien"
+
+#~ msgid "Press the Scan again button to run the scanner."
+#~ msgstr "Drücken Sie Scan noch einmal um den Scanner zu starten."
+
+#~ msgid "Move text between parentheses '( )' to comment field (Mode 1 only)"
+#~ msgstr ""
+#~ "Bewege Text zwischen Klammern '( )' ins Kommentarfeld (lediglich Modus 1)"
+
+#~ msgid "Undo error: Can't find file '%s' in the list!\n"
+#~ msgstr "Undo Fehler: Die Datei '%s' ist nicht in der Liste!\n"
+
+#~ msgid "Undo Added: %s\n"
+#~ msgstr "Undo hinzugefügt: %s\n"
+
+#~ msgid "Set this Title to all Tags"
+#~ msgstr "Diesen Titel auf alle Tags anwenden"
+
+#~ msgid "Set this Artist to all Tags"
+#~ msgstr "Diesen Künstler auf alle Tags anwenden"
+
+#~ msgid "Set this Album to all Tags"
+#~ msgstr "Dieses Album auf alle Tags anwenden"
+
+#~ msgid "Set this Year to all Tags"
+#~ msgstr "Dieses Jahr auf alle Tags anwenden"
+
+#~ msgid "Set this Genre to all Tags"
+#~ msgstr "Diese Genre auf alle Tags anwenden"
+
+#~ msgid "Set this Comment to all Tags"
+#~ msgstr "Diesen Kommentar auf alle Tags anwenden"
+
+#~ msgid "But ID3v2.%u.%u ISN'T SUPPORTED!\n"
+#~ msgstr "Aber ID3v2.%u.%u WIRD NICHT UNTERSTÃœTZT!\n"
+
+#~ msgid "ID3 v1"
+#~ msgstr "ID3 v1"
+
+#~ msgid ""
+#~ "Keep the whole comment field (if size more than 28 characters) and don't "
+#~ "write track number."
+#~ msgstr ""
+#~ "Behalte den ganzen Kommentar (falls er größer als 28 Zeichen ist) und "
+#~ "schreibe keine Track Nummer."
+
+#~ msgid "ID3 v1.1 (recommended)"
+#~ msgstr "ID3 v1.1 (empfohlen)"
+
+#~ msgid ""
+#~ "Even if comment field size is more than 28 characters, suppress the 2 "
+#~ "last characters to write track number."
+#~ msgstr ""
+#~ "Lösche die letzen 2 Zeichen und schreibe die Track Nummer auch wenn der "
+#~ "Kommentar länger als 28 Zeichen ist."
+
+#~ msgid "Mode 1"
+#~ msgstr "Modus 1"
+
+#~ msgid "Use scan mode of EasyTAG 0.7"
+#~ msgstr "Benutze Scanmodus von EasyTAG 0.7"
+
+#~ msgid "Mode 2"
+#~ msgstr "Modus 2"
+
+#~ msgid "Priority"
+#~ msgstr "Priorität"
+
+#~ msgid "Nth file selected..."
+#~ msgstr "N-te Datei ausgewählt..."
+
+#~ msgid ""
+#~ "Some files have been modified but not saved...\n"
+#~ " Do you want to save them before to quit the program?"
+#~ msgstr ""
+#~ "Einige Dateien wurden geändert aber nicht gespeichert...\n"
+#~ " Möchten Sie diese vor Verlassen des Programms speichern?"
+
+#~ msgid " Close "
+#~ msgstr " Schließen "
+
+#~ msgid " (-1 = automatic) "
+#~ msgstr " (-1 = automatisch) "
+
+#~ msgid "Loading default values...\n"
+#~ msgstr "Lade Standardwerte...\n"
+
+#~ msgid "/File/_Scan Tag"
+#~ msgstr "/Datei/_Scanne Tag"
+
+#~ msgid "Replace string '%20' by space ' '"
+#~ msgstr "Ersetze '%20' durch ein Leerzeichen ' '"
+
+#~ msgid "Apply"
+#~ msgstr "Anwenden"
+
+#~ msgid "/File/_Undo"
+#~ msgstr "/Datei/_Rückgängig"
+
+#~ msgid "Tag scanned"
+#~ msgstr "Tag gescannt"
+
+#~ msgid " You have entered an invalid path! "
+#~ msgstr " Sie haben ein ungültiges Verzeichnis betreten! "
diff --git a/po/easytag.pot b/po/easytag.pot
new file mode 100644
index 0000000..81b0cfd
--- /dev/null
+++ b/po/easytag.pot
@@ -0,0 +1,4558 @@
+# 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.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr ""
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr ""
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr ""
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr ""
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr ""
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr ""
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr ""
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr ""
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr ""
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr ""
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr ""
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr ""
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr ""
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr ""
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr ""
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr ""
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr ""
+
+#: src/about.c:161
+msgid "(Hebrew translation)"
+msgstr ""
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr ""
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr ""
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr ""
+
+#: src/about.c:276
+#, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr ""
+
+#: src/about.c:283
+#, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr ""
+
+#: src/about.c:287
+#, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr ""
+
+#: src/about.c:292
+msgid "(ID3v2.3 tags support disabled)"
+msgstr ""
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr ""
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr ""
+
+#: src/about.c:307
+msgid "(Speep file support disabled)"
+msgstr ""
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr ""
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr ""
+
+#: src/about.c:322
+msgid "(WavPack file support disabled)"
+msgstr ""
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr ""
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr ""
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr ""
+
+#: src/about.c:352
+msgid "Description:"
+msgstr ""
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr ""
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr ""
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr ""
+
+#: src/about.c:432
+msgid "Changes"
+msgstr ""
+
+#: src/about.c:454
+#, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr ""
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr ""
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr ""
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr ""
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr ""
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr ""
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr ""
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr ""
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr ""
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr ""
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr ""
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr ""
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr ""
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr ""
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr ""
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr ""
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr ""
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr ""
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr ""
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr ""
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr ""
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr ""
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr ""
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr ""
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr ""
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr ""
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr ""
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr ""
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr ""
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr ""
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr ""
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr ""
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr ""
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr ""
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr ""
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr ""
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr ""
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr ""
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr ""
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr ""
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr ""
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr ""
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr ""
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr ""
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr ""
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr ""
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr ""
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr ""
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr ""
+
+#: src/bar.c:193
+msgid "First File"
+msgstr ""
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr ""
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr ""
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr ""
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr ""
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr ""
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr ""
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr ""
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr ""
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr ""
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr ""
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr ""
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr ""
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr ""
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr ""
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr ""
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr ""
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr ""
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr ""
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr ""
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr ""
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr ""
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr ""
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr ""
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr ""
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr ""
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr ""
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr ""
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr ""
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr ""
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr ""
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr ""
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr ""
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr ""
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr ""
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr ""
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr ""
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr ""
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr ""
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr ""
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr ""
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr ""
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr ""
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr ""
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr ""
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr ""
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr ""
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr ""
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr ""
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr ""
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr ""
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr ""
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr ""
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr ""
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr ""
+
+#: src/bar.c:236
+msgid "_About"
+msgstr ""
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr ""
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr ""
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr ""
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr ""
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr ""
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr ""
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr ""
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr ""
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr ""
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr ""
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr ""
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr ""
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr ""
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr ""
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr ""
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr ""
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr ""
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr ""
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr ""
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr ""
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr ""
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr ""
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr ""
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr ""
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr ""
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr ""
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr ""
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr ""
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr ""
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr ""
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr ""
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr ""
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr ""
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr ""
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr ""
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr ""
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr ""
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr ""
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr ""
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr ""
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr ""
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr ""
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr ""
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr ""
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr ""
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr ""
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr ""
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr ""
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr ""
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr ""
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr ""
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr ""
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr ""
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr ""
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr ""
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr ""
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr ""
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr ""
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr ""
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr ""
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr ""
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr ""
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr ""
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr ""
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr ""
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr ""
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr ""
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr ""
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr ""
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr ""
+
+#: src/cddb.c:571
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr ""
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr ""
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr ""
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr ""
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr ""
+
+#: src/cddb.c:719
+msgid "All"
+msgstr ""
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr ""
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr ""
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr ""
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr ""
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr ""
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr ""
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr ""
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr ""
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr ""
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr ""
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr ""
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr ""
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr ""
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr ""
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr ""
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr ""
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr ""
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr ""
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr ""
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr ""
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr ""
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr ""
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr ""
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr ""
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr ""
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr ""
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr ""
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr ""
+
+#: src/cddb.c:2568
+#, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr ""
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr ""
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr ""
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr ""
+
+#: src/cddb.c:2945
+msgid "Local CD search..."
+msgstr ""
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr ""
+
+#: src/cddb.c:3231
+#, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr ""
+
+#: src/cddb.c:3327
+#, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr ""
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr ""
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr ""
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr ""
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr ""
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr ""
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr ""
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#. Starting messages
+#: src/easytag.c:177
+#, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr ""
+
+#: src/easytag.c:179
+#, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr ""
+
+#: src/easytag.c:182
+#, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr ""
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, c-format
+msgid "Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr ""
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr ""
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr ""
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr ""
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr ""
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr ""
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr ""
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr ""
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr ""
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr ""
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr ""
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr ""
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr ""
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr ""
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr ""
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr ""
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr ""
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr ""
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr ""
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr ""
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr ""
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr ""
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr ""
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr ""
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr ""
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr ""
+
+#. Disc Number
+#: src/easytag.c:642
+msgid "CD:"
+msgstr ""
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr ""
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr ""
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr ""
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr ""
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr ""
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr ""
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr ""
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr ""
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr ""
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr ""
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr ""
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr ""
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr ""
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr ""
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr ""
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr ""
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr ""
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr ""
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr ""
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr ""
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr ""
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr ""
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr ""
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr ""
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr ""
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr ""
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr ""
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr ""
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr ""
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr ""
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr ""
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr ""
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr ""
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr ""
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr ""
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr ""
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr ""
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr ""
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr ""
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr ""
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr ""
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr ""
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr ""
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr ""
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr ""
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr ""
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr ""
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr ""
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr ""
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr ""
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr ""
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr ""
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr ""
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr ""
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr ""
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr ""
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr ""
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr ""
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr ""
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr ""
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr ""
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr ""
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr ""
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr ""
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr ""
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr ""
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr ""
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr ""
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr ""
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr ""
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr ""
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr ""
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr ""
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr ""
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr ""
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr ""
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr ""
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr ""
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr ""
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr ""
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr ""
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr ""
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr ""
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr ""
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr ""
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr ""
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr ""
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr ""
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr ""
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr ""
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr ""
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr ""
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr ""
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr ""
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr ""
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr ""
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr ""
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr ""
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr ""
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr ""
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, c-format
+msgid "Received signal %s (%d)"
+msgstr ""
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr ""
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr ""
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr ""
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr ""
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr ""
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr ""
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr ""
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr ""
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr ""
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr ""
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr ""
+
+#: src/et_core.c:2573
+msgid "Speex File"
+msgstr ""
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr ""
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr ""
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr ""
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr ""
+
+#: src/et_core.c:2599
+msgid "Wavpack File"
+msgstr ""
+
+#: src/et_core.c:2873
+#, c-format
+msgid "Pictures (%d)"
+msgstr ""
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr ""
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr ""
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr ""
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr ""
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr ""
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr ""
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr ""
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr ""
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr ""
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr ""
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr ""
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr ""
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr ""
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr ""
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr ""
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr ""
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr ""
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr ""
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr ""
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr ""
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr ""
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr ""
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr ""
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr ""
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr ""
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr ""
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr ""
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr ""
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr ""
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr ""
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr ""
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr ""
+
+#: src/misc.c:221
+msgid " No "
+msgstr ""
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr ""
+
+#: src/misc.c:231
+msgid " Save "
+msgstr ""
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr ""
+
+#: src/misc.c:241
+msgid " Close "
+msgstr ""
+
+#: src/misc.c:246
+msgid " Write "
+msgstr ""
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr ""
+
+#: src/misc.c:256
+msgid " Search "
+msgstr ""
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr ""
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr ""
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr ""
+
+#: src/misc.c:886
+msgid "Warning..."
+msgstr ""
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr ""
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr ""
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr ""
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr ""
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr ""
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr ""
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr ""
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr ""
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr ""
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr ""
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr ""
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr ""
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr ""
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr ""
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr ""
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr ""
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr ""
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr ""
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr ""
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr ""
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr ""
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr ""
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr ""
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr ""
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr ""
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr ""
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr ""
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr ""
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr ""
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr ""
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr ""
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr ""
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr ""
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr ""
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr ""
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr ""
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr ""
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr ""
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr ""
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr ""
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr ""
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr ""
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr ""
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr ""
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr ""
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr ""
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr ""
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr ""
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr ""
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr ""
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr ""
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr ""
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr ""
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr ""
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr ""
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr ""
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr ""
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr ""
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr ""
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr ""
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr ""
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr ""
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr ""
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr ""
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr ""
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr ""
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr ""
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr ""
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr ""
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr ""
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr ""
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr ""
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr ""
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr ""
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr ""
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr ""
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr ""
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr ""
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr ""
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr ""
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr ""
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr ""
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr ""
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr ""
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr ""
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr ""
+
+#: src/picture.c:881
+msgid "Description"
+msgstr ""
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr ""
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr ""
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr ""
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr ""
+
+#. Label
+#: src/prefs.c:167
+msgid "Default directory :"
+msgstr ""
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr ""
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr ""
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+msgid "Show subdirectories when selecting a directory"
+msgstr ""
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr ""
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr ""
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr ""
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr ""
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr ""
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr ""
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr ""
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr ""
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr ""
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr ""
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr ""
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr ""
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr ""
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr ""
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr ""
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr ""
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr ""
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr ""
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr ""
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr ""
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr ""
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr ""
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr ""
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr ""
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr ""
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr ""
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr ""
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr ""
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr ""
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr ""
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr ""
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr ""
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr ""
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr ""
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr ""
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr ""
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr ""
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr ""
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr ""
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr ""
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr ""
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr ""
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr ""
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr ""
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr ""
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr ""
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr ""
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr ""
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr ""
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr ""
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr ""
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr ""
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr ""
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr ""
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr ""
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr ""
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr ""
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr ""
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr ""
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr ""
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr ""
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr ""
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+msgid "Character Set for writing ID3 tags"
+msgstr ""
+
+#. ID3v2 tags
+#: src/prefs.c:682
+msgid "ID3v2 tags"
+msgstr ""
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr ""
+
+#: src/prefs.c:698
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+msgid "Version:"
+msgstr ""
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+msgid "Unicode "
+msgstr ""
+
+#: src/prefs.c:742
+msgid "Unicode type to use"
+msgstr ""
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr ""
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+msgid "No"
+msgstr ""
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+msgid "ID3v1 tags"
+msgstr ""
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr ""
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+
+#: src/prefs.c:835
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr ""
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+msgid "Character Set for reading ID3 tags"
+msgstr ""
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr ""
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr ""
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr ""
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr ""
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr ""
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr ""
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr ""
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr ""
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr ""
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr ""
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr ""
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr ""
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr ""
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr ""
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr ""
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr ""
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr ""
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr ""
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr ""
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+msgid "Local CD Data Base"
+msgstr ""
+
+#: src/prefs.c:1203
+msgid "Path :"
+msgstr ""
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr ""
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr ""
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr ""
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr ""
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr ""
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr ""
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr ""
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr ""
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr ""
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr ""
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr ""
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr ""
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr ""
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr ""
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr ""
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr ""
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr ""
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr ""
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr ""
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr ""
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr ""
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr ""
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr ""
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr ""
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr ""
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr ""
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr ""
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr ""
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr ""
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr ""
+
+#: src/scan.c:352
+#, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr ""
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr ""
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr ""
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr ""
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr ""
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr ""
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr ""
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr ""
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr ""
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr ""
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr ""
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr ""
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr ""
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr ""
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr ""
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr ""
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr ""
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr ""
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr ""
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr ""
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr ""
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr ""
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr ""
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr ""
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr ""
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr ""
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr ""
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr ""
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr ""
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr ""
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr ""
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr ""
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr ""
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr ""
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr ""
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr ""
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr ""
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr ""
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr ""
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr ""
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr ""
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr ""
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr ""
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr ""
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr ""
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr ""
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr ""
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr ""
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr ""
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr ""
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr ""
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr ""
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr ""
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr ""
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr ""
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr ""
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr ""
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr ""
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr ""
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr ""
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr ""
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr ""
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr ""
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr ""
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr ""
+
+#: src/setting.c:872
+#, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr ""
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr ""
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr ""
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr ""
+
+#: src/setting.c:1261
+#, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr ""
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr ""
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr ""
+
+#: src/setting.c:1589
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr ""
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr ""
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr ""
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr ""
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr ""
+
+#: src/vcedit.c:341
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr ""
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr ""
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr ""
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr ""
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, c-format
+msgid "Audio player: '%s'"
+msgstr ""
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
diff --git a/po/el.gmo b/po/el.gmo
new file mode 100644
index 0000000..a105131
--- /dev/null
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000..aac7cb3
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,5099 @@
+# translation of el.po to Modern Greek
+# Greek catalog for EasyTAG.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the EasyTAG package.
+#
+# Apollon Oikonomopoulos <apoikos@mail.ntua.gr>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 1.99.11\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2005-12-26 16:40+0200\n"
+"Last-Translator: Apollon Oikonomopoulos <apoikos@mail.ntua.gr>\n"
+"Language-Team: Modern Greek <el@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-7\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Greek\n"
+"X-Poedit-Country: GREECE\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: KBabel 1.11\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" Ôï EasyTAG óáò åðéôñÝðåé íá äåßôå êáé íá åðåîåñãáóôåßôå ôéò åôéêÝôåò "
+"(tags) ôùí áñ÷åßùí MP3, MP2, FLAC, Ogg Vorbis, MP4/AAC, MusePack êáé "
+"Monkey's Audio. Ôï ëéôü êáé üìïñöï ðåñéâÜëëïí ôïõ êÜíåé ôçí åðåîåñãáóßá ôùí "
+"åôéêåôþí óôï GNU/Linux ðáé÷íßäé!"
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(ÃåñìáíéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Ñþóéêç ìåôÜöñáóç)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(ÏëëáíäéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(ÓïõçäéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(ÏõããñéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(ÉôáëéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(ÉáðùíéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(ÏõêñáíéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(ÔóÝ÷éêç ìåôÜöñáóç)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(ÉóðáíéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(ÐïëùíéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(ÑïõìáíéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(ÄáíÝæéêç ìåôÜöñáóç)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(ÅëëçíéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(ÂñáæéëéÜíéêç ìåôÜöñáóç)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(ÂïõëãáñéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(ÉáðùíéêÞ ìåôÜöñáóç)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(ÅëëçíéêÞ ìåôÜöñáóç)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Ðåñß..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Ðåñß"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(ÄçìéïõñãÞèçêå: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(×ñçóéìïðïéåß: GTK+ %d.%d.%d êáé id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí MP3)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí MP3)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí MP3)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí MP3)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí Ogg Vorbis)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí MP3)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí FLAC)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí MP4/AAC)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(×ùñßò õðïóôÞñéîç áñ÷åßùí MP3)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Äçìéïõñãüò: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Éóôïóåëßäá:"
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "ÐåñéãñáöÞ:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Åõ÷áñéóôßåò"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "ÌåôáöñÜóåéò:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "ÃåíéêÜ:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Éóôïñéêü áëëáãþí"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ '%s' (%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "ÓÖÁËÌÁ êáôÜ ôï Üíïéãìá ôïõ áñ÷åßïõ: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Áñ÷åßï"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Ôáîéíüìçóç ëßóôáò êáôÜ åôéêÝôá"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Ôáîéíüìçóç ëßóôáò êáôÜ éäéüôçôá"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Áýîïõóá, êáôÜ üíïìá áñ÷åßïõ"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Öèßíïõóá, êáôÜ üíïìá áñ÷åßïõ"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Áýîïõóá, êáôÜ çìåñïìçíßá äçìéïõñãßáò"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Öèßíïõóá, êáôÜ çìåñïìçíßá äçìéïõñãßáò"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Áýîïõóá, êáôÜ áñéèìü êïììáôéïý"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Öèßíïõóá, êáôÜ áñéèìü êïììáôéïý"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Áýîïõóá, êáôÜ ôßôëï"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Öèßíïõóá, êáôÜ ôßôëï"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Áýîïõóá, êáôÜ üíïìá êáëëéôÝ÷íç"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Öèßíïõóá, êáôÜ üíïìá êáëëéôÝ÷íç"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Áýîïõóá, êáôÜ ôßôëï äßóêïõ"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Öèßíïõóá, êáôÜ ôßôëï äßóêïõ"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Áýîïõóá, êáôÜ ÷ñïíéÜ"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Öèßíïõóá, êáôÜ ÷ñïíéÜ"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Áýîïõóá, êáôÜ åßäïò"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Öèßíïõóá, êáôÜ åßäïò"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Áýîïõóá, êáôÜ ó÷üëéï"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Öèßíïõóá, êáôÜ ó÷üëéï"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Áýîïõóá, êáôÜ üíïìá óõíèÝôç"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Öèßíïõóá, êáôÜ üíïìá óõíèÝôç"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Áýîïõóá, êáôÜ üíïìá áñ÷éêïý êáëëéôÝ÷íç"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Öèßíïõóá, êáôÜ üíïìá áñ÷éêïý êáëëéôÝ÷íç"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Áýîïõóá, êáôÜ copyright"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Öèßíïõóá, êáôÜ copyright"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Áýîïõóá, êáôÜ URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Öèßíïõóá, êáôÜ URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Áýîïõóá, êáôÜ üíïìá êùäéêïðïéçôÞ"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Öèßíïõóá, êáôÜ üíïìá êùäéêïðïéçôÞ"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Áýîïõóá, êáôÜ ôýðï áñ÷åßïõ"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Öèßíïõóá, êáôÜ ôýðï áñ÷åßïõ"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Áýîïõóá, êáôÜ ìÝãåèïò áñ÷åßïõ"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Öèßíïõóá, êáôÜ ìÝãåèïò áñ÷åßïõ"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Áýîïõóá, êáôÜ äéÜñêåéá"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Öèßíïõóá, êáôÜ äéÜñêåéá"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Áýîïõóá, êáôÜ bitrate"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Öèßíïõóá, êáôÜ bitrate"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Áýîïõóá, êáôÜ ñõèìü äåéãìáôïëçøßáò"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Öèßíïõóá, êáôÜ ñõèìü äåéãìáôïëçøßáò"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "¶íïéãìá áñ÷åßïõ/ùí ìå..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "ÅðéëïãÞ üëùí ôùí áñ÷åßùí"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "ÁðïåðéëïãÞ üëùí ôùí áñ÷åßùí"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "ÁíôéóôñïöÞ åðéëïãÞò áñ÷åßùí"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "ÄéáãñáöÞ áñ÷åßïõ/ùí"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Ðñþôï áñ÷åßï"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Ðñþôï áñ÷åßï"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "Ð_ñïçãïýìåíï áñ÷åßï"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Ðñïçãïýìåíï áñ÷åßï"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "_Åðüìåíï áñ÷åßï"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Åðüìåíï áñ÷åßï"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "_Ôåëåõôáßï áñ÷åßï"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Ôåëåõôáßï áñ÷åßï"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "_ÓÜñùóç áñ÷åßïõ/ùí"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "¶íïéãìá ðáñáèýñïõ óáñùôÞ / óÜñùóç áñ÷åßïõ/ùí"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "Á_öáßñåóç åôéêÝôáò"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Áöáßñåóç åôéêÝôáò"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "Á_íáßñåóç ôåëåõôáßùí áëëáãþí óå áñ÷åßá"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Áíáßñåóç ôåëåõôáßùí áëëáãþí óå áñ÷åßá"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "Å_ðáíÜëçøç ôåëåõôáßùí áëëáãþí óå áñ÷åßá"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "ÅðáíÜëçøç ôåëåõôáßùí áëëáãþí óå áñ÷åßá"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "Áðï_èÞêåõóç áñ÷åßïõ/ùí"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "ÁðïèÞêåõóç áñ÷åßïõ/ùí"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "_ÏðùóäÞðïôå áðïèÞêåõóç ôïõ áñ÷åßïõ/ôùí áñ÷åßùí."
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "ÏðùóäÞðïôå áðïèÞêåõóç ôïõ áñ÷åßïõ/ôùí áñ÷åßùí."
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Áíáßñåóç ôåëåõôáßùí áëëáãþí"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "ÅðáíÜëçøç ôåëåõôáßùí áëëáãþí"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "¸_îïäïò"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "¸îïäïò"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_ÐåñéçãçôÞò"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "ÌåôÜâáóç óôïí Ðñïóùðéêü _ÊáôÜëïãï"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "ÌåôÜâáóç óôïí Ðñïóùðéêü ÊáôÜëïãï"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "ÌåôÜâáóç óôïí _Áñ÷éêü ÊáôÜëïãï"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "ÌåôÜâáóç óôïí Áñ÷éêü ÊáôÜëïãï"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "_Ïñéóìüò ôïõ ôñÝ÷ïíôïò êáôáëüãïõ ùò áñ÷éêïý"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Ïñéóìüò ôïõ ôñÝ÷ïíôïò êáôáëüãïõ ùò áñ÷éêïý"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "¼øç äÝíäñïõ | ¼øç ÊáëëéôÝ÷íç - Äßóêïõ"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Ìåôïíïìáóßá êáôáëüãïõ..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Åðáíáöüñôùóç êáôáëüãïõ"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "¶íïéãìá êáôáëüãïõ ìå..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Óýìðôõîç äÝíäñïõ"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "Á_íáíÝùóç äÝíäñïõ"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "_ÓáñùôÞò"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "Ó_õìðëÞñùóç åôéêÝôáò..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "ÓõìðëÞñùóç åôéêÝôáò..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Ìåôïíïìáóßá áñ÷åßïõ/ùí êáé êáôáëüãïõ..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Ìåôïíïìáóßá áñ÷åßïõ/ùí êáé êáôáëüãïõ..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Åðåîåñãáóßá ðåäßïõ/ùí.."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Åðåîåñãáóßá ðåäßïõ/ùí.."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_ËïéðÜ"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "ÁíáæÞôçóç _áñ÷åßïõ/ùí"
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "ÁíáæÞôçóç áñ÷åßïõ/ùí"
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "ÁíáæÞôçóç óôç ÂÜóç ÄåäïìÝíùí CD..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "ÁíáæÞôçóç CDDB..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Öüñôùóç ïíïìÜôùí áñ÷åßùí áðü TXT..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "ÁðïèÞêåõóç ëßóôáò áíáðáñáãùãÞò"
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "ÅêôÝëåóç áíáðáñáãùãÝá ìïõóéêÞò"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Ñõèìßóåéò"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_ÐñïôéìÞóåéò..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "ÐñïôéìÞóåéò..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_ÂïÞèåéá"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Ðåñß"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Ôåñìáôéóìüò ôçò ôñÝ÷ïõóáò åíÝñãåéáò"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "ÅíÝñãåéåò óå áñ÷åßá"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "ÁíáæÞôçóç áñ÷åßïõ/ùí óôç CDDB..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "ÐåñéÞãçóç óôïõò _õðïêáôáëüãïõò"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "ÅìöÜíéóç ôùí êñõöþí êáôáëüãùí"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "ÅìöÜíéóç äÝíäñïõ / ÅìöÜíéóç êáôÜ ÊáëëéôÝ÷íç êáé Äßóêï"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Could not merge UI, error was: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "¸ôïéìï ãéá åêêßíçóç..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "ÅðéëÝ÷èçêå íÝá åñÞìçí äéáäñïìÞ ãéá ôá áñ÷åßá"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Åðéâåâáßùóç..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"ÏñéóìÝíá áñ÷åßá Ý÷ïõí ôñïðïðïéçèåß ÷ùñßò íá áðïèçêåõèïýí ïé áëëáãÝò...\n"
+"ÈÝëåôå íá ôá áðïèçêåýóåôå ðñïôïý åãêáôáëåßøåôå ôïí êáôÜëïãï;"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Ç äéáäñïìÞ åßíáé ëáíèáóìÝíç!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "ÓöÜëìá..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "# Äßóêùí"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "ÓöÜëìá êáôÜ ôçí áíáæÞôçóç ãéá %s: Äå âñÝèçêå êüìâïò %s óôï äÝíäñï."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "ÊáëëéôÝ÷íçò"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Äßóêùí"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Áñ÷åßùí"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Äßóêïò"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "ÌåôÜâáóç óôï ãïíéêü êáôÜëïãï"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Äþóôå ôç äéáäñïìÞ ôïõ êáôáëüãïõ óôïí ïðïßï èÝëåôå íá ðåñéçãçèåßôå"
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "ÄÝíäñï"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "ÊáëëéôÝ÷çò & Äßóêïò"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Ìåôïíïìáóßá ôïõ êáôáëüãïõ"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Ìåôïíïìáóßá ôïõ êáôáëüãïõ '%s' óå:"
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "ÌÜóêá:"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr ""
+"Áí åíåñãïðïéçèåß ç åðéëïãÞ áõôÞ, ôüôå ïé ìÜóêåò èá ÷ñçóéìïðïéçèïýí ãéá ôç "
+"ìåôïíïìáóßá ôïõ êáôáëüãïõ."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"ÅðéëÝîôå Þ ðëçêôñïëïãÞóôå ìßá ìÜóêá ÷ñçóéìïðïéþíôáò ôïõò êùäéêïýò (âë. "
+"õðüìíçìá) ãéá íá ìåôïíïìáóôåß ï êáôÜëïãïò âÜóåé ôùí ðåäßùí ôçò åôéêÝôáò."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "ÁêáôÜëëçëç ìÜóêá óÜñùóçò"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Ðñïåðéóêüðçóç ìåôïíïìáóßáòêáôáëüãïõ."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "ÐñÝðåé íá ðëçêôñïëïãÞóåôå Ýíá üíïìá êáôáëüãïõ!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Áäõíáìßá ìåôáôñïðÞò ôïõ '%s' óôçí êùäéêïðïßçóç ÷áñáêôÞñùí ôïõ ïíüìáôïò "
+"áñ÷åßïõ. Ðáñáêáëþ ÷ñçóéìïðïéÞóôå äéáöïñåôéêü üíïìá."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"ÕðÜñ÷åé Þäç êáôÜëïãïò ìå áõôü ôï üíïìá!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá ìåôïíïìáóßáò êáôáëüãïõ \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Ï êáôÜëïãïò ìåôïíïìÜóôçêå"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Ðñüãñáììá ðñïò åêôÝëåóç:"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"ÐëçêôñïëïãÞóôå ôï üíïìá ôïõ ðñïò åêôÝëåóç ðñïãñÜììáôïò. Èá ëÜâåé ôï üíïìá "
+"ôïõ ôñÝ÷ïíôïò êáôáëüãïõ ùò ðáñÜìåôñï."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "¶íïéãìá áñ÷åßïõ ìå..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"ÐëçêôñïëïãÞóôå ôï üíïìá ôïõ ðñïò åêôÝëåóç ðñïãñÜììáôïò. Èá ëÜâåé ôï üíïìá "
+"ôïõ ôñÝ÷ïíôïò áñ÷åßïõ ùò ðáñÜìåôñï."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "ÐñÝðåé íá ðëçêôñïëïãÞóåôå Ýíá üíïìá ðñïãñÜììáôïò!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Ç åöáñìïãÞ '%s' äå âñÝèçêå!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Äåí åßíáé äõíáôÞ ç åêôÝëåóç ôïõ %s (óöÜëìá %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Áäõíáìßá äçìéïõñãßáò íÝáò äéåñãáóßáò (forking)!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "ÅêôåëÝóôçêå ç åíôïëÞ: '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "ÊáëëéôÝ÷íçò / Äßóêïò"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Êáôçãïñßá"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Ôßôëïò êïììáôéïý"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "ÄéÜñêåéá"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "ÁíáæÞôçóç óôç ÂÜóç ÄåäïìÝíùí CD"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Áõôüìáôç áíáæÞôçóç"
+
+#: src/cddb.c:284
+#, fuzzy
+msgid "Request CD database :"
+msgstr "Åðåñþôçóç ÂÜóçò ÄåäïìÝíùí FreeDB:"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Áõôüìáôç åðåñþôçóç ôçò ÂÜóçò ÄåäïìÝíùí CDDB, ÷ñçóéìïðïéþíôáò ôá åðéëåãìÝíá "
+"áñ÷åßá ãéá ôç äçìéïõñãßá ôïõ CddbID (ç óåéñÜ ôùí áñ÷åßùí Ý÷åé óçìáóßá!)."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Ôåñìáôéóìüò áíáæÞôçóçò..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Åíåñãïðïéþíôáò áõôÞí ôçí åðéëïãÞ, ìåôÜ ôç óõìðëÞñùóç ôùí ðåäßùí ôçò "
+"åôéêÝôáò, èá ÷ñçóéìïðïéçèåß ï óáñùôÞò ìå ôéò ôñÝ÷ïõóåò ñõèìßóåéò ôïõ (ôï "
+"ðáñÜèõñï ôïõ óáñùôÞ ðñÝðåé íá åßíáé áíïé÷ôü)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "×åéñïêßíçôç áíáæÞôçóç"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "ËÝîåéò:"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "ÐëçêôñïëïãÞóôå ôéò ëÝîåéò ãéá áíáæÞôçóç (÷ùñéóìÝíåò ìå êåíÜ Þ '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "ÁíáæÞôçóç óå:"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "¼ëá ôá ðåäßá"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "¶ëëï"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "¼ëåò ïé êáôçãïñßåò"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "ÊëáóéêÞ"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "¶ëëï"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Soundtrack"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "ðåñéëáìâÜíåé: funk, soul, rap, pop, industrial, metal, etc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "ôáéíßåò, åêðïìðÝò"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "Üëëá, ðïõ äåí åìðßðôïõí óôéò ðáñáðÜíù êáôçãïñßåò"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " Êáôçãïñßåò"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "ÁðïôåëÝóìáôá:"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "ÁíáæÞôçóç:"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "ÐëçêôñïëïãÞóôå üñïõò ãéá áíáæÞôçóç ìåôáîý ôùí áðïôåëåóìÜôùí"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "ÁíáæÞôçóç åðüìåíïõ"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "ÁíáæÞôçóç ðñïçãïýìåíïõ"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "ÅìöÜíéóç ìüíï ôùí êüêêéíùí ãñáììþí / ÅìöÜíéóç üëùí"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "ÁðïåðéëïãÞ üëùí ôùí ãñáììþí"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "ÁíôéóôñïöÞ åðéëïãÞò"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "ÅðéëïãÞ üëùí ôùí ãñáììþí"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"ÅðéëÝîôå ôéò ãñáììÝò ðïõ èá «åöáñìïóôïýí» óôç ëßóôá áñ÷åßùí óáò. Áí äåí "
+"åðéëÝîåôå êÜðïéá ãñáììÞ, ôüôå üëåò ïé ãñáììÝò èá õðïóôïýí åðåîåñãáóßá.\n"
+"Ìðïñåßôå íá áíáäéáôÜîåôå ôéò ãñáììÝò óôç ëßóôá áõôÞ ðñéí ðáôÞóåôå ôï êïõìðß "
+"«åöáñìïãÞ»."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Ðåäßá ðñïò óõìðëÞñùóç:"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "¼ëá"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "¼íïìá áñ÷åßïõ"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Ôßôëï"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "×ñïíéÜ"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Á/Á êïììáôéïý"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "Áñ. êïììáôéþí"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Åßäïò"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "ÓÜñùóç êÜèå áñ÷åßïõ ìå ôéò ôñÝ÷ïõóåò ñõèìßóåéò óÜñùóçò"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Ç åðéëïãÞ áõôÞ åíåñãïðïéåß ôç ÷ñÞóç ôïõ áëãïñßèìïõ Levenshtein (DLM: Damerau "
+"- Levenshtein Metric) ãéá ôï áõôüìáôï ôáßñéáóìá ôïõ ôßôëïõ ðïõ åðéóôñÝöåé ç "
+"CDDB ìå ôï êáôÜëëçëï üíïìá áñ÷åßïõ. Ç åðéëïãÞ áõôÞ áíôéêáèéóôÜ ôçí ôõðéêÞ "
+"óõìðåñéöïñÜ, üðïõ êÜèå áñ÷åßï ôáéñéÜæåôáé óôçí áíôßóôïé÷ç åããñáöÞ ôçò CDDB "
+"ìå âÜóç ôç èÝóç ôïõ."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr ""
+"Öüñôùóç ôùí åðéëåãìÝíùí Þ üëùí ôùí ãñáììþí (áí äåí Ý÷åé åðéëåãåß êÜðïéá "
+"ãñáììÞ)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "¸ôïéìï ãéá áíáæÞôçóç..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Äßóêïò: '%s', êáëëéôÝ÷íçò: '%s', äéÜñêåéá: '%s', ÷ñïíéÜ: '%s', åßäïò: '%s', "
+"ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "ÁíôéóôñïöÞ åðéëïãÞò"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Ôáîéíüìçóç êáôÜ áýîïíôá áñéèìü êïììáôéïý"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Ôáîéíüìçóç êáôÜ üíïìá êïììáôéïý"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "ÁíáæÞôçóç õðïëïãéóôÞ '%s'..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Ï õðïëïãéóôÞò '%s' (%s) äå âñÝèçêå!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Áäõíáìßá äçìéïõñãßáò íÝïõ socket (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Óýíäåóç ìå ôïí õðïëïãéóôÞ '%s', èýñá '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Áäõíáìßá óýíäåóçò ìå ôïí õðïëïãéóôÞ '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Åðéôõ÷Þò óýíäåóç ìå ôïí õðïëïãéóôÞ '%s'."
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "ËÞøç äåäïìÝíùí (%s)..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "ÓöÜëìá êáôÜ ôçí áöáßñåóç ôçò åôéêÝôáò ID3v1 ôïõ '%s' (%s)\n"
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Áäõíáìßá äçìéïõñãßáò Þ áíïßãìáôïò ôïõ áñ÷åßïõ '%s' (%s)\n"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "ÁðïóôïëÞ áßôçóçò..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Áäõíáìßá áðïóôïëÞò áßôçóçò (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "ËÞøç äåäïìÝíùí..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+#, fuzzy
+msgid "The server returned a wrong answer!"
+msgstr "Ï åîõðçñåôçôÞò Ýäùóå ëáíèáóìÝíç áðÜíôçóç! (%s)"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Ï åîõðçñåôçôÞò Ýäùóå ëáíèáóìÝíç áðÜíôçóç! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr ""
+"Óõããíþìç, ôï óýóôçìá áíáæÞôçóçò ìÝóù ôïõ éóôïý åßíáé åêôüò ëåéôïõñãßáò!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "ÂñÝèçêáí %d äßóêïò/äßóêïé ðïõ ôáéñéÜæïõí óôá êñéôÞñéá áíáæÞôçóçò"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "ËÞøç äåäïìÝíùí (%s)..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "ËÞøç äåäïìÝíùí (%s)..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Äåí Ý÷åé åðéëåãåß êáíÝíá áñ÷åßï!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "ÅðéëÝ÷ôçêáí %d áñ÷åßá!"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "¸ôïéìï ãéá áíáæÞôçóç..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr ""
+"ÁðïóôïëÞ áßôçóçò (CddbId: %s, # êïììáôéþí: %d, : äéÜñêåéá äßóêïõ:%d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "ÂñÝèçêáí %d äßóêïò/äßóêïé ðïõ ôáéñéÜæïõí óôá êñéôÞñéá áíáæÞôçóçò"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ '%s' (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Öüñôùóç ëßóôáò êïììáôéþí äßóêïõ"
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Ðñïóï÷Þ! Áíôéóôïé÷ßæåôå %d ãñáììÝò ôùí áðïôåëåóìÜôùí ôçò CDDB óå %d ãñáììÝò "
+"óôç ëßóôá ôùí áñ÷åßùí\n"
+"\n"
+"ÈÝëåôå íá óõíå÷ßóåôå;"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "ÓõìðëÞñùóç åôéêÝôáò áðü ôç CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "ÁñáâéêÞ (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "ÁñáâéêÞ (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "ÁñáâéêÞ (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "ÂáëôéêÞò (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "ÂáëôéêÞò (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "ÂáëôéêÞò (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "ÊÝëôéêá (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "ÊåíôñéêÞò Åõñþðçò (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "ÊåíôñéêÞò Åõñþðçò (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "ÊåíôñéêÞò Åõñþðçò (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "ÊéíåæéêÞ áðëïðïéçìÝíç (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "ÊéíåæéêÞ áðëïðïéçìÝíç (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "ÊéíåæéêÞ ðáñáäïóéáêÞ (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "ÊéíåæéêÞ ðáñáäïóéáêÞ (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "ÊõñéëëéêÞ (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "ÊõñéëëéêÞ (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "ÊõñéëëéêÞ (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "ÊõñéëëéêÞ (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "ÊõñéëëéêÞ (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "ÊõñéëëéêÞ/ÑùóéêÞ (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "ÊõñéëëéêÞ/ÏõêñáíéêÞ (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "ÁããëéêÞ (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "ÅëëçíéêÞ (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "ÅëëçíéêÞ (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "ÅâñáúêÞ (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "ÅâñáúêÞ (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "ÉáðùíéêÞ (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "ÉáðùíéêÞ (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "ÉáðùíéêÞ (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "ÊïñåÜôéêç (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordic (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Íüôéáò Åõñþðçò (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "ÔáúëáíäéêÞ (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "ÔïõñêéêÞ (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "ÔïõñêéêÞ (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "ÔïõñêéêÞ (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "ÂéåôíáìÝæéêç (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "ÂéåôíáìÝæéêç (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "ÅâñáúêÞ Visual"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "ÄõôéêÞ (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "ÄõôéêÞ (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "ÄõôéêÞ (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "ÄõôéêÞ (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"Áäõíáìßá ìåôáôñïðÞò ôïõ ïíüìáôïò áñ÷åßùí '%s' óôï óýíïëï ÷áñáêôÞñùí UTF-8 (%"
+"s) \n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "ÁêáôÜëëçëï UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"Áäõíáìßá ìåôáôñïðÞò ôçò óõìâïëïóåéñÜò UTF-8 '%s' óôï óýíïëï ÷áñáêôÞñùí ôïõ "
+"ïíüìáôïò áñ÷åßùí (%s)\n"
+
+#: src/charset.c:705
+#, fuzzy, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"Áäõíáìßá ìåôáôñïðÞò ôïõ ïíüìáôïò áñ÷åßùí '%s' óôï óýíïëï ÷áñáêôÞñùí UTF-8 (%"
+"s) \n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Åêêßíçóç ôïõ EasyTAG %s (PId: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Ãßíåôáé ÷ñÞóç ôçò id3lib, Ýêäïóçò %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Ãßíåôáé ÷ñÞóç ôçò id3lib, Ýêäïóçò %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Ìåôïíïìáóßá áñ÷åßïõ '%s'"
+
+#: src/easytag.c:195
+#, fuzzy, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "Ç ôñÝ÷ïõóá ãëþóóá åßíáé '%s' (êáé ôåëéêÜ '%s')...\n"
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s áðü %s (compiled %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Éóôïóåëßäá: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "ÐåñéçãçôÞò"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Áñ÷åßï ðñïò áíÜãíùóç ìüíï"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "ÓðáóìÝíïò óýíäåóìïò áñ÷åßïõ"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Layer ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Bitrate:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Óõ÷íüôçôá:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "ÌïñöÞ:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "ÌÝãåèïò:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "ÄéÜñêåéá:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "ÅôéêÝôá"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "ÊïéíÜ ðåäßá"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Ôßôëïò:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôüí ôïí ôßôëï"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "ÊáëëéôÝ÷íçò:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr ""
+"ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôü ôï üíïìá êáëëéôÝ÷íç"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Äßóêïò:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr ""
+"ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôüí ôïí ôßôëï äßóêïõ"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr ""
+"ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôüí ôïí áýîïíôá áñéèìü "
+"äßóêïõ"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "×ñïíéÜ:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôÞ ôç ÷ñïíéÜ"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr "Äéáäï÷éêÞ áñßèìçóç ôùí áñ÷åßùí. ÎåêéíÜ ìå 01 óå êÜèå õðïêáôÜëïãï."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Á/Á êïììáôéïý:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"ÓõìðëÞñùóç ôïõ ðåäßïõ «áñéèìüò êïììáôéþí» êÜèå áñ÷åßïõ ìå ôïí áñéèìü ôùí "
+"áñ÷åßùí ðïõ âñßóêïíôáé óôïí ßäéï õðïêáôÜëïãï ìå áõôü."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr ""
+"ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôüí ôïí áñéèìü êïììáôéþí"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Åßäïò:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôü ôï åßäïò"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Ó÷üëéï:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôüí ôï ó÷üëéï:"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "ÓõíèÝôçò:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr ""
+"ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôü ôï üíïìá óõíèÝôç"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Áñ÷éêüò êáëëéôÝ÷íçò:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr ""
+"ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôü ôï üíïìá áñ÷éêïý "
+"êáëëéôÝ÷íç"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Copyright:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôü ôï copyright"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "Éóôïóåëßäá:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr ""
+"ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôÞ ôç äéåýèõíóç "
+"éóôïóåëßäáò"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "ÊùäéêïðïéÞèçêå áðü:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr ""
+"ÓõìðëÞñùóç ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí ìå áõôü ôï üíïìá êùäéêïðïéçôÞ"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Åéêüíåò"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Åéêüíåò:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Ìðïñåßôå íá ðñïóèÝóåôå åéêüíåò ìå drag & drop."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "×ñÞóç áõôþí ôùí åéêüíùí óå üëá ôá åðéëåãìÝíá áñ÷åßá"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr ""
+"Áöáßñåóç ôùí åðéëåãìÝíùí åéêüíùí, Þ üëùí ôùí åéêüíùí áí äåí Ý÷åé åðéëåãåß "
+"êáìßá."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "ÐñïóèÞêç åéêüíùí óôçí åôéêÝôá (ìðïñåß íá ãßíåé êáé ìå drag & drop)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "ÁðïèÞêåõóç ôùí åðéëåãìÝíùí åéêüíùí óôï äßóêï."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Êáèïñéóìüò ôùí éäéïôÞôùí ôùí åðéëåãìÝíùí åéêüíùí."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå ôïí ôßôëï '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "ÁöáéñÝèçêå ï ôßôëïò áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå ôïí êáëëéôÝ÷íç '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr ""
+"ÁöáéñÝèçêå ôï üíïìá êáëëéôÝ÷íç áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå ôßôëï äßóêïõ '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "ÁöáéñÝèçêå ï ôßôëïò äßóêïõ áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå áñéèìü äßóêïõ '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "ÁöáéñÝèçêå á/á äßóêïõ áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå ÷ñïíéÜ '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "ÁöáéñÝèçêå ç ÷ñïíéÜ áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr ""
+"Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå á/á êïììáôéïý ôçò ìïñöÞò "
+"'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr ""
+"Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå á/á êïììáôéïý ôçò ìïñöÞò "
+"'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "ÁöáéñÝèçêå ï á/á êïììáôéïý áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Ôá åðéëåãìÝíá áñ÷åßá áñéèìÞèçêáí äéáäï÷éêÜ."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå åßäïò '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "ÁöáéñÝèçêå ôï åßäïò áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå ó÷üëéï '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "ÁöáéñÝèçêå ôï ó÷üëéï áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå üíïìá óõíèÝôç '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "ÁöáéñÝèçêå ôï üíïìá óõíèÝôç áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr ""
+"Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå üíïìá áñ÷éêïý êáëëéôÝ÷íç '%"
+"s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr ""
+"ÁöáéñÝèçêå ôï üíïìá ôïõ áñ÷éêïý êáëëéôÝ÷íç áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí "
+"áñ÷åßùí."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå copyright '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "ÁöáéñÝèçêå ôï copyright áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå éóôïóåëßäá '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "ÁöáéñÝèçêå ç éóôïóåëßäá áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí áñ÷åßùí."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr ""
+"Ç åôéêÝôá ôùí åðéëåãìÝíùí áñ÷åßùí óõìðëçñþèçêå ìå üíïìá êùäéêïðïéçôÞ '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr ""
+"ÁöáéñÝèçêå ôï üíïìá ôïõ êùäéêïðïéçôÞ áðü ôéò åôéêÝôåò ôùí åðéëåãìÝíùí "
+"áñ÷åßùí."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "ÐñïóôÝèçêáí åéêüíåò óôçí åôéêÝôá ôïõ åðéëåãìÝíïõ áñ÷åßïõ."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "ÁöáéñÝèçêáí ïé åéêüíåò áðü ôá åðéëåãìÝíá áñ÷åßá."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "ÅðéëÝîôå ôñüðï ëåéôïõñãßáò êáé ìÜóêá êáé åðáíáëÜâáôå ôçí ßäéá åíÝñãåéá"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Óáñþèçêáí üëåò ïé åôéêÝôåò"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "ÁöáéñÝèçêáí üëåò ïé åôéêÝôåò"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Áðïèçêåýôçêáí üëá ôá áñ÷åßá..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Ôá áñ÷åßá áðïèçêåýôçêáí åí ìÝñåé..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Ôá áñ÷åßá äéáãñÜöçêáí åí ìÝñåé..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "ÄéáãñÜöçêáí üëá ôá áñ÷åßá..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"ÈÝëåôå íá áðïèçêåýóåôå ôçí åôéêÝôá ôïõ áñ÷åßïõ\n"
+"'%s' ;"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "ÁðïèÞêåõóç åôéêÝôáò..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Ìåôïíïìáóßá áñ÷åßïõ êáé êáôáëüãïõ"
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"ÈÝëåôå íá ìåôïíïìÜóåôå ôï áñ÷åßï êáé ôïí êáôÜëïãï \n"
+"'%s'\n"
+"óå \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Ìåôïíïìáóßá êáôáëüãïõ..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"ÈÝëåôå íá ìåôïíïìÜóåôå ôïí êáôÜëïãï \n"
+"'%s'\n"
+"óå \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Ìåôïíïìáóßá áñ÷åßïõ"
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"ÈÝëåôå íá ìåôïíïìÜóåôå ôï áñ÷åßï \n"
+"'%s'\n"
+"óå \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "ÁðïèÞêåõóç ôçò åôéêÝôáò ôïõ '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Ïé åôéêÝôåò áðïèçêåýôçêáí"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá åããñáöÞò ôçò åôéêÝôáò ôïõ áñ÷åßïõ '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Ìåôïíïìáóßá áñ÷åßïõ '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá ìåôïíïìáóßáò ôïõ áñ÷åßïõ '%s'\n"
+" óå \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Ôï/ôá áñ÷åßï/á äåí ìåôïíïìÜóôçêå/áí..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Áäõíáìßá ìåôïíïìáóßáò ôïõ áñ÷åßïõ \n"
+"'%s'\n"
+"äéüôé õðÜñ÷åé ôï áêüëïõèï áñ÷åßï:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá äçìéïõñãßáò ôïõ êáôáëüãïõ \n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Ôï áñ÷åßï '%s' ìåôïíïìÜóôçêå óå '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Ôï/ôá áñ÷åßï/á ìåôïíïìÜóôçêå/áí"
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá äéáãñáöÞò ôïõ ðáëéïý êáôáëüãïõ :\n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Ôï áñ÷åßï '%s' ìåôïíïìÜóôçêå óå '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Ôï/ôá áñ÷åßï/á ìåôïíïìÜóôçêå/áí"
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá ìåôïíïìáóßáò ôïõ áñ÷åßïõ '%s'\n"
+" óå \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Ôï/ôá áñ÷åßï/á äåí ìåôïíïìÜóôçêå/áí..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"ÈÝëåôå ðñÜãìáôé íá äéáãñÜøåôå ïñéóôéêÜ ôï áñ÷åßï\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "ÄéáãñáöÞ áñ÷åßïõ..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Ôï áñ÷åßï '%s' äéáãñÜöçêå."
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá áíÜãíùóçò ôïõ êáôáëüãïõ :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "ÁíáæÞôçóç óå åîÝëéîç..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Áñ÷åßï: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "ÂñÝèçêáí %d áñ÷åßá óå áõôüí ôïí êáôÜëïãï êáé ôïõò õðïêáôáëüãïõò ôïõ"
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "ÂñÝèçêáí %d áñ÷åßá óå áõôüí ôïí êáôÜëïãï."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u áñ÷åßï/á"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr ""
+"Äå âñÝèçêå êáíÝíá áñ÷åßï óå áõôüí ôïí êáôÜëïãï êáé ôïõò õðïêáôáëüãïõò ôïõ!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Äå âñÝèçêå êáíÝíá áñ÷åßï óå áõôüí ôïí êáôÜëïãï!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "ÁíáæÞôçóç óå åîÝëéîç..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " ÓôáìÜôçìá áíáæÞôçóçò..."
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "ÅðéëÝîôå Ýíáí êáôÜëïãï ãéá ðåñéÞãçóç!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "ÓõìðëÞñùóç áõôïý ôïõ ðåäßïõ ôùí åôéêåôþí ôùí åðéëåãìÝíùí áñ÷åßùí"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "ÌåôáôñïðÞ ôïõ '_' êáé ôïõ '%20' óå êåíÜ"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "ÌåôáôñïðÞ ôïõ ' ' óå '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "¼ëá êåöáëáßá"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "¼ëá ðåæÜ"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Ðñþôï ãñÜììá êåöáëáßï"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Ðñþôï ãñÜììá êÜèå ëÝîçò êåöáëáßï"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Áöáßñåóç êåíþí"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "ÅéóáãùãÞ êåíïý ðñéí áðü êÜèå êåöáëáßï ãñÜììá"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Áöáßñåóç äéðëþí êåíþí Þ '_'"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: ÁíáðÜíôå÷ç Ýîïäïò! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "ÅëÞöèç ôï óÞìá %s(%d)\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"ÊáôÜ ðÜóá ðéèáíüôçôá âñÞêáôå Ýíá óöÜëìá (bug) óôï EasyTAG. Ðáñáêáëïýìå "
+"óôåßëôå ìßá áíáöïñÜ óöÜëìáôïò ìáæß ìå Ýíá backtrace áðü ôï gdb ('gdb easytag "
+"core' êáé óôç óõíÝ÷åéá 'bt' êáé 'l') êáé ïäçãßåò ãéá ôçí áíáðáñáãùãÞ ôïõ "
+"ðñïâëÞìáôïò óôï <easytag@gmail.com>"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "¶ãíùóôï óÞìá"
+
+#: src/easytag.c:4452
+#, fuzzy
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"×ñÞóç: easytag [åðéëïãÞ] \n"
+" Þ: easytag [êáôÜëïãïò] \n"
+"\n"
+"ÅðéëïãÝò:\n"
+"---------\n"
+"-h, --help ÅìöÜíéóç áõôïý ôïõ ìçíýìáôïò êáé Ýîïäïò.\n"
+"-v, --version ÅìöÜíéóç âáóéêþí ðëçñïöïñéþí êáé Ýîïäïò.\n"
+"\n"
+"ÊáôÜëïãïò:\n"
+"----------\n"
+"/äéáäñïìÞ_ãéá/áñ÷åßá ×ñÞóç áðüëõôçò äéáäñïìÞò\n"
+"äéáäñïìÞ_ãéá/áñ÷åßá ×ñÞóç ó÷åôéêÞò äéáäñïìÞò\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: ÊáíïíéêÞ Ýîïäïò"
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"ÌåñéêÜ áñ÷åßá Ý÷ïõí ôñïðïðïéçèåß ÷ùñßò íá áðïèçêåõèïýí ïé áëëáãÝò...\n"
+"ÈÝëåôå íá áðïèçêåýóåôå ôéò áëëáãÝò óôá áñ÷åßá ðñïôïý êëåßóåé ôï ðñüãñáììá;"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr "Åðéèõìåßôå üíôùò íá åîÝëèåôå áðü ôï ðñüãñáììá;"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ÅôéêÝôá ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "ÅôéêÝôá Ogg Vorbis"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "ÅôéêÝôá FLAC Vorbis"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "ÅôéêÝôá APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "ÅôéêÝôá MP4/M4A/AAC"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ Ogg Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Åðüìåíï áñ÷åßï"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ Monkey's Audio"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ MP4/AAC"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "Ðëçñïöïñßåò áñ÷åßïõ MusePack"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Åéêüíåò"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Áäõíáìßá ìåôáôñïðÞò ôïõ ïíüìáôïò áñ÷åßïõ: '%s'\n"
+"óôçí êùäéêïðïßçóç ÷áñáêôÞñùí ôïõ óõóôÞìáôïò\n"
+"(ÄïêéìÜóôå íá èÝóåôå ôç ìåôáâëçôÞ ðåñéâÜëëïíôïò G_FILENAME_ENCODING)"
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "ÌåôÜöñáóç ïíüìáôïò áñ÷åßïõ"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr ""
+"Ôï üíïìá áñ÷åßïõ '%s' åßíáé ìåãáëýôåñï áðü %d ÷áñáêôÞñåò êáé èá ðåñéêïðåß!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "ÅöáñìïãÞ êùä/óçò:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "ÊáíÜëéá:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"ÓÖÁËÌÁ êáôÜ ôï Üíïéãìá ôïõ áñ÷åßïõ: '%s' (%s).\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ÓÖÁËÌÁ: Áðïôõ÷ßá áðïèÞêåõóçò ó÷ïëßùí óôï áñ÷åßï '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Ç åôéêÝôá ôïõ '%s' áðïèçêåýôçêå"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "ÁöáéñÝèçêå ç åôéêÝôá ôïõ '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "ÓöÜëìá êáôÜ ôçí áöáßñåóç ôçò åôéêÝôáò ID3v1 ôïõ '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "ÓöÜëìá êáôÜ ôçí áöáßñåóç ôçò åôéêÝôáò ID3v2 ôïõ '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "ÓöÜëìá êáôÜ ôçí åíçìÝñùóç ôçò åôéêÝôáò ID3v2 ôïõ '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "ÓöÜëìá êáôÜ ôçí åíçìÝñùóç ôçò åôéêÝôáò ID3v1 ôïõ '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Ç åôéêÝôá ôïõ '%s' åíçìåñþèçêå"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Äåí áíáöÝñèçêå êáíÝíá óöÜëìá"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Äåí õðÜñ÷åé äéáèÝóéìç ìíÞìç"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Äåí õðÜñ÷ïõí äåäïìÝíá ðñïò åðåîåñãáóßá"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "ÁêáôÜëëçëá äéáìïñöùìÝíá äåäïìÝíá"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Äåí õðÜñ÷åé buffer ãéá åããñáöÞ"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Ôï buffer åßíáé ðïëý ìéêñü"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "'Áêõñï frame ID"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Äå âñÝèçêå ôï åðéèõìçôü ðåäßï"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "¶ãíùóôïò ôýðïò ðåäßïõ"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Ç åôéêÝôá áõôÞ áíÞêåé Þäç óå Ýíá áñ÷åßï"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "ÁêáôÜëëçëç Ýêäïóç åôéêÝôáò"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Äåí õðÜñ÷åé áñ÷åßï ðñïò åðåîåñãáóßá"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Áðüðåéñá åããñáöÞò óå áñ÷åßï ðñïóôáôåõìÝíï áðü åããñáöÞ"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "ÓöÜëìá êáôÜ ôç óõìðßåóç/áðïóõìðßåóç"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "¶ãíùóôï ìÞíõìá ëÜèïõò!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Ôï áñ÷åßï '%s'\n"
+"ðåñéÝ÷åé óöÜëìáôá êáé èá ðñïêáëïýóå áóôÜèåéá óôçí id3lib. Ùò åê ôïýôïõ ôï "
+"ðñüãñáììá äå èá ôï åðåîåñãáóôåß."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "×áëáóìÝíï áñ÷åßï..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr "ÏÊ"
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr "Íáé"
+
+#: src/misc.c:221
+msgid " No "
+msgstr "¼÷é"
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr "ÅöáñìïãÞ"
+
+#: src/misc.c:231
+msgid " Save "
+msgstr "ÁðïèÞêåõóç"
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr "¶êõñï"
+
+#: src/misc.c:241
+msgid " Close "
+msgstr "Êëåßóéìï"
+
+#: src/misc.c:246
+msgid " Write "
+msgstr "ÁðïèÞêåõóç"
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr "ÅêôÝëåóç"
+
+#: src/misc.c:256
+msgid " Search "
+msgstr "ÁíáæÞôçóç"
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "ÐåñéÞãçóç..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "ÅðéëÝîôå êáôÜëïãï..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "ÅðéëÝîôå áñ÷åßï..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "ÁíáæÞôçóç óå åîÝëéîç..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Äåí åßíáé äõíáôÞ ç åêôÝëåóç ôïõ %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Äçìéïõñãßá ëßóôáò áíáðáñáãùãÞò"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "¼íïìá ëßóôáò áíáðáñáãùãÞò M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "¼íïìá êáôáëüãïõ:"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Åðåîåñãáóßá ìáóêþí"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "ÅðéëïãÝò ëßóôáò áíáðáñáãùãÞò"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Íá ðåñéëáìâÜíåé ìüíï ôá åðéëåãìÝíá áñ÷åßá"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Áí åíåñãïðïéçèåß ç åðéëïãÞ áõôÞ, ôüôå ìüíï ôá åðéëåãìÝíá áñ÷åßá èá "
+"ðåñéëçöèïýí óôç ëßóôá áíáðáñáãùãÞò. ÅéäÜëëùò ç ëßóôá èá ðåñéëáìâÜíåé üëá ôá "
+"áñ÷åßá."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "×ñÞóç ðëÞñïõò äéáäñïìÞò ãéá ôá áñ÷åßá óôç ëßóôá áíáðáñáãùãÞò"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "×ñÞóç ó÷åôéêÞò äéáäñïìÞò ãéá ôá áñ÷åßá óôç ëßóôá áíáðáñáãùãÞò"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Äçìéïõñãßá ëßóôáò áíáðáñáãùãÞò óôï ãïíéêü êáôÜëïãï"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Áí åíåñãïðïéçèåß ç åðéëïãÞ áõôÞ, ôüôå ç ëßóôá áíáðáñáãùãÞò èá äçìéïõñãçèåß "
+"óôïí áñ÷éêü êáôÜëïãï."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "×ñÞóç äéá÷ùñéóôéêïý êáôáëüãùí DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Ç åðéëïãÞ áõôÞ áíôéêáèéóôÜ ôï äéá÷ùñéóôéêü êáôáëüãùí ôïõ UNIX, '/' ìå ôï "
+"äéá÷ùñéóôéêü ôïõ DOS, '\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Ðåñéå÷üìåíá ëßóôáò áíáðáñáãùãÞò"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "ÁðïèÞêåõóç ìüíï ôçò ëßóôáò ôùí áñ÷åßùí"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "ÁðïèÞêåõóç ðëçñïöïñéþí ìå ÷ñÞóç ôïõ ïíüìáôïò áñ÷åßïõ"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "ÁðïèÞêåõóç ðëçñïöïñéþí ìå ÷ñÞóç:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Ôï áñ÷åßï ëßóôáò áíáðáñáãùãÞò '%s' õðÜñ÷åé Þäç!\n"
+" Íá áíôéêáôáóôáèåß;"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "ÁðïèÞêåõóç ëßóôáò áíáðáñáãùãÞò..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá áðïèÞêåõóçò ôçò ëßóôáò áíáðáñáãùãÞò '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Áðïèçêåýôçêå ç ëßóôá áíáðáñáãùãÞò '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Ôßôëïò êïììáôéïý"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Ó÷üëéï"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "ÓõíèÝôçò"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Áñ÷éêüò êáëëéôÝ÷íçò"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Copyright"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "Éóôïóåëßäá"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "ÊùäéêïðïéÞèçêå áðü"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "ÁíáæÞôçóç óå Ýíá áñ÷åßï"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"ÐëçêôñïëïãÞóôå ìßá ëÝîç ãéá áíáæÞôçóç óôá áñ÷åßá, Þ ôßðïôå ãéá íá "
+"åìöáíéóôïýí üëá ôá áñ÷åßá."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "Óå:"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "ôï ¼íïìá áñ÷åßïõ"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "ç åôéêÝôá ..."
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Ôáßñéáóìá ðåæþí/êåöáëáßùí"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "ÂñÝèçêáí: %d áñ÷åßï/á"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Öüñôùóç ïíïìÜôùí áñ÷åßùí áðü Ýíá áñ÷åßï êåéìÝíïõ"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Áñ÷åßï:"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr "Öüñôùóç"
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Ðåñéå÷üìåíá öïñôùìÝíïõ áñ÷åßïõ:"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Ëßóôá ïíïìÜôùí áñ÷åßùí:"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Åíåñãïðïéþíôáò áõôÞí ôçí åðéëïãÞ, ìåôÜ ôç öüñôùóç ôùí ïíïìÜôùí áñ÷åßùí, èá "
+"÷ñçóéìïðïéçèåß ï óáñùôÞò ìå ôéò ôñÝ÷ïõóåò ñõèìßóåéò ôïõ (ôï ðáñÜèõñï ôïõ "
+"óáñùôÞ ðñÝðåé íá åßíáé áíïé÷ôü)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "ÅéóáãùãÞ ìßáò êåíÞò ãñáììÞò"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "ÄéáãñáöÞ áõôÞò ôçò ãñáììÞò"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "ÄéáãñáöÞ üëùí ôùí êåíþí ãñáììþí"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Åðáíáöüñôùóç"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Ðñïößë:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "¹÷ïò"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "¶ãíùóôï"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "ËÜèïò ìïñöïðïßçóç MP4."
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Íá åðáíáëçöèåß ç ßäéá åíÝñãåéá ãéá ôá õðüëïéðá áñ÷åßá."
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Ç áêïëïõèßá Ogg äåí ðåñéÝ÷åé äåäïìÝíá vorbis."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "ÓÖÁËÌÁ: Áðïôõ÷ßá áíïßãìáôïò ôïõ áñ÷åßïõ '%s' ùò áñ÷åßï vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Ðñïóï÷Þ: Ôï áñ÷åßï Ogg Vorbis '%s' ðåñéÝ÷åé åôéêÝôá ID3v2."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "ÐñïóèÞêç åéêüíùí"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "¼ëá ôá áñ÷åßá"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "Áñ÷åßá PNG êáé JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Éäéüôçôåò åéêüíáò %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Ôýðïò åéêüíáò"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "ÐåñéãñáöÞ åéêüíáò:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "ÁðïèÞêåõóç åéêüíáò %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Ôï áñ÷åßï '%s' õðÜñ÷åé Þäç\n"
+"ÈÝëåôå íá ôï áíôéêáôáóôÞóåôå"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "ÁðïèÞêåõóç áñ÷åßïõ..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "Åéêüíá JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "Åéêüíá PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "¶ãíùóôïò ôýðïò åéêüíáò"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "Åéêïíßäéï PNG 32x32 pixel"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "¶ëëï åéêïíßäéï áñ÷åßïõ"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Åîþöõëëï"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Ïðéóèüöõëëï"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Óåëßäá âéâëßïõ"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Öõóéêü ìÝóïí (ð.÷. åôéêÝôá CD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Êýñéïò êáëëéôÝ÷íçò/êýñéïò åñìçíåõôÞò/óïëßóô"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "ÊáëëéôÝ÷íçò/åñìçíåõôÞò"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "ÄéåõèõíôÞò ïñ÷Þóôñáò"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Ïñ÷Þóôñá"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Óôß÷ïé"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Ôüðïò ç÷ïãñÜöçóçò"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "ÊáôÜ ôçí ç÷ïãñÜöçóç"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "ÊáôÜ ôçí åêôÝëåóç"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "ÊáñÝ áðü ôáéíßá / âßíôåï"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "¸íá ðïëý÷ñùìï øÜñé"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Óêßôóï"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Ëïãüôõðï óõãêñïôÞìáôïò/êáëëéôÝ÷íç"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Ëïãüôõðï äéóêïãñáöéêÞò åôáéñßáò/óôïýíôéï"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "¶ãíùóôïò ôýðïò åéêüíáò"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "pixels"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Ôýðïò"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "ÐåñéãñáöÞ"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Äåí åßíáé äõíáôÞ ç áðåéêüíéóç ôçò åéêüíáò, êáèþò äå äéáâÜóôçêáí áñêåôÜ "
+"äåäïìÝíá ãéá íá êáôáóôåß åöéêôÞ ç äçìéïõñãßá ôïõ buffer ôçò åéêüíáò."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Öüñôùóç áñ÷åßïõ åéêüíáò..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ\n"
+"'%s'!\n"
+" (%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Ôï áñ÷åßï åéêüíáò äå öïñôþèçêå..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "ÐñïôéìÞóåéò..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "ÐåñéçãçôÞò áñ÷åßùí"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "ÌåôÜâáóç óôïí Áñ÷éêü ÊáôÜëïãï"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Êáèïñßóôå ôïí êáôÜëïãï óôïí ïðïßï âñßóêïíôáé ôá áñ÷åßá óáò. Ï êáôÜëïãïò "
+"áõôüò èá öïñôþíåôáé êÜèå öïñÜ ðïõ ôï easytag åêêéíåßôáé ÷ùñßò ðáñÜìåôñï."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Áõôüìáôç áíáæÞôçóç ãéá áñ÷åßá óôïí ðáñáêÜôù êáôÜëïãï, êáôÜ ôçí åêêßíçóç ôïõ "
+"EasyTAG. Ï êáôÜëïãïò áõôüò ìðïñåß íá ðáñáêáìöèåß áðü ôçí ðáñÜìåôñï ðïõ ðåñíÜ "
+"ìÝóù ôçò ãñáììÞò åíôïëþí (easytag /äéáäñïìÞ_ãéá/áñ÷åßá_mp3)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "ÁíáæÞôçóç óôïõò õðïêáôáëüãïõò"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr ""
+"ÁíáæÞôçóç ãéá áñ÷åßá Þ÷ïõ óôïõò õðïêáôáëüãïõò, üôáí åðéëÝãåôáé Ýíáò "
+"êáôÜëïãïò áðü ôï äÝíäñï."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "ÅìöÜíéóç ôùí õðïêáôáëüãùí üôáí åðéëÝãåôáé Ýíáò êáôÜëïãïò"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Ç åðéëïãÞ áõôÞ åêôåßíåé ôï äÝíôñï, þóôå íá åìöáíßæïíôáé ïé õðïêáôÜëïãïé ôïõ "
+"åðéëåãìÝíïõ êáôáëüãïõ."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "ÁíáæÞôçóç óå êñõöïýò êáôáëüãïõò"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+"ÁíáæÞôçóç ãéá áñ÷åßá ìÝóá óå êñõöïýò êáôáëüãïõò (êáôáëüãïõò ìå ïíüìáôá ðïõ "
+"áñ÷ßæïõí ìå '.')"
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "ÐåñéâÜëëïí"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "ÅìöÜíéóç ôùí ðëçñïöïñéþí êåöáëßäáò ôïõ áñ÷åßïõ"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå êÜôù áðü ôï üíïìá áñ÷åßïõ èá åìöáíßæïíôáé ðëçñïöïñßåò "
+"üðùò ôï bitrate, ç äéÜñêåéá, ôï ìÝãåèïò êëð."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "ÅìöÜíéóç ôùí áëëáãìÝíùí áñ÷åßùí óôç ëßóôá ÷ñçóéìïðïéþíôáò:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Êüêêéíï ÷ñþìá"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "¸íôïíá ãñÜììáôá"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "ÅðéëïãÝò ôáîéíüìçóçò ëßóôáò"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Ôáîéíüìçóç ôçò ëßóôáò áñ÷åßùí êáôÜ:"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "¼íïìá áñ÷åßïõ, áýîïõóá"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "¼íïìá áñ÷åßïõ, öèßíïõóá"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Áýîïíôá áñéèìü êïììáôéïý, áýîïõóá"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Áýîïíôá áñéèìü êïììáôéïý, öèßíïõóá"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Çìåñïìçíßá äçìéïõñãßáò, áýîïõóá"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Öèßíïõóá, êáôÜ çìåñïìçíßá äçìéïõñãßáò"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Ôßôëï, áýîïõóá"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Ôßôëï, öèßíïõóá"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "¼íïìá êáëëéôÝ÷íç, áýîïõóá"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "¼íïìá êáëëéôÝ÷íç, öèßíïõóá"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Ôßôëï äßóêïõ, áýîïõóá"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Ôßôëï äßóêïõ, öèßíïõóá"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "×ñïíéÜ, áýîïõóá"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "×ñïíéÜ, öèßíïõóá"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Ìïõóéêü åßäïò, áýîïõóá"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Ìïõóéêü åßäïò, öèßíïõóá"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Ó÷üëéï, áýîïõóá"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Ó÷üëéï, öèßíïõóá"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "ÅðéëÝîôå ôç ìÝèïäï ôáîéíüìçóçò êáôÜ ôç öüñôùóç åíüò êáôáëüãïõ."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå ç ôáîéíüìçóç ôçò ëßóôáò èá ãßíåôáé ìå äéÜêñéóç ðåæþí/"
+"êåöáëáßùí."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "ÈÝóç ðáñáèýñïõ ìçíõìÜôùí"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Êáìßá éäéáßôåñç èÝóç"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Ï äéá÷åéñéóôÞò ðáñáèýñùí ôïðïèåôåß ôï ðáñÜèõñï."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "ÊÝíôñï ôïõ êýñéïõ ðáñáèýñïõ"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Ôá ðáñÜèõñá íá ôïðïèåôïýíôáé óôï êÝíôñï ôïõ êýñéïõ ðáñáèýñïõ."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "ÊÝíôñï ôçò ïèüíçò"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Ôá ðáñÜèõñá íá ôïðïèåôïýíôáé óôï êÝíôñï ôçò ïèüíçò."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "ÈÝóç äåßêôç ðïíôéêïý"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr ""
+"Ôá ðáñÜèõñá íá ôïðïèåôïýíôáé óôçí ôñÝ÷ïõóá èÝóç ôïõ äåßêôç ôïõ ðïíôéêéïý."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "ÁíáðáñáãùãÝáò Þ÷ïõ"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Ðñüãñáììá ðñïò åêôÝëåóç :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"ÅéóÜãåôå ôï ðñüãñáììá ðïõ èá ÷ñçóéìïðïéåßôáé ãéá ôçí áíáðáñáãùãÞ ôùí "
+"áñ÷åßùí. Ìðïñåßôå íá èÝóåôå êáé ïñßóìáôá ãéá ôï ðñüãñáììá, þóôå íá äå÷èåß ôá "
+"ïíüìáôá áñ÷åßùí óôç óõíÝ÷åéá (ð.÷. 'xmms -p')."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Ñõèìßóåéò áñ÷åßùí"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "ÅðéëïãÝò áñ÷åßùí"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+"ÁíôéêáôÜóôáóç áêáôÜëëçëùí ÷áñáêôÞñùí óôï üíïìá ôïõ áñ÷åßïõ (ãéá ÷ñÞóç óôá "
+"Windows êáé óå CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"ÌåôáôñïðÞ ôùí áêáôÜëëçëùí ÷áñáêôÞñùí ôïõ ïíüìáôïò áñ÷åßïõ ãéá óõóôÞìáôá "
+"áñ÷åßùí FAT32/16 êáé ISO9660 + Joliet ('\\', ':', ';', '*', '?', '\"', '<', "
+"'>', '|'), þóôå íá åßíáé äõíáôÞ ç ìåôïíïìáóßá ôïõ áñ÷åßïõ. Ç åðéëïãÞ áõôÞ "
+"åßíáé ÷ñÞóéìç êáôÜ ôç ìåôïíïìáóßá ôïõ áñ÷åßïõ âÜóåé ôçò åôéêÝôáò, ìå ÷ñÞóç "
+"ôïõ óáñùôÞ."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "ÌåôáôñïðÞ ôçò åðÝêôáóçò ôïõ ïíüìáôïò áñ÷åßïõ óå :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "ÐåæÜ"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Ð.÷. ç åðÝêôáóç èá ìåôáôñáðåß óå '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Êåöáëáßá"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Ð.÷. ç åðÝêôáóç èá ìåôáôñáðåß óå '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Êáìßá áëëáãÞ"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "Ç åðÝêôáóç äå èá ìåôáôñáðåß"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "ÄéáôÞñçóç ôïõ ÷ñüíïõ ôñïðïðïßçóçò ôïõ áñ÷åßïõ"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"ÄéáôÞñçóç ôïõ ÷ñüíïõ ôñïðïðïßçóçò ôïõ áñ÷åßïõ (óôéò éäéüôçôåò ôïõ áñ÷åßïõ) "
+"êáôÜ ôçí áðïèÞêåõóç ôùí áëëáãþí óå áõôü."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Óýíïëï ÷áñáêôÞñùí ãéá ôá ïíüìáôá áñ÷åßùí"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Êáíüíåò ðïõ èá ÷ñçóéìïðïéïýí óå ðåñßðôùóç ðïõ êÜðïéïé áðü ôïõò ÷áñáêôÞñåò "
+"ôïõ ïíüìáôïò áñ÷åßïõ äåí õðÜñ÷ïõí óôçí êùäéêïðïßçóç ÷áñáêôÞñùí ôïõ "
+"óõóôÞìáôïò."
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "ÄïêéìÞ ìßáò Üëëçò êùäéêïðïßçóçò ÷áñáêôÞñùí"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Ìå ôçí åðéëïãÞ áõôÞ åíåñãïðïéçìÝíç, ôï easytag èá äïêéìÜóåé íá êùäéêïðïéÞóåé "
+"ôïõò ÷áñáêôÞñåò óýìöùíá ìå ôç ãëþóóá óõóôÞìáôïò (ð.÷.: ISO-8859-7 ãéá 'el', "
+"ISO-8859-2 ãéá 'hr'). Áí ç ìåôáôñïðÞ áðïôý÷åé, ôüôå ôï easytag èá äïêéìÜóåé "
+"ôçí êùäéêïðïßçóç ISO-8859-1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+"×ñÞóç ïðùóäÞðïôå ôçò êùäéêïðïßçóçò ÷áñáêôÞñùí ôïõ óõóôÞìáôïò êáé "
+"åíåñãïðïßçóç ôçò ìåôáôñïðÞò ÷áñáêôÞñùí."
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Ìå ôçí åðéëïãÞ áõôÞ åíåñãïðïéçìÝíç, ôï easytag èá ÷ñçóéìïðïéåß ðÜíôá ôï "
+"óýíïëï ÷áñáêôÞñùí ôïõ óõóôÞìáôïò, êáé, åÜí Ýíáò ÷áñáêôÞñáò äåí õðÜñ÷åé óôï "
+"óýíïëï áõôü, ôüôå èá áíôéêáôáóôáèåß áí Ýíáí Þ ðåñéóóüôåñïõò üìïéïõò óôçí "
+"åìöÜíéóç ÷áñáêôÞñåò."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"×ñÞóç ïðùóäÞðïôå ôçò êùäéêïðïßçóçò ÷áñáêôÞñùí ôïõ óõóôÞìáôïò êáé óéùðçñÞ "
+"áðüññéøç ìåñéêþí ÷áñáêôÞñùí."
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Ìå ôçí åðéëïãÞ áõôÞ åíåñãïðïéçìÝíç, ôï easytag èá áðïññßðôåé ôïõò ÷áñáêôÞñåò "
+"ðïõ äåí ìðïñïýí íá áíáðáñáóôáèïýí ìå ôçí åðéëåãìÝíç êùäéêïðïßçóç."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Ñõèìßóåéò åôéêåôþí"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "ÅðéëïãÝò åôéêåôþí"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Áõôüìáôç óõìðëÞñùóç ôçò çìåñïìçíßáò, áí äåí åßíáé ðëÞñçò"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"ÐñïóðÜèåéá óõìðëÞñùóçò ôçò ÷ñïíéÜò, áí åéóÜãåôå ìüíï ôá ôåëåõôáßá øçößá ôçò "
+"÷ñïíéÜò (ð.÷. ç ôñÝ÷ïõóá ÷ñïíéÜ åßíáé 2005: 5 => 2005, 4 => 2004, 6 => 1996, "
+"95 => 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "ÅããñáöÞ ôïõ áýîïíôá áñéèìïý ôïõ êïììáôéïý ìå ôüóá øçößá:"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ï áýîùí áñéèìüò ôïõ êïììáôéïý óõìðëçñþíåôáé ìå ìçäåíéêÜ, "
+"þóôå íá Ý÷åé ðÜíôá 'n' øçößá (ð.÷. ìå äýï øçößá: '05', '09', '10',...). "
+"ÄéáöïñåôéêÜ ãñÜöåôáé ìüíï ìå ôïí áðáñáßôçôï áñéèìü øçößùí."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Áñ÷åßá Ogg Vorbis : ÅããñáöÞ ôïõ ó÷ïëßïõ êáé óôç ìïñöÞ XMMS."
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"Ôï XMMS äåí ÷ñçóéìïðïéåß óùóôÞ ôå÷íéêÞ ãéá ôïí åíôïðéóìü ôùí ó÷ïëßùí óôá "
+"áñ÷åßá Ogg Vorbis. Ôá ðåäßá ó÷ïëßùí õðïäåéêíýïíôáé áðü ôï 'comment=', åíþ ôï "
+"XMMS åíôïðßæåé ôá ó÷üëéá ìüíï áðü ôï '='. Ðáñáêáëïýìå, ìçí åíåñãïðïéÞóåôå "
+"ôçí åðéëïãÞ áõôÞ áí äå èÝëåôå ïé õðüëïéðåò åöáñìïãÝò íá ðáñáðïíéïýíôáé ãéá "
+"ôçí ýðáñîç åíüò Üãíùóôïõ ðåäßïõ óôá áñ÷åßá. Ùóôüóï ôá ó÷üëéá äå èá "
+"åìöáíßæïíôáé óôï XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"Ìåôáêßíçóç ôïõ êÝñóïñá óôá ðåäßá ôçò åôéêÝôáò êáôÜ ôç ìåôÜâáóç áðü Ýíá "
+"áñ÷åßï óå Ýíá Üëëï ìå ôá ðëÞêôñá Page Up/Page Down."
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "ÄéáôÞñçóç ôïõ êÝñóïñá óôï ßäéï ðåäßï ôçò åôéêÝôáò."
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+"ÌåôáöïñÜ ôïõ êÝñóïñá óôï ðñþôï ðåäßï ôçò åôéêÝôáò (äçë. ôï ðåäßï 'Ôßôëïò')"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "Ñõèìßóåéò åôéêåôþí ID3"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Êáíüíåò óõìðëÞñùóçò åôéêåôþí ID3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "ÐñïóèÞêç åôéêÝôáò ID3 óôá áñ÷åßá FLAC ðïõ öÝñïõí åôéêÝôåò FLAC"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå óôá áñ÷åßá FLAC èá ðñïóôßèåôáé åðßóçò ìßá åôéêÝôá ID3 "
+"(óýìöùíá ìå ôïõò äýï ðáñáðÜíù êáíüíåò, åðéðëÝïí ôçò åôéêÝôáò FLAC). "
+"ÄéáöïñåôéêÜ ïé åôéêÝôåò ID3 èá áðïìáêñýíïíôáé."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Áöáßñåóç ôùí åôéêåôþí áí üëá ôá ðåäßá åßíáé êåíÜ"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Ïé åôéêÝôåò ID3v2 ìðïñåß íá ðåñéÝ÷ïõí êáé Üëëá óôïé÷åßá, åðéðëÝïí ôïõ "
+"ôßôëïõ, êáëëéôÝ÷íç, äßóêïõ, ÷ñïíéÜò, á/á êïììáôéïý, ìïõóéêïý åßäïõò êáé "
+"ó÷ïëßïõ (üðùò óõíçììÝíç åéêüíá, óôß÷ïõò, êëð). Ç åðéëïãÞ áõôÞ áöáéñåß ðëÞñùò "
+"ôçí åôéêÝôá, óå ðåñßðôùóç ðïõ êáé ôá 7 ôõðéêÜ ðåäßá åßíáé Üäåéá."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Áõôüìáôç ìåôáôñïðÞ ôùí ðáëáéþí åêäüóåùí åôéêåôþí ID3v2"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ç ðáëáéÜò Ýêäïóçò åôéêÝôåò ID3v2 (ð.÷. ID3v2.1) èá "
+"áíáâáèìßæïíôáé óå ID3v2.3."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Äçìéïõñãßá åôéêÝôáò ID3v2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Óýíïëï ÷áñáêôÞñùí ãéá ôéò åôéêÝôåò ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Äçìéïõñãßá åôéêÝôáò ID3v2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Äçìéïõñãßá åôéêÝôáò ID3v2"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå óôçí áñ÷Þ ôùí áñ÷åßùí MP3 èá ðñïóôßèåôáé ìßá åôéêÝôá "
+"ID3v2, Þ, åöüóïí áõôÞ õðÜñ÷åé, èá áíáíåþíåôáé. ÄéáöïñåôéêÜ ç åôéêÝôá ID3v2 "
+"èá áöáéñåßôáé."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "ÐåñéãñáöÞ:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "ÊùäéêïðïéÞèçêå áðü"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Óýíïëï ÷áñáêôÞñùí ìå ôï ïðïßï èá áðïèçêåýåôáé ç åôéêÝôá óôï áñ÷åßï."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr "¼÷é"
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ÅôéêÝôá ID3"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Äçìéïõñãßá åôéêÝôáò ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå óôï ôÝëïò ôùí áñ÷åßùí MP3 èá ðñïóôßèåôáé ìßá åôéêÝôá "
+"ID3v1, Þ, åöüóïí áõôÞ õðÜñ÷åé, èá áíáíåþíåôáé. ÄéáöïñåôéêÜ ç åôéêÝôá ID3v1 "
+"èá áöáéñåßôáé."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Óýíïëï ÷áñáêôÞñùí ìå ôï ïðïßï èá áðïèçêåýåôáé ç åôéêÝôá óôï áñ÷åßï."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Óýíïëï ÷áñáêôÞñùí ãéá ôéò åôéêÝôåò ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Áõôü ôï óýíïëï ÷áñáêôÞñùí èá ÷ñçóéìïðïéåßôáé êáôÜ ôçí áíÜãíùóç ôçò åôéêÝôáò, "
+"ãéá ôç ìåôáôñïðÞ êÜèå óõìâïëïóåéñÜò ðïõ âñßóêåôáé óå ðåäßï ISO-8859-1 "
+"(åôéêÝôåò ID2v2 Þ/êáé ID3v1).\n"
+"\n"
+"Ãéá ðáñÜäåéãìá:\n"
+" - Óå ðñïçãïýìåíåò åêäüóåéò ôïõ EasyTAG Þôáí äõíáôÞ ç áðïèÞêåõóç "
+"óõìâïëïóåéñþí UTF-8 óå Ýíá ðåäßï ISO-8859-1. Ç ðñáêôéêÞ áõôÞ åßíáé ëÜèïò! "
+"Ãéá íá ìåôáôñÝøåôå ôéò åôéêÝôåò áõôÝò óå Unicode åíåñãïðïéÞóôå ôçí åðéëïãÞ "
+"áõôÞ êáé åðéëÝîôå \"UTF-8\". Åðßóçò ðñÝðåé íá åíåñãïðïéÞóåôå ðáñáðÜíù ôçí "
+"åðéëïãÞ \"ÐñïóðÜèåéá êùäéêïðïßçóçò ôùí åôéêåôþí êáôÜ ISO-8859-1 êáé ÷ñÞóç "
+"UNICODE óå ðåñßðôùóç ðïõ ç êùäéêïðïßçóç äåí åßíáé äõíáôÞ (óõíéóôÜôáé)\" Þ "
+"\"ÁðïèÞêåõóç ôùí åôéêåôþí ÷ñçóéìïðïéþíôáò ðÜíôïôå ôï óýíïëï ÷áñáêôÞñùí "
+"UNICODE\".\n"
+" - Ìðïñåßôå íá ïñßóåôå ôï óýíïëï ÷áñáêôÞñùí Windows-1253 ãéá íá äéáâÜóåôå "
+"ôéò åôéêÝôåò ðïõ ãñÜöôçêáí óôá ÅëëçíéêÜ óå Windows Þ ISO-8859-7 ãéá åôéêÝôåò "
+"ðïõ ãñÜöôçêáí óôá ÅëëçíéêÜ óå Unix."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr ""
+"Óýíïëï ÷áñáêôÞñùí ìå ôï ïðïßï èá ãßíåôáé ç áíÜãíùóç ôçò åôéêÝôáò áðü ôï "
+"áñ÷åßï."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "ÓáñùôÞò"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "ÓõìðëÞñùóç åôéêÝôáò - ìåôáôñïðÞ ÷áñáêôÞñùí"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "ÌåôáôñïðÞ ôïõ '_' êáé ôïõ '%20' óå êåíü ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "ÌåôáôñïðÞ ôïõ êåíïý ' ' óå '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå ç ìåôáôñïðÞ áõôÞ èá ÷ñçóéìïðïéåßôáé êáôÜ ôçí åöáñìïãÞ "
+"ìßáò ìÜóêáò óôï óáñùôÞ åôéêåôþí."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Ìåôïíïìáóßá áñ÷åßùí - ìåôáôñïðÞ ÷áñáêôÞñùí"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå ç ìåôáôñïðÞ áõôÞ èá ÷ñçóéìïðïéåßôáé êáôÜ ôçí åöáñìïãÞ "
+"ìßáò ìÜóêáò óôï óáñùôÞ ìåôïíïìáóßáò áñ÷åßùí."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Åðåîåñãáóßá ðåäßùí - ìåôáôñïðÞ ÷áñáêôÞñùí"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr "Ðåæü ðñþôï ãñÜììá óå ìåñéêÝò ðñïèÝóåéò êáé Üñèñá"
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Íá ìç ìåôáôñÝðåôáé ôï ðñþôï ãñÜììá ëÝîåùí üðùò ðñïèÝóåéò, Üñèñá -åí ìÝóù- "
+"êáé ëÝîåùí üðùò feat., üôáí ÷ñçóéìïðïéåßôáé ç åðéëïãÞ óÜñùóçò 'Êåöáëáßï ôï "
+"ðñþôï ãñÜììá êÜèå ëÝîçò' (ð.÷. 'Êåßìåíï óå Ýíá Ðåäßï' áíôß ôïõ 'Êåßìåíï Óå "
+"¸íá Ðåäßï')."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "ÐáñÜèõñï óáñùôÞ"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "¶íïéãìá ôïõ ðáñáèýñïõ óáñùôÞ êáôÜ ôçí åêêßíçóç"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"ÅíåñãïðïéÞóôå ôçí åðéëïãÞ áõôÞ ãéá íá áíïßãåé áõôüìáôá ôï ðáñÜèõñï ôïõ "
+"óáñùôÞ êÜèå öïñÜ ðïõ îåêéíÜ ôï EasyTAG."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "ÐÜíôá ïñáôü ðáñÜèõñï óáñùôÞ"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå ôï ðáñÜèõñï óáñùôÞ èá ðáñáìÝíåé ðÜíôá ðÜíù áðü ôï "
+"êýñéï ðáñÜèõñï."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Ðåäßá"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "ÅããñáöÞ ðÜíù áðü ôá õðÜñ÷ïíôá ðåäßá"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå ï óáñùôÞò èá áíôéêáèéóôÜ ôï êåßìåíï óôá ðåäßá ðïõ Þäç "
+"Ý÷ïõí åããñáöÞ ìå íÝï. Áí áðåíåñãïðïéçèåß, ôüôå èá ãñÜöåé ìüíï óôá êåíÜ ðåäßá."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Êáèïñéóìüò åñÞìçí ó÷ïëßïõ :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"ÅíåñãïðïéÞóôå ôçí åðéëïãÞ áõôÞ áí èÝëåôå íá åéóÜãåôáé ôï ðáñáêÜôù êåßìåíï "
+"óôï ðåäßï «ó÷üëéï» üôáí ÷ñçóéìïðïéåßôå ôï óáñùôÞ ãéá óõìðëÞñùóç ôçò åôéêÝôáò."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "×ñÞóç ôïõ CRC32 ùò åñÞìçí ó÷üëéï (ãéá áñ÷åßá ìå åôéêÝôåò ID3 ìüíï)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Õðïëïãßæåé ôçí ôéìÞ ôïõ áèñïßóìáôïò åðáëÞèåõóçò CRC32 ôïõ áñ÷åßïõ êáé ôçí "
+"êáôáãñÜöåé óôï ðåäßï «ó÷üëéï» êáôÜ ôç ÷ñÞóç ôïõ óáñùôÞ ãéá ôç óõìðëÞñùóç ôùí "
+"åôéêåôþí."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "ÂÜóç ÄåäïìÝíùí CD"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+#, fuzzy
+msgid "Server Settings for Automatic Search"
+msgstr "Áõôüìáôç áíáæÞôçóç"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "¼íïìá :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Èýñá :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "ÄéáäñïìÞ CGI :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "Ñõèìßóåéò åîõðçñåôçôÞ"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "ÂÜóç ÄåäïìÝíùí CD"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "ÄéáäñïìÞ CGI :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Ñõèìßóåéò äéáìåóïëáâçôÞ äéêôýïõ"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "×ñÞóç äéáìåóïëáâçôÞ äéêôýïõ"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Åíåñãïðïßçóç ÷ñÞóçò åíüò äéáìåóïëáâçôÞ äéêôýïõ."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "¼íïìá äéáìåóïëáâçôÞ :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "¼íïìá ôïõ äéáìåóïëáâçôÞ äéêôýïõ"
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Èýñá óýíäåóçò óôï äéáìåóïëáâçôÞ äéêôýïõ"
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "¼íïìá ÷ñÞóôç :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "¼íïìá ÷ñÞóôç ãéá ðéóôïðïßçóç óôï äéáìåóïëáâçôÞ äéêôýïõ"
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Óõíèçìáôéêü ÷ñÞóôç :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Óõíèçìáôéêü ÷ñÞóôç ãéá ðéóôïðïßçóç óôï äéáìåóïëáâçôÞ äéêôýïõ"
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Ëßóôá Ôßôëùí Êïììáôéþí"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"ÅðéëïãÞ ôïõ áíôßóôïé÷ïõ áñ÷åßïõ Þ÷ïõ (áíÜëïãá ìå ôç èÝóç Þ ôï DLM, áí áõôü "
+"åßíáé åíåñãïðïéçìÝíï)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå êáôÜ ôçí åðéëïãÞ åíüò áñ÷åßïõ óôç ëßóôá ôßôëùí "
+"êïììáôéþí èá óõíïäåýåôáé áðü åðéëïãÞ ôïõ áíôßóôïé÷ïõ áñ÷åßïõ óôçí êýñéá "
+"ëßóôá."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"×ñÞóç ôïõ áëãüñéèìïõ Levenstein (DLM) ãéá ôï ôáßñéáóìá ôùí ãñáììþí (ìå âÜóç "
+"ôïí ôßôëï) ìå ôá áñ÷åßá Þ÷ïõ (ìå âÜóç ôï ïíïìá áñ÷åßïõ)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Åðéâåâáéþóåéò"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Åðéâåâáßùóç åîüäïõ áðü ôï ðñüãñáììá"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Áí åíåñãïðïéçèåß, ôüôå èá æçôåßôáé áðü ôï ÷ñÞóôç åðéâåâáßùóç åîüäïõ áðü ôï "
+"ðñüãñáììá."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Åðéâåâáßùóç áðïèÞêåõóçò ôçò åôéêÝôáò ôïõ áñ÷åßïõ"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Åðéâåâáßùóç ìåôïíïìáóßáò ôïõ áñ÷åßïõ"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Åðéâåâáßùóç äéáãñáöÞò ôïõ áñ÷åßïõ"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Åðéâåâáßùóç áðïèÞêåõóçò ôçò ëßóôáò áíáðáñáãùãÞò"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr ""
+"ÅöáñìïãÞ ôùí áëëáãþí (÷ùñßò áðïèÞêåõóÞ ôïõò) êáé êëåßóéìï ôïõ ðáñáèýñïõ"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Êëåßóéìï ôïõ ðáñáèýñïõ ÷ùñßò íá áðïèçêåõôïýí ïé áëëáãÝò"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "ÁðïèÞêåõóç ôùí áëëáãþí êáé êëåßóéìï ôïõ ðáñáèýñïõ"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Ð.÷.: %.*d_-_¼íïìá_áñ÷åßïõ_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Ïé áëëáãÝò ôÝèçêáí óå éó÷ý"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Ïé ñõèìßóåéò áðïèçêåýôçêáí"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Ïé ñõèìßóåéò Ýìåéíáí áìåôÜâëçôåò"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+"Ç åðéëåãìÝíç áñ÷éêÞ äéáäñïìÞ ãéá áñ÷åßá äåí åßíáé Ýãêõñç!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Äåí åßíáé êáôÜëïãïò"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "Ôï ðñüãñáììá áíáðáñáãùãÞò Þ÷ïõ '%s' äå âñÝèçêå!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "ÓõìðëÞñùóç åôéêÝôáò"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Ìåôïíïìáóßá áñ÷åßïõ êáé êáôáëüãïõ"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Åðåîåñãáóßá ðåäßùí"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Ç åôéêÝôá óõìðëçñþèçêå åðéôõ÷þò..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Ç åôéêÝôá óõìðëçñþèçêå åðéôõ÷þò...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "ÓöÜëìá óÜñùóçò: áäõíáìßá åíôïðéóìïý ôïõ äéá÷ùñéóôéêïý '%s' óôï '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "Áäõíáìßá ìåôáôñïðÞò ôïõ '%s' óôï óýíïëï ÷áñáêôÞñùí ôïõ óõóôÞìáôïò."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Ôï áñ÷åßï ìåôïíïìÜóôçêå ìå åðéôõ÷ßá..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Ôï áñ÷åßï ìåôïíïìÜóôçêå ìå åðéôõ÷ßá...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "ÓÜñùóç åôéêÝôáò êáé ïíüìáôïò áñ÷åßïõ."
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "ÅíÝñãåéá :"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "ÅðéëÝîôå ôïí ôýðï óáñùôÞ ðïõ åðéèõìåßôå"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "ÓÜñùóç ôùí åðéëåãìÝíùí áñ÷åßùí"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "ÅðéëïãÝò óáñùôÞ"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "ÅìöÜíéóç / Áðüêñõøç ôïõ äéïñèùôÞ ìáóêþí"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "ÅìöÜíéóç / Áðüêñõøç õðïìíÞìáôïò"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Êëåßóéìï ôïõ ðáñáèýñïõ áõôïý"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"ÅðéëÝîôå Þ ðëçêôñïëïãÞóôå ìßá ìÜóêá ÷ñçóéìïðïéþíôáò ôïõò êùäéêïýò (âë. "
+"õðüìíçìá) ãéá íá åñìçíåõèåß ôï üíïìá êáé ç äéáäñïìÞ ôïõ áñ÷åßïõ. "
+"×ñçóéìïðïéåßôáé ãéá ôç óõìðëÞñùóç ôçò åôéêÝôáò."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Ðñïåðéóêüðçóç åôéêÝôáò..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "×ñÞóç ôçò ôñÝ÷ïõóáò äéáäñïìÞò ùò ðñüèåìá óôç ìÜóêá"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"ÅðéëÝîôå Þ ðëçêôñïëïãÞóôå ìßá ìÜóêá ÷ñçóéìïðïéþíôáò ôïõò êùäéêïýò (âë. "
+"õðüìíçìá) ãéá íá åñìçíåõèåß ôï üíïìá êáé ç äéáäñïìÞ ôïõ áñ÷åßïõ. "
+"×ñçóéìïðïéåßôáé ãéá ôç ìåôïíïìáóßá ôïõ áñ÷åßïõ.\n"
+"×ñçóéìïðïéÞóôå / ãéá ôç äçìéïõñãßá êáôáëüãùí. Áí ï ðñþôïò ÷áñáêôÞñáò "
+"åßíáé /, ôüôå ç äéáäñïìÞ èåùñåßôáé áðüëõôç, åéäÜëëùò èåùñåßôáé ó÷åôéêÞ ìå "
+"ôçí ðñïçãïýìåíç äéáäñïìÞ."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Ðñïåðéóêüðçóç ïíüìáôïò áñ÷åßïõ..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "ÅðéëÝîôå ðåäßá:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Ôá êïõìðéÜ äåîéÜ áíáðáñéóôïýí ôá ðåäßá ðïõ èá õðïóôïýí åðåîåñãáóßá. ÅðéëÝîôå "
+"áõôÜ ðïõ óáò åíäéáöÝñïõí."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "Á"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "¼íïìá áñ÷åßïõ"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "Ô"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Ôßôëïò êïììáôéïý"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ê"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "ÊáëëéôÝ÷íçò"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Ä"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "¼íïìá äßóêïõ"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "Å"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Ìïõóéêü åßäïò"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Ó÷"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Ó÷üëéï"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Óõ"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "¼íïìá óõíèÝôç"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "Áñ"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "¼íïìá áñ÷éêïý êáëëéôÝ÷íç"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "C"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Copyright"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "URL"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "Êù"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "ÊùäéêïðïéÞèçêå áðü"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "ÁíôéóôñïöÞ åðéëïãÞò"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "ÅðéëïãÞ/áðïåðéëïãÞ üëùí"
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "ÌåôáôñïðÞ ôïõ '_' êáé ôïõ '%20' óå ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "ÌåôáôñïðÞ :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "óå : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Ç êÜôù ðáýëá êáé ç óõìâïëïóåéñÜ '%20' áíôéêáèéóôþíôáé áðü Ýíá êåíü. Ð.÷. ôï "
+"'Êåßìåíï%20óå%20ïðïéïäÞðïôå_ðåäßï' ãßíåôáé 'Êåßìåíï óå ïðïéïäÞðïôå_ðåäßï'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Ôï êåíü áíôéêáèßóôáôáé áðü ìßá êÜôù ðáýëá. Ð.÷. ôï 'Êåßìåíï óå ïðïéïäÞðïôå "
+"ðåäßï' ãßíåôáé 'Êåßìåíï_óå_ïðïéïäÞðïôå_ðåäßï'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "ÁíôéêáôÜóôáóç åíüò ÷áñáêôÞñá ìå Ýíáí Üëëï."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"ÌåôáôñïðÞ üëùí ôùí ãñáììÜôùí óå üëá ôá ðåäßá óå êåöáëáßá. Ð.÷. ôï 'Êåßìåíï "
+"óå êÜðïéï ÐÅÄÉÏ' ãßíåôáé 'ÊÅÉÌÅÍÏ ÓÅ ÊÁÐÏÉÏ ÐÅÄÉÏ'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"ÌåôáôñïðÞ üëùí ôùí ãñáììÜôùí óå üëá ôá ðåäßá óå ðåæÜ. Ð.÷. ôï 'Êåßìåíï óå "
+"êÜðïéï ÐÅÄÉÏ' ãßíåôáé 'êåßìåíï óå êÜðïéï ðåäßï'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"ÌåôáôñïðÞ ôïõ áñ÷éêïý ãñÜììáôïò ôçò ðñþôçò ëÝîçò êÜèå ðåäßïõ óå êåöáëáßï. Ð."
+"÷. ôï 'êåßìåíï ÓÅ ÊÜðïéï ÐÅäßï' ãßíåôáé 'Êåßìåíï óå êÜðïéï ðåäßï'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"ÌåôáôñïðÞ ôïõ áñ÷éêïý ãñÜììáôïò êÜèå ëÝîçò êÜèå ðåäßïõ óå êåöáëáßï. Ð.÷. ôï "
+"'êåßìåíï ÓÅ ÊÁðïéï Ðåäßï' ãßíåôáé 'Êåßìåíï Óå ÊÜðïéï Ðåäßï'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "ÅéóáãùãÞ åíüò êåíïý ðñéí áðü êÜèå êåöáëáßï ãñÜììá"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Áöáßñåóç äéðëþí êåíþí Þ êÜôù ðáõëþí"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Áöáéñïýíôáé üëá ôá êåíÜ áíÜìåóá óôéò ëÝîåéò. Ð.÷. ôï 'Êåßìåíï Óå ÊÜðïéï "
+"Ðåäßï' ãßíåôáé 'ÊåßìåíïÓåÊÜðïéïÐåäßï'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"ÅéóÜãåôáé Ýíá êåíü ðñéí áðü êÜèå êåöáëáßï ÷áñáêôÞñá. Ð.÷. ôï "
+"'ÊåßìåíïÓåÊÜðïéïÐåäßï' ãßíåôáé 'Êåßìåíï Óå ÊÜðïéï Ðåäßï'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Áöáéñïýíôáé ôá äéðëÜ êåíÜ êáé ïé äéðëÝò êÜôù ðáýëåò. Ð.÷. ôï "
+"'Êåßìåíï__Óå__ÊÜðïéï Ðåäßï' ãßíåôáé 'Êåßìåíï_Óå_ÊÜðïéï Ðåäßï'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Õðüìíçìá"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : ¼íïìá êáëëéôÝ÷íç"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : Ôßôëïò äßóêïõ"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : Ó÷üëéï"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : ¼íïìá óõíèÝôç"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : Copyright"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : á/á äßóêïõ"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : ÊùäéêïðïéÞèçêå áðü"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : Ìïõóéêü åßäïò"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : Íá áãíïçèåß"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : Áñéèìüò êïììáôéþí"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : ¼íïìá áñ÷éêïý êáëëéôÝ÷íç"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n Áñéèìüò êïììáôéïý"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : Ôßôëïò"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : ×ñïíéÜ"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "ÄéïñèùôÞò ÌÜóêáò"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Äçìéïõñãßá íÝáò ìÜóêáò"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Ìåôáêßíçóç ôçò ìÜóêáò ðñïò ôá ðÜíù"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Ìåôáêßíçóç ôçò ìÜóêáò ðñïò ôá êÜôù"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Äéðëáóéáóìüò ôçò ìÜóêáò"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "ÐñïóèÞêç åî ïñéóìïý ìáóêþí"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "ÄéáãñáöÞ ìÜóêáò"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "ÁðïèÞêåõóç ìáóêþí"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "_ÍÝá ìÜóêá"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "ÁíôéãñáöÞ: Äåí Ý÷åé åðéëåãåß êáìßá óåéñÜ!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "ÄéáãñáöÞ: Äåí Ý÷åé åðéëåãåß êáìßá óåéñÜ!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Ìåôáêßíçóç ðñïò ôá ðÜíù: Äåí Ý÷åé åðéëåãåß êáìßá óåéñÜ!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Ìåôáêßíçóç ðñïò ôá êÜôù: Äåí Ý÷åé åðéëåãåß êáìßá óåéñÜ!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr ""
+"ÓÖÁËÌÁ: Áäõíáìßá áðïèÞêåõóçò ôïõ áñ÷åßïõ ñõèìßóåùí %s (%s)\n"
+""
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ ñõèìßóåùí '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Öüñôùóç åñÞìçí ñõèìßóåùí..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Áäõíáìßá äçìéïõñãßáò Þ áíïßãìáôïò ôïõ áñ÷åßïõ '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+"ÓÖÁËÌÁ: Áäõíáìßá áðïèÞêåõóçò ôçò ëßóôáò óôï áñ÷åßï: %s (%s)\n"
+""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Öüñôùóç ôùí ðñïêáèïñéóìÝíùí ìáóêþí óõìðëÞñùóçò åôéêÝôáò..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Öüñôùóç ôùí ðñïêáèïñéóìÝíùí ìáóêþí ìåôïíïìáóßáò áñ÷åßïõ..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Öüñôùóç ôùí ðñïêáèïñéóìÝíùí ìáóêþí ìåôïíïìáóßáò êáôáëüãïõ..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"ÓÖÁËÌÁ: Äåí Ý÷åé ïñéóôåß ç ìåôáâëçôÞ ðåñéâÜëëïíôïò HOME!\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "ÓÖÁËÌÁ: Áäõíáìßá äçìéïõñãßáò ôïõ êáôáëüãïõ '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "ÅëëåéðÞ Þ áíýðáñêôá äåäïìÝíá åéóüäïõ."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Ôá äåäïìÝíá åéóüäïõ äåí áðïôåëïýí áêïëïõèßá Ogg."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "ÓöÜëìá áíÜãíùóçò ôçò ðñþôçò óåëßäáò ôçò áêïëïõèßáò Ogg."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "ÓöÜëìá áíÜãíùóçò ôïõ ðáêÝôïõ áñ÷éêÞò êåöáëßäáò."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Ç áêïëïõèßá Ogg äåí ðåñéÝ÷åé äåäïìÝíá vorbis."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "ÁëëïéùìÝíç äåõôåñåýïõóá êåöáëßäá."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "ÔÝëïò Áñ÷åßïõ (EOF) ðñéí ôï ôÝëïò ôùí êåöáëßäùí vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "ÅëëåéðÞ Þ áëëïéùìÝíá äåäïìÝíá, óõíå÷ßæù..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"ÓöÜëìá åããñáöÞò ôçò áêïëïõèßáò äåäïìÝíùí óôçí Ýîïäï. Ç áêïëïõèßá äåäïìÝíùí "
+"ìðïñåß íá åßíáé áëëïéùìÝíç Þ åëëéðÞò."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "ÅêôÝëåóç áíáðáñáãùãÝá ìïõóéêÞò"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "ÁêáôÜëëçëç Ýêäïóç åôéêÝôáò"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "ÐëÞñùóç êåíþí (padding)"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "ÐëÞñùóç ôùí êåíþí ôùí åôéêåôþí ID3v2 þóôå ôõ÷üí åðüìåíåò áëëáãÝò íá "
+#~ "ãßíïíôáé ðéï ãñÞãïñá."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr ""
+#~ "ÁðïèÞêåõóç ôùí åôéêåôþí ÷ñçóéìïðïéþíôáò ôçí êùäéêïðïßçóç ÷áñáêôÞñùí ISO-"
+#~ "8859-1"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "×ñÞóç ôçò êùäéêïðïßçóçò ISO-8859-1 (óýíïëï ÷áñáêôÞñùí åíüò byte) ãéá ôçí "
+#~ "áðïèÞêåõóç ôùí åôéêåôþí ID3v1 êáé ID3v2. Ìåñéêïß ÷áñáêôÞñåò ìðïñåß íá ìçí "
+#~ "áðïèçêåõèïýí.\n"
+#~ "\n"
+#~ "Ìðïñåßôå íá åðéëÝîåôå Ýíá äéáöïñåôéêü óýíïëï ÷áñáêôÞñùí ÷ñçóéìïðïéþíôáò "
+#~ "ôçí åðéëïãÞ '×ñÞóç ìç-ôõðïðïéçìÝíïõ óõíüëïõ ÷áñáêôÞñùí ãéá ôçí áðïèÞêåõóç "
+#~ "ôùí åôéêåôþí ID3'.\n"
+#~ "Åðßóçò ìðïñåßôå íá ïñßóåôå ìåñéêïýò êáíüíåò ãéá ôï ÷åéñéóìü ôùí "
+#~ "÷áñáêôÞñùí ðïõ äåí ìðïñïýí íá ìåôáôñáðïýí."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "ÐñïóðÜèåéá êùäéêïðïßçóçò ôùí åôéêåôþí êáôÜ ISO-8859-1 êáé ÷ñÞóç UNICODE "
+#~ "óå ðåñßðôùóç ðïõ ç êùäéêïðïßçóç äåí åßíáé äõíáôÞ (óõíéóôÜôáé)."
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Ôï óýíïëï ÷áñáêôÞñùí UNICODE èá ÷ñçóéìïðïéçèåß åöüóïí áðïôý÷åé ç "
+#~ "ìåôáôñïðÞ óôï óýíïëï ÷áñáêôÞñùí ISO-8859-1. Ôï UNICODE ìðïñåß íá "
+#~ "÷ñçóéìïðïéçèåß ìüíï óå åôéêÝôåò ID3v2. Ïé åôéêÝôåò ID3v1 ÷ñçóéìïðïéïýí "
+#~ "ìüíï óýíïëá ÷áñáêôÞñùí ôïõ åíüò byte (ôõðéêÜ ISO-8859-1).\n"
+#~ "\n"
+#~ "Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå Ýíá óýíïëï ÷áñáêôÞñùí äéáöïñåôéêü áðü ôï ISO-"
+#~ "8859-1, ÷ñçóéìïðïéþíôáò ôçí åðéëïãÞ '×ñÞóç ìç-ôõðïðïéçìÝíïõ óõíüëïõ "
+#~ "÷áñáêôÞñùí ãéá ôçí áðïèÞêåõóç ôùí åôéêåôþí ID3'.\n"
+#~ "Åðßóçò ìðïñåßôå íá ïñßóåôå ìåñéêïýò êáíüíåò ðïõ èá åöáñìüæïíôáé óå "
+#~ "ðåñéðôþóåéò ðïõ êÜðïéïé ÷áñáêôÞñåò äåí õðÜñ÷ïõí óôï óõãêåêñéìÝíï óýíïëï "
+#~ "÷áñáêôÞñùí."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr ""
+#~ "ÁðïèÞêåõóç ôùí åôéêåôþí ÷ñçóéìïðïéþíôáò ðÜíôïôå ôï óýíïëï ÷áñáêôÞñùí "
+#~ "UNICODE."
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "×ñÞóç ôïõ óõíüëïõ ÷áñáêôÞñùí UNICODE ãéá ôéò åôéêÝôåò ID3v2. Ïé åôéêÝôåò "
+#~ "ID3v1 áðïèçêåýïíôáé ðÜíôá ÷ñçóéìïðïéþíôáò óýíïëá ÷áñáêôÞñùí ôïõ åíüò byte "
+#~ "(ôõðéêÜ ISO-8859-1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "×ñÞóç ôïõ áêüëïõèïõ óõíüëïõ ÷áñáêôÞñùí áíôß ôïõ ISO-8859-1 óôá áíôßóôïé÷á "
+#~ "ðåäßá (ãéá ðåðåéñáìÝíïõò ÷ñÞóôåò!)."
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr ""
+#~ "×ñÞóç ìç-ôõðéêïý óõíüëïõ ÷áñáêôÞñùí ãéá ôçí áíÜãíùóç ôùí åôéêåôþí ID3: "
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr ""
+#~ "×ñÞóç ìç-ôõðéêïý óõíüëïõ ÷áñáêôÞñùí ãéá ôçí åããñáöÞ ôùí åôéêåôþí ID3: "
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Áõôü ôï óýíïëï ÷áñáêôÞñùí èá ÷ñçóéìïðïéåßôáé áíôß ôïõ ISO-8859-1 êáôÜ ôçí "
+#~ "áðïèÞêåõóç åíüò ðåäßïõ ôçò åôéêÝôáò (ID3v2 Þ/êáé ID3v1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "ÅöáñìïãÞ ôùí ðáñáêÜôù êáíüíùí ãéá ôá ðåäßá ðïõ áðïèçêåýïíôáé óå ISO-8859-"
+#~ "1, üôáí ìåñéêïß ÷áñáêôÞñåò äåí ìðïñïýí íá ìåôáôñáðïýí:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Êáìßá åíÝñãåéá"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr ""
+#~ "ÏðùóäÞðïôå ÷ñÞóç ôïõ êáèïñéóìÝíïõ óõíüëïõ ÷áñáêôÞñùí êáé áíôéêáôÜóôáóç "
+#~ "ìåñéêþí ÷áñáêôÞñùí."
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr ""
+#~ "ÏðùóäÞðïôå ÷ñÞóç ôïõ êáèïñéóìÝíïõ óõíüëïõ ÷áñáêôÞñùí êáé óéùðçñÞ áðüññéøç "
+#~ "ìåñéêþí ÷áñáêôÞñùí."
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "Ç ìåôáôñïðÞ óõíüëùí ÷áñáêôÞñùí áðü '%s'\n"
+#~ "óå '%s' äåí õðïóôçñßæåôáé!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "ÓÖÁËÌÁ êáôÜ ôï Üíïéãìá ôïõ áñ÷åßïõ: '%s' (%s).\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Öüñôùóç ôïõ êáôáëüãïõ êáôÜ ôçí åêêßíçóç"
+
+#~ msgid "#:"
+#~ msgstr "#:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "×ñÞóç êßôñéíïõ öüíôïõ óôá tooltips."
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "Áí åíåñãïðïéçèåß, ôüôå ôï öüíôï ôùí tooltips èá åßíáé êßôñéíï, áãíïþíôáò "
+#~ "ôéò ñõèìßóåéò ôïõ äéá÷åéñéóôÞ ðáñáèýñùí."
diff --git a/po/es.gmo b/po/es.gmo
new file mode 100644
index 0000000..4973345
--- /dev/null
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..32a02b2
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,5214 @@
+# Spanish translation of EasyTag.
+# Copyright (C) 2002-2005 Free Software Foundation, Inc.
+# Jaime Serrano Cartagena <jaiserca@inf.upv.es>, 2002.
+# Fernando M. Bueno Moreno <fernantre@yahoo.es>, 2004, 2005.
+# Francisco Javier F. Serrador <serrador@cvs.gnome.org> 2005.
+# Francisco Javier F. Serrador <serrador@tecknolabs.com> 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: easytag-1.99.11\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2005-12-22 02:16+0100\n"
+"Last-Translator: Francisco Javier F. Serrador <serrador@tecknolabs.com>\n"
+"Language-Team: <traductores@es.gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG es una utilidad para ver, editar y escribir etiquetas para los "
+"archivos MP3, MP2, FLAC, Ogg Vorbis, MP4/AAC, MusePack y Monkey's Audio. Su "
+"interfaz GTK+ sencilla y agradable hace el etiquetar más fácil bajo GNU/"
+"Linux."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Traducción alemana)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Traducción rusa)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Traducción holandesa)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Traducción sueca)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Traducción húngara)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Traducción italiana)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Traducción japonesa)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Traducción ucraniana)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Traducción checa)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Traducción española)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Traducción polaca)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Traducción rumana)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Traducción danesa)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Traducción griega)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Traducción portugués brasileiro)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(Traducción búlgara)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(Traducción japonesa)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Traducción griega)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Acerca de..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Acerca de"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(compilado: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(usando: GTK+ %d.%d.%d e id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(soporte para archivos MP3 deshabilitado)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(soporte para archivos MP3 deshabilitado)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(soporte para archivos MP3 deshabilitado)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(soporte para archivos MP3 deshabilitado)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(soporte para archivos Ogg Vorbis deshabilitado)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(soporte para archivos MP3 deshabilitado)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(soporte para archivos FLAC deshabilitado)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(soporte para archivos MP4/AAC deshabilitado)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(soporte para archivos MP3 deshabilitado)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Autor: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "Correo-e: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Página web: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Descripción:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Agradecimientos"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Traducciones:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "General:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Cambios"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "No se puede abrir el archivo «%s» (%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "ERROR al abrir archivo: «%s» (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Archivo"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Ordenar la lista por etiqueta"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Ordenar la lista por propiedades"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Ascendente por nombre de archivo"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Descendente por nombre de archivo"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Ascendente por fecha de creación"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Descendente por fecha de creación"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Ascendente por número de pista"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Descendente por número de pista"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Ascendente por título"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Descendente por título"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Ascendente por artista"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Descendente por artista"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Ascendente por álbum"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Descendente por álbum"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Ascendente por año"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Descendente por año"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Ascendente por género"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Descendente por género"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Ascendente por comentario"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Descendente por comentario"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Ascendente por compositor"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Descendente por compositor"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Ascendente por artista original"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Descendente por artista original"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Ascendente por copyright"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Descendente por copyright"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Ascendente por URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Descendente por URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Ascendente por codificador"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Descendente por codificador"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Ascendente por tipo de archivo"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Descendente por tipo de archivo"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Ascendente por tamaño de archivo"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Descendente por tamaño de archivo"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Ascendente por duración"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Descendente por duración"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Ascendente por tasa de bits"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Descendente por tasa de bits"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Ascendente por tasa de muestreo"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Descendente por tasa de muestreo"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Abrir archivo(s) con ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Seleccionar todos los archivos"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Deseleccionar todos los archivos"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Invertir la selección"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Eliminar archivo(s)..."
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Primer archivo"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Primer archivo"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "_Anterior archivo"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Anterior archivo"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "S_iguiente archivo"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Siguiente archivo"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "_Último archivo"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Último archivo"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "_Procesar archivo(s)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Procesa los archivo(s)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Eliminar etiqueta(s)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Elimina las etiqueta(s)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "_Deshacer cambios de los último(s) archivo(s)"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Deshace los cambios de los último(s) archivo(s)"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "_Rehacer cambios de los último(s) archivo(s)"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Rehace los cambios de los último(s) archivo(s)"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Guardar archivo(s)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Guardar archivo(s)"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "_Forzar guardado de archivo(s)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Forzar guardado de archivo(s)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Deshacer últimos cambios"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Rehacer últimos cambios"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Salir"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Salir"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Explorador"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Ir al directorio _personal"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Ir al directorio personal"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Ir al directorio _predeterminado"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Ir al directorio predeterminado"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Establecer el directorio _actual como predeterminado"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Establece el directorio actual como predeterminado"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Vista artista-álbum"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Renombrar directorio..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Recargar directorio"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Explorar directorio con..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Contraer árbol"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Refrescar árbol"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "_Procesador"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Rellenar etiqueta(s)..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Rellenar etiqueta(s)..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Renombrar archivo(s) y directorio..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Renombrar archivo(s) y directorio..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Procesar campo(s)..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Procesar campo(s)..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Varios"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "_Buscar archivo(s)..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Buscar archivo(s)..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "Buscar en CDD_B..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "Buscar en CDDB..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Leer archivos desde TXT..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Escribir lista de reproducción..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Ejecutar reproductor de audio"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Configuración"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Preferencias..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Preferencias..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "A_yuda"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Acerca de"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Parar la acción actual"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_Operaciones de archivo"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Buscar archivo(s) en CDDB..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Explorar _subdirectorios"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Mostrar directorios ocultos"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Mostrar explorador del árbol / Mostrar por Artista y Ãlbum"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "No se pudo combinar el IU, el error fue: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Listo para empezar..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Seleccionada la nueva ruta predeterminada para los archivos"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Aceptar..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Algunos archivos han sido modificados pero no guardados...\n"
+"¿Quiere guardarlos antes de cambiar de directorio?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"La ruta introducida no es correcta!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Error..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "# Ãlbumes"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Error: Buscando %s, no se pudo encontrar el nodo %s en el árbol."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Artista"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Ãlbumes"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Archivos"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Ãlbum"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Ir al directorio superior"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Introducir un directorio para explorar."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Ãrbol"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Artista y Ãlbum"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Renombrar el directorio"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Renombrar el directorio «%s» a : "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Usar máscara :"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "Si está activado, usará máscaras para renombrar el directorio."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Seleccione o teclee una máscara usando códigos (ver leyenda) para renombrar "
+"el directorio desde los campos de etiquetas."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Máscara para procesar inválida"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Previsualizar el renombrado del directorio..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "¡Debe introducir un nombre de directorio!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"No se pudo convertir «%s» a la codificación. Usa otro nombre, por favor."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"¡No se puede renombrar puesto que el nombre de directorio ya existe!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"¡No se puede renombrar el directorio \n"
+"«%s»\n"
+" a \n"
+"«%s»!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Directorio renombrado"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Programa a ejecutar :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Introducir el programa a ejecutar. Se le pasará el directorio actual como "
+"parámetro."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Abrir archivo con ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Introducir el programa a ejecutar. Se le pasará el archivo actual como "
+"parámetro."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "¡Debe introducir un nombre de programa!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "No se puede encontrar el programa «%s»"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "No se puede ejecutar «%s» (error %d)\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "¡No se puede crear otro proceso!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Comando ejecutado : «%s %s»"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Artista / Ãlbum"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Categoría"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Nombre de pista"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Duración"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "Búsqueda en CDDB"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Búsqueda automática"
+
+#: src/cddb.c:284
+#, fuzzy
+msgid "Request CD database :"
+msgstr "Solicitud a la base de datos FreeDB:"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Solicitud de consulta automática a la base de datos CDDB usando los archivos "
+"seleccionados (¡el orden es importante!) para generar el CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Parar la búsqueda..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Cuando esta opción esté activa, después de leer los campos, el procesador "
+"actual será ejecutado (la ventana del procesador debe estar abierta)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Búsqueda manual"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Palabras :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Escriba las palabras a buscar (separadas por un espacio o «+»)"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Buscar en :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Todos los campos"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Otro"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Todas las categorías"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Clásico"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Varios"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "New Age"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Banda Sonora"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "incluido : funk, soul, rap, pop, industrial, metal, etc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "películas, shows"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "otros que no se ajustan a las categorías anteriores"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " Categorías"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Resultados :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Buscar :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Escriba las palabras a buscar en la siguiente lista"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Buscar siguiente"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Buscar anterior"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "Mostrar sólo seleccionados / Mostrar todos"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Deseleccionar todos"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Invertir la selección"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Seleccionar todos"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Seleccione las líneas para aplicar. Nótese que se aplicarán a todas líneas "
+"si ninguna está seleccionada. Puede reordenar las líneas en esta lista antes "
+"de usar el botón «Aplicar»"
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Establecer a:"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Todo"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Nombre de archivo"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Título"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Año"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Pista #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# Pistas"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Género"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Ejecutar el procesador para cada archivo"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Cuando se activa esta opción, se usará el algoritmo de Levenshtein (DLM: "
+"Damerau-Levenshtein Metric) para hacer coincidir el título CDDB contra cada "
+"nombre de fichero en la carpeta actual, y para seleccionar la mejor "
+"coincidencia. Esto será usado al seleccionar el archivo de sonido "
+"correspondiente, o aplicar los resultados de cddb en vez de usar "
+"directamente el orden de la posición."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Leer las líneas seleccionadas o todas (si ninguna está seleccionada)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Listo para buscar..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Ãlbum: «%s», artista: «%s», duración: «%s», año: «%s», género: «%s», ID: «%s»"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Invertir la selección"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Ordenar por número de pista"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Ordenar por nombre de pista"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Resolviendo anfitrión «%s» ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "¡No se puede resolver el anfitrión «%s» (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "¡No se puede crear un nuevo socket (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Conectando a anfitrión «%s», puerto «%d» ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "¡No se puede conectar al anfitrión «%s» (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Conectado al anfitrión «%s»"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Obteniendo datos (%s) ..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Error al borrar la etiqueta ID3v1 de «%s» (%s)\n"
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "No se puede crear o abrir el archivo «%s» (%s)\n"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "No se puede abrir el archivo «%s» (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Enviando petición ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "¡No se puede enviar la petición (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Obteniendo datos ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+#, fuzzy
+msgid "The server returned a wrong answer!"
+msgstr "¡El servidor devolvió una respuesta errónea! (%s)"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "¡El servidor devolvió una respuesta errónea! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Lo siento, la búsqueda web no funciona ahora"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Encontrados %d álbum(s) coincidentes"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Obteniendo datos (%s) ..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Obteniendo datos (%s) ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "No hay ningún archivo seleccionado"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d archivos seleccionados"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Listo para buscar..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Enviando petición (CddbId: %s, #pistas: %d, Duración total: %d)..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Encontrados %d álbum(s) coincidentes"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "No se puede abrir el archivo «%s» (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Cargando la lista de pistas del álbum ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"¡Cuidado, estás aplicando %d líneas de los resultados CDDB a %d líneasen la "
+"lista de archivos!\n"
+"\n"
+"¿Continuar?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Escribir etiqueta según CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Ãrabe (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Ãrabe (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Ãrabe (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Báltico (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Báltico (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Báltico (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Céltico (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Central Europeo (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Central Europeo (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Central Europeo (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chino Simplificado (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chino Simplificado (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Chino Tradicional (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chino Tradicional (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirílico (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirílico (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirílico (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirílico (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirílico (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Cirílico/Ruso (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Cirílico/Ucraniano (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Inglés (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Griego (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Griego (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hebreo (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebreo (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japonés (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonés (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonés (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Coreano (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nórdico (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Sur Europeo (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Tailandés (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Turco (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turco (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Turco (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamita (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamita (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebreo Visual (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Occidental (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Occidental (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Occidental (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Occidental (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"El nombre de archivo «%s» no se pudo convertir a la codificación UTF-8 (%"
+"s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "UTF-8 no válido"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"La cadena UTF-8 «%s» no se pudo convertir a la codificación del nombre de "
+"archivo (%s)\n"
+
+#: src/charset.c:705
+#, fuzzy, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"El nombre de archivo «%s» no se pudo convertir a la codificación UTF-8 (%"
+"s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Comenzando EasyTAG %s (PId: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Actualmente usando id3lib versión %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Actualmente usando id3lib versión %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Renombrando archivo «%s»"
+
+#: src/easytag.c:195
+#, fuzzy, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr ""
+"Usando actualmente la configuración regional «%s» (y eventualmente «%s»)...\n"
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s por %s (compilado %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Página Web: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Explorador"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Archivo"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Archivo de sólo lectura"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Enlace a archivo roto"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, layer ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Tasa de bits:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Frecuencia:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Modo:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Tamaño:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Duración:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Etiqueta"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "General"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Título:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Etiquetar archivos seleccionados con este título"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Artista:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Etiquetar archivos seleccionados con este artista"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Ãlbum:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Etiquetar archivos seleccionados con este nombre de álbum"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Etiquetar archivos seleccionados con este número de disco"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Año:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Etiquetar archivos seleccionados con este año"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Numerar todas las pistas secuencialmente. Empieza con 01 en cada "
+"subdirectorio."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Pista #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Poner el número de archivos, en el directorio del mostrado, a las pistas "
+"seleccionadas"
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Etiquetar archivos seleccionados con este número de pistas"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Género:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Etiquetar archivos seleccionados con este género"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Comentario:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Etiquetar archivos seleccionados con este comentario"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Compositor:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Etiquetar archivos seleccionados con este compositor"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Artista original:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Etiquetar archivos seleccionados con este artista original"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Copyright:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Etiquetar archivos seleccionados con este copyright"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Etiquetar archivos seleccionados con este URL"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Codificado por:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Etiquetar archivos seleccionados con este codificador"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Imágenes"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Imágenes:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Pues usar arrastrar y soltar para añadir una imagen."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Etiquetar archivos seleccionados con estas imágenes"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Eliminar imágenes seleccionadas, si no todas."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Añadir imágenes a la etiqueta (arrastrar y soltar también disponible)"
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Guardar las imágenes seleccionadas al disco duro."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Ajustar propiedades de las imágenes seleccionadas."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Archivos seleccionados etiquetados con el título «%s»."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Eliminado el título de los archivos seleccionados."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Archivos seleccionados etiquetados con el artista «%s»."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Eliminado el artista de los archivos seleccionados."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Archivos seleccionados etiquetados con álbum «%s»."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Eliminado el nombre de álbum de los archivos seleccionados."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Archivos seleccionados etiquetados con el número de disco «%s»."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Eliminó el disco de los archivos seleccionados."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Archivos seleccionados etiquetados con el año «%s»."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Eliminado el año de los archivos seleccionados."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Todos los archivos seleccionados etiquetados con la pista «xx/%s»."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Archivos seleccionados etiquetados con la pista como «xx»."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Eliminado el número de pista de los archivos seleccionados."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Pistas seleccionadas numeradas secuencialmente."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Archivos seleccionados etiquetados con el género «%s»."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Eliminado el género de los archivos seleccionados."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Archivos seleccionados etiquetados con el comentario «%s»."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Eliminado el comentario de los archivos seleccionados."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Archivos seleccionados etiquetados con el compositor «%s»."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Eliminado el compositor de los archivos seleccionados."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Archivos seleccionados etiquetados con el artista original «%s»."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Eliminado el artista original de los archivos seleccionados."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Archivos seleccionados etiquetados con el copyright «%s»."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Eliminado el copyright de los archivos seleccionados."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Archivos seleccionados etiquetados con el URL «%s»."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Eliminado URL de los archivos seleccionados."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Archivos seleccionados etiquetados con el codificador «%s»."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Eliminado el codificador de los archivos seleccionados."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Archivos seleccionados etiquetados con las imágenes."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Eliminadas imágenes de los archivos seleccionados."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Seleccionar Modo y Máscara, y rehacer la misma acción"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Todas las etiquetas han sido procesadas"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Todas las etiquetas han sido eliminadas"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Todos los archivos han sido guardados..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Los archivos han sido parcialmente guardados..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Los archivos han sido parcialmente eliminados..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Todos los archivos han sido eliminados..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"¿Quiere escribir la etiqueta al archivo\n"
+"«%s» ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Escribir etiqueta..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Renombrar archivo y directorio..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"¿Quiere renombrar el archivo y directorio\n"
+"«%s»\n"
+"a \n"
+"«%s» ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Renombrar directorio..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"¿Quiere renombrar el directorio\n"
+"«%s»\n"
+"a \n"
+"«%s» ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Renombrar archivo..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"¿Quiere renombrar el archivo \n"
+"«%s»\n"
+"a \n"
+"«%s» ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Escribiendo etiqueta de «%s»"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Etiqueta(s) escritas"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"No se puede escribir la etiqueta en el archivo «%s»\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Renombrando archivo «%s»"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"¡No se puede renombrar el archivo «%s»\n"
+" a \n"
+"«%s»!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Archivo(s) no renombrados..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"No se puede renombrar archivo \n"
+"«%s»\n"
+"porque el siguiente archivo ya existe:\n"
+"«%s»"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"No se puede crear el directorio de destino:\n"
+"«%s»\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Renombrado el archivo «%s» a «%s»"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Archivo(s) renombrados..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"No se puede eliminar el directorio antiguo:\n"
+"«%s»\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Se movió el archivo «%s» a «%s»"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Archivo(s) movidos..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"¡No se puede mover el archivo «%s»\n"
+" a \n"
+"«%s»!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Archivo(s) no movidos..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"¿Realmente quiere eliminar definitivamente el archivo\n"
+" «%s» ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Eliminar archivo..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Archivo «%s» eliminado"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"No se puede leer el directorio :\n"
+"«%s»\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Búsqueda en progreso..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Archivo: «%s»"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Encontrados %d archivo(s) en este directorio y los subdirectorios."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Encontrados %d archivo(s) en este directorio"
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u archivo(s)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr ""
+"¡No se han encontrados archivos en este directorio y los subdirectorios!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "¡No se han encontrado archivos en este directorio!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Buscando..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " Parar la búsqueda... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Seleccione un directorio para explorar."
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Etiquetar archivos seleccionados con este campo"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Convertir «_» y «%20» a espacios"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Convertir « » a «_»"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "TODAS MAYÚSCULAS"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "todas minúsculas"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Primera letra mayúscula"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Primera Letra De Cada Palabra Mayúscula"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Borrar espacios"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Insertar espacios antes de una letra en mayúsculas"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Borrar espacios o subrayados duplicados"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: ¡Terminación anormal! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "Recibida señal %s (%d)\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Probablemente ha encontrado un bicho en EasyTAG. Por favor, envíe un informe "
+"del error con una traza gdb ('gdb easytag core' y entonces 'bt' y 'l') a "
+"easytag@gmail.com"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Señal desconocida"
+
+#: src/easytag.c:4452
+#, fuzzy
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Uso: easytag [opción] \n"
+" o: easytag [directorio]\n"
+"\n"
+"Opción:\n"
+"-------\n"
+"-h, --help Mostrar este texto y salir.\n"
+"-v, --version Mostrar información básica y salir.\n"
+"\n"
+"Directorio:\n"
+"-----------\n"
+"/ruta_a/archivos Usar una ruta absoluta para cargar,\n"
+"ruta_a/archivos Usar una ruta relativa.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Terminación normal."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Algunos archivos han sido modificados pero no se han guardado...\n"
+"¿Desea guardarlos antes de salir del programa?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr "¿Realmente quiere salir del programa? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "Etiqueta ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Etiqueta Ogg Vorbis"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "Etiqueta FLAC Vorbis"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "Etiqueta APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "Etiqueta MP4/M4A/AAC"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "Archivo MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "Archivo MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Archivo Ogg Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Siguiente archivo"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "Archivo FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "Archivo MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Archivo Monkey's Audio"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "Archivo MP4/AAC"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "Archivo MusePack"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Imágenes"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"No se pudo convertir el nombre: «%s»\n"
+"a la codificación del sistema\n"
+"(Intenta configurar la variable de entorno G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Codificación del nombre del archivo"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "El nombre de archivo «%s» excede %d caracteres y será truncado\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Codificador:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Canales"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"ERROR al abrir archivo: «%s» (%s).\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ERROR: Fallo al escribir comentarios al archivo «%s» (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Escrita la etiqueta de «%s»"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Borrada la etiqueta de «%s»"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Error al borrar la etiqueta ID3v1 de «%s» (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Error al borrar la etiqueta ID3v2 de «%s» (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Error al actualizar la etiqueta ID3v2 de «%s» (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Error al actualizar la etiqueta ID3v1 de «%s» (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Actualizada la etiqueta de «%s»"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "No se han producido errores"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "No hay memoria suficiente"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "No hay datos que analizar"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Datos incorrectamente formados"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "No hay búfer para escribir"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "El búfer es demasiado pequeño"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "ID de marco inválido"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Campo pedido no encontrado"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Tipo de campo desconocido"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "La etiqueta ya está asociada a un archivo"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Versión de etiqueta inválida"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Ningún archivo que procesar"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Intentando escribir en un archivo de sólo lectura"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Error en compresión/descompresión"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "¡Mensaje de error desconocido!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Debido a que el siguiente archivo corrompido: «%s»\n"
+"causaría un error en id3lib, el programa no lo procesará."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Archivo corrompido..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " Aceptar "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Sí "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " No "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Aplicar "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Guardar "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Cancelar "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Cerrar "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Escribir "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Ejecutar "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " Buscar "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " Examinar..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Seleccionar directorio..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Seleccionar archivo..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "Buscando..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "No se puede ejecutar «%s» (%s)\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KiB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MiB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GiB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TiB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Generar una lista de reproducción"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "Nombre de la lista M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Usar nombre del directorio"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Editar máscaras"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Opciones de la lista de reproducción"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Incluir sólo los archivos seleccionados"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Si está activado, sólo los archivos seleccionados se añadirán a la lista de "
+"reproducción. De lo contrario, se añadirán todos."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Usar ruta completa para los archivos en la lista"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Usar ruta relativa para los archivos en la lista"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Crear lista de reproducción en directorio superior"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Si está seleccionado, la lista de reproducción se creará en el directorio "
+"superior."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Usar el separador de directorio de DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Esta opción reemplaza el separador de directorio UNIX «/» por el separador "
+"DOS «\\»."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Contenido de la lista de reproducción"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Escribir sólo la lista de archivos"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Escribir información utilizando el nombre de archivo"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Escribir información usando :"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"El archivo de la lista «%s» ya existe.\n"
+"¿Desea sobreescribirlo?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Escribir lista de reproducción..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"No se puede escribir el archivo de lista «%s»\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Se ha escrito el archivo de la lista «%s»"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Pista"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Comentario"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Compositor"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Artista original"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Copyright"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Codificado por"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Buscar un archivo"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Teclee la palabra que quiere buscar dentro de los archivos. No teclee nada "
+"para mostrar todos los archivos."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "En :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "el Nombre del archivo"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "la etiqueta"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Distinguir capitalización"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Encontrados: %d archivo(s)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Leer nombres de archivo desde un archivo TXT"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Archivo :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Cargar "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Cargado el contenido del archivo :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Lista de nombre de archivos :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Cuando esta opción esté activa, después de cargar los nombres, el procesador "
+"actual será ejecutado (la ventana del procesador debe estar abierta)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Insertar una línea en blanco"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Eliminar esta línea"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Borrar todas las líneas en blanco"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Releer"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Perfil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Sonido"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Desconocida"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "Formato MP4 inválido"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Repetir acción para el resto de los archivos"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "La trama de bits Ogg no contiene datos vorbis."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "ERROR: Fallo al abrir archivo: «%s» como vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Atención: el archivo Ogg Vorbis «%s» contiene una etiqueta ID3v2."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Añadir imágenes"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Todos los archivos"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG y JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Propiedades imagen %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Tipo de imagen"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Descripción de la imagen:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Guardar imagen %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"El siguiente archivo ya existe:\n"
+"«%s»\n"
+"¿Quiere sobreescribirlo?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Guardar archivo..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "imagen JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "imagen PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Imagen desconocida"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "icono archivo PNG de 32x32 píxeles."
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Otro icono de fichero"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Carátula (frontal)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Carátula (trasera)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Página del folleto"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Soporte (ej. lateral de la etiqueta del CD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Artista líder/intérprete líder/solista"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Artista/intérprete"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Director"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Banda/Orquesta"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Letrista/escritor"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Lugar de grabación"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Durante la grabación"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Durante la actuación"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Película/captura de vídeo"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Un pescado brillante coloreado"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Ilustración"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Banda/Logotipo de artista"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Editor/Logotipo del estudio"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Tipo de imagen desconocido"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "píxeles"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Tipo"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Descripción"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"No se puede mostrar la imagen, debido a que no se han leído suficientes "
+"datos para determinar cómo crear el búfer de la imagen."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Cargando archivo de imagen..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"No se puede abrir el archivo:\n"
+"«%s»\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Archivo de imagen no cargado..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Preferencias..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Examinador de archivos"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Ir al directorio predeterminado"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Especifique el directorio donde se encuentran los archivos. Esta ruta se "
+"leerá al ejecutar EasyTAG sin parámetros."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Buscar archivos automáticamente, cuando EasyTAG empieza, en el siguiente "
+"directorio. Sepa que este directorio puede ser obviado por el parámetro "
+"pasado a easytag (easytag /ruta_a/archivos_mp3)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Buscar en subdirectorios"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "Buscar archivos en subdirectorio al leer un directorio en el árbol."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Mostrar subdirectorios al seleccionar un directorio"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Esto expande el nodo seleccionado en el examinador de archivos para mostrar "
+"los subdirectorios."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Buscar en directorios ocultos"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+"Buscar ficheros en directorios ocultos (directorios empezando por un «.»)."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Interfaz de usuario"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Mostrar la información de cabecera de los archivos"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Si está seleccionado, la información sobre un archivo como la tasa de bits, "
+"la duración, el tamaño, será mostrado bajo la entrada de nombre de archivo."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Mostrar los archivos modificados en una lista usando:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Color rojo"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Estilo negrita"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Opciones de ordenación de listas"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Ordenar la lista de archivos por :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Ascendente por nombre de archivo"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Descendente por nombre de archivo"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Ascendente por número de pista"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Descendente por número de pista"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Ascendente por fecha de creación"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Descendente por fecha de creación"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Ascendente por título"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Descendente por título"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Ascendente por artista"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Descendente por artista"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Ascendente por álbum"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Descendente por álbum"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Ascendente por año"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Descendente por año"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Ascendente por género"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Descendente por género"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Ascendente por comentario"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Descendente por comentario"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Seleccionar el tipo de ordenación de archivos al leer un directorio."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+"Si esta seleccionado, la ordenación de la lista será dependiente de la "
+"capitalización."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Posición del diálogo de mensajes"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Ninguna posición particular"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Dejar al gestor de ventanas elegir la posición de la ventana"
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "Centro de la ventana principal"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Las ventanas deberían colocarse en el centro de la ventana principal."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Centro de la pantalla"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "La ventana debe ser colocada en el centro de la pantalla."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Posición del puntero del ratón"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "La ventana debe ser colocada en la posición del puntero del ratón."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Reproductor de archivos de audio"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Reproductor a ejecutar :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Introduce el programa a usar para reproducir los archivos. Se pueden pasar "
+"algunos argumentos al programa ( como en 'xmms -p') antes de recibir los "
+"archivos como argumentos."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Configuración de archivo"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Opciones de archivo"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+"Reemplazar caracteres ilegales en nombres de archivo (para Windows y CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Convertir caracteres ilegales para sistemas de archivos FAT32/16 e ISO9660 + "
+"Joliet («\\», «:», «*», «?», «\"», '<', '>', «|») del nombre de archivo para "
+"evitar problemas al renombrar los archivos. Esto es útil al renombrar los "
+"archivos desde la etiqueta con el procesador."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Convertir la extensión a:"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Minúsculas"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Por ejemplo, la extensión será convertida a '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Mayúsculas"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Por ejemplo, la extensión será convertida a '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Sin cambios"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "La extensión no será convertida"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Preservar el tiempo de modificación del archivo"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Preservar el tiempo de modificación (en las propiedades del archivo) al "
+"guardar el archivo."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Conjunto de caracteres para el nombre del archivo"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Reglas para aplicar si algunos caracteres no pueden convertirse a la "
+"codificación de caracteres del sistema al escribir el nombre del archivo:"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Intentar otra codificación de caracteres"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Con esta opción, se intentará la conversión a la codificación asociada a su "
+"configuración regional (por ejemplo : ISO-8859-1 para 'fr', KOI8-R para "
+"'ru', ISO8859-2 para 'ro'). Si falla, intentará con la codificación de "
+"caracteres ISO-8859-1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+"Forzar el uso de la codificación de caracteres del sistema y activar la "
+"transliteración"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Con esta opción, cuando un carácter no pueda representarse en el conjunto de "
+"caracteres destino, puede ser aproximado a través de caracteres de "
+"apariencia similar."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"Forzar el uso de la codificación de caracteres del sistema y descartar "
+"silenciosamente algunos caracteres"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Con esta opción, cuando un carácter no pueda ser representado en el conjunto "
+"de caracteres destino, será descartado silenciosamente."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Configuración de etiquetas"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Opciones de etiquetas"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Autocompletado de la fecha si no está completa"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Intentar completar el campo de año si se introduce sólo los últimos "
+"numerales de la fecha (por ejemplo, si el año actual es 2005: 5 => 2005, 4 "
+"=> 2004, 6 => 1996, 95 => 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Escribir el campo de pista con el siguiente número de dígitos:"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Si esta seleccionado, el campo de pista se escribirá usando el número de «0» "
+"especificados como relleno (Ej: con dos dígitos: «05», «09», «10». En caso "
+"contrario se conserva el valor «en bruto» de la pista."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Archivos Ogg Vorbis: escribir también el comentario al formato XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS no usa una forma correcta para identificar un comentario en archivos "
+"Ogg Vorbis como hacen otras aplicaciones. De hecho, este campo se etiqueta "
+"como «comment=», donde XMMS usa simplemente «=». Por favor, no seleccione "
+"esta opción si quiere que otras aplicaciones no se vean afectadas por un "
+"campo desconocido. Sin embargo, los comentarios no se mostraran en XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"Enfocar el campo de la etiqueta al cambiar de archivo en la lista con las "
+"teclas AvPág/RePág:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Mantener el foco en el mismo campo de la etiqueta"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Devolver el foco al primer campo de la etiqueta (o sea, «Título»)"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "Configuración de etiquetas ID3"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Reglas para etiquetas ID3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Escribir etiquetas ID3 en archivos FLAC con etiqueta FLAC"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Si está activado, se añadirán etiquetas ID3 al archivo FLAC (de acuerdo con "
+"las dos reglas anteriores, más la etiqueta FLAC). De otra manera, será "
+"suprimida la ID3."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Quitar etiquetas si todos los campos están en blanco"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Como las etiquetas ID3v2 pueden contener otros datos además del Título, "
+"Artista, Ãlbum, Género o Comentarios (como fotos asociadas, letras, ...), "
+"esta opción permite borrar la etiqueta entera cuando estos siete campos de "
+"datos estándar estén en blanco."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Convertir automáticamente versiones antiguas de ID3v2"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Si está seleccionado, una etiqueta de versión ID3v2 (como ID3v2.2) será "
+"actualizada a una de la versión ID3v2.3."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Escribir etiquetas ID3v2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Conjunto de caracteres para las etiquetas ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Escribir etiquetas ID3v2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Escribir etiquetas ID3v2"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Si está seleccionada, una etiqueta ID3v2 sera añadida o actualizada al "
+"principio de los archivos MP3. De otra manera será suprimida."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Descripción:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Codificado por"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr ""
+"Conjunto de caracteres usado para escribir datos de las etiquetas en el "
+"archivo."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " No "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "Etiqueta ID3"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Escribir etiquetas ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Si está seleccionado, una etiqueta ID3v1 será añadida o actualizada al final "
+"de los archivos MP3. De otra manera, será suprimida."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr ""
+"Conjunto de caracteres usado para escribir datos de las etiquetas en el "
+"archivo."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Conjunto de caracteres para las etiquetas ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Se usará este conjunto de caracteres cuando se lea los datos de la etiqueta, "
+"para convertir cada cadena encontrada en un campo ISO-8859-1 en la etiqueta "
+"(para ID3v2 y/o ID3v1).\n"
+"Por ejemplo:\n"
+" - en versiones anteriores de EasyTAG, podía guardar cadenas UTF-8 en un "
+"campo ISO-8859-1. Esto no es correcto. para convertir estas etiquetas a "
+"Unicode: Active esta opción y seleccione UTF-8. Debe además activar arriba "
+"la opción «Intentar guardar etiquetas en ISO-8859-1. Si no es posible "
+"entonces use UNICODE (recomendado)» o «Siempre guardar las etiquetas en el "
+"conjunto de caracteres UNICODE»\n"
+" - Si no se usó unicode, la gente de Rusia puede seleccionar el conjunto de "
+"caracteres Windows-1251 para cargar las etiquetas escritas bajo Windows, y "
+"KOI8-R para cargar las etiquetas escritas bajo sistemas Unix."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr ""
+"Conjunto de caracteres usado para leer los datos de las etiquetas en el "
+"archivo."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Procesador"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Procesador de etiquetas - Conversión de caracteres"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Convertir caracteres de subrayado «_» y la cadena «%20» a espacios « »"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Convertir espacios « » a subrayados «_»"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Si está seleccionado, la conversión se llevará a cabo cuando se aplique una "
+"máscara desde el procesador para etiquetas."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Renombrado de archivos - Conversión de caracteres"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Si esta seleccionado, la conversión se llevará a cabo cuando se aplica una "
+"máscara."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Procesador de campos - Conversión de caracteres"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+"No poner en mayúscula la primera letra de algunas palabras que sean "
+"preposiciones y artículos."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"No convertir la primera letra de palabras como preposiciones, artículos y "
+"palabras como feat., cuando se use el Procesador 'Primera letra de cada "
+"palabra mayúscula' (por ejemplo obtendrá 'Texto en una Entrada' en lugar de "
+"'Texto En Una Entrada')."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Ventana del procesador"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Abrir la ventana del procesador al arrancar."
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Seleccione esta opción para abrir automáticamente la ventana del procesador "
+"cuando EasyTAG comience."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Ventana del procesador siempre encima"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Si está seleccionado, la ventana que contiene las máscaras se situará "
+"siempre sobre la ventana principal."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Campos"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Sobreescribir campos al procesar etiquetas"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Si está seleccionado, el procesador reemplazará el texto existente en los "
+"campos por los nuevos. Si está deseleccionado, sólo los campos en blanco de "
+"las etiquetas serán completadas."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Establecer este texto como comentario predeterminado :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Active esta opción si quiere poner la siguiente cadena en el campo de "
+"comentario al usar el procesador «Rellenar etiqueta»."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+"Usar CRC32 como comentario predeterminado (sólo para archivos con ID3)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Seleccione esta opción para escribir el valor CRC-32 del archivo en el campo "
+"de comentario usando «Rellenar etiqueta» del procesador."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "Base de datos de CD"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+#, fuzzy
+msgid "Server Settings for Automatic Search"
+msgstr "Búsqueda automática"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Nombre :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Puerto :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "Ruta a CGI :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "Opciones del servidor"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "Base de datos de CD"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "Ruta a CGI :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Configuración de proxy"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Usar un proxy"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Activar la configuración del servidor proxy."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Anfitrión:"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Nombre del servidor proxy."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Puerto del servidor proxy."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Usuario:"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Nombre de usuario en el servidor proxy."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Contraseña :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Contraseña en el servidor proxy."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Lista de nombre de pista"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"Seleccionar el archivo de sonido correspondiente (de acuerdo con posición o "
+"DLM si estuviese activado abajo)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Si está activado, cuando se seleccione una línea en la lista de nombres de "
+"pista, el archivo de sonido correspondiente en la lista principal se "
+"seleccionará también."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Usar el algoritmo de Levenshtein (DLM) para coincidir las líneas (usando el "
+"título) con los archivos de sonido (usando el nombre del archivo)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Confirmar"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Confirmar la salida del programa"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Si está seleccionado, muestra una cuadro de diálogo para confirmar si se "
+"desea salir del programa."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Confirmar la escritura de la etiqueta de archivos"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Confirmar el renombrado de archivos"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Confirmar el borrado de archivos"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Confirmar la escritura de la lista de reproducción"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Aplicar cambios (pero no guardar) y cerrar esta ventana"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Cerrar esta ventana sin guardar"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Guardar cambios y cerrar esta ventana"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Ejemplo : %.*d_-_Pista_nombre_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Cambios aplicados"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Configuración guardada"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Configuración sin cambios"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" ¡La ruta seleccionada para 'Ruta predeterminada de archivos' no es válida!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "No es un directorio"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "El reproductor del archivo de sonido «%s» no se puede encontrar"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Rellenar etiqueta"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Renombrar archivo y directorio"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Procesar campos"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Se procesaron con éxito las etiquetas..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Se procesaron con éxito las etiquetas...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Error al procesar: no se puede encontrar el separador «%s» entre «%s»"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "No se puede convertir el nombre «%s» a la codificación del sistema."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Nuevo nombre de archivo procesado con éxito..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Nuevo nombre de archivo procesado con éxito...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Procesar etiqueta y nombre de archivo"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Procesador :"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Elegir el tipo de procesador a usar"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Abrir ventana del procesador / Procesar archivos seleccionados"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Opciones del procesador"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Mostrar / Ocultar editor de máscaras"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Mostrar / Ocultar leyenda"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Cerrar esta ventana"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Elegir o introducir una máscara usando códigos (ver leyenda) para analizar "
+"el nombre de archivo y la ruta. Se usa para completar campos en las "
+"etiquetas."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Vista previa del relleno de la etiqueta..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Máscara del prefijo con la ruta actual"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Seleccione o teclee una máscara usando códigos (ver leyenda) para parsear "
+"los campos de las etiquetas. Usado para renombrar archivos.\n"
+"Use / para hacer directorios. Si el primer carácter es /, es una ruta "
+"absoluta, en otro caso, es relativa a la ruta anterior."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Previsualizar el renombrado de archivo..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Elegir campos:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Los botones de la derecha representan los campos que pueden ser procesados. "
+"Elija aquellos que le interesen."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Procesar el campo de nombre de archivo"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Procesar el campo de título"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Procesar el campo de artista"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Procesar el campo de álbum"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Procesar el campo de género"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Procesar el campo de comentario"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Procesar el campo del compositor"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Procesar el campo de artista original"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Procesar el campo de copyright"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Procesar el campo de URL"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Procesar el campo de codificador"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Invertir la selección"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Seleccionar/Deseleccionar todo."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Convertir '_' y '%20' a ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Convertir :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "a : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"El carácter de subrayado o la cadena '%20' son reemplazados por un espacio. "
+"Ejemplo, antes: 'Texto%20En%20Una_Entrada', después: 'Texto En Una Entrada'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"El carácter de espacio es reemplazado por un carácter de subrayado. Ejemplo, "
+"antes: 'Texto En Una Entrada', después: 'Texto_En_Una_Entrada'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Reemplazar un carácter por otro."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Convertir todas las palabras en todos los campos a mayúsculas. Ejemplo, "
+"antes: 'Texto EN UNA entrada', después: 'TEXTO EN UNA ENTRADA'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Convertir todas las palabras de todos los campos a minúsculas. Ejemplo, "
+"antes: 'TEXTO EN una entrada', después: 'texto en una entrada'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Convertir la inicial de la primera palabra en todos los campos a mayúsculas. "
+"Ejemplo, antes: 'texto EN Una ENTRADA', después: 'Texto en una entrada'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Convertir la inicial de cada palabra en todos los campos a mayúsculas. "
+"Ejemplo, antes: 'Texto en una ENTRADA', después: 'Texto En Una Entrada'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Insertar un espacio antes de una letra mayúscula"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Borrar espacios o subrayados duplicados"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Todos los espacios entre palabras son borrados. Ejemplo, antes: 'Texto En "
+"Una Entrada', después: 'TextoEnUnaEntrada'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Se inserta un espacio antes de cada letra mayúscula. Ejemplo, antes: "
+"'TextoEnUnaEntrada', después: 'Texto En Una Entrada'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Espacios o subrayados duplicados son borrados. Ejemplo, antes: "
+"'Texto__En__Una Entrada', después: 'Texto_En_Una Entrada'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Leyenda"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : artista"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : álbum"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : comentario"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : compositor"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r: copyright"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : número de disco"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : codificado por"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : género"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ignorado"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : número de pistas"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : artista orig."
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : pista"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : título"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u: URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : año"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Editor de máscaras"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Crear nueva máscara"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Subir esta máscara"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Bajar esta máscara"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Duplicar máscara"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Añadir máscara predeterminada"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Borrar máscara"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Guardar máscaras"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Nueva_máscara"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Copiar: ¡ninguna fila seleccionada!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Borrar: ¡ninguna fila seleccionada!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Subir: ¡ninguna fila seleccionada!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Bajar: ¡ninguna fila seleccionada!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr ""
+"ERROR: No se puede escribir el archivo de configuración: %s (%s)\n"
+""
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "No se puede abrir el archivo de configuración «%s» (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Cargando la configuración predeterminada..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "No se puede crear o abrir el archivo «%s» (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+"ERROR: No se puede escribir la lista al archivo: %s (%s)\n"
+""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Cargando máscaras de «Rellenar etiqueta» predefinidas..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Cargando máscaras de 'Renombrar archivo' predefinidas..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Cargar las máscaras de 'Renombrar directorio' predefinidas..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"ERROR: ¡La variable de entorno HOME no está definida!\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "ERROR: ¡No se puede crear el directorio «%s» (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Entrada interrumpida o vacía."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "La entrada no es una trama de bits de Ogg"
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Error leyendo la primera página de la trama de bits Ogg"
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Error leyendo el paquete inicial de la cabecera."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "La trama de bits Ogg no contiene datos vorbis."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Cabecera secundaria errónea."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF antes del final de la cabecera vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Datos erróneos o perdidos, continuando..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Error escribiendo la trama a la salida. Los datos de salida pueden ser "
+"erróneos."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "Ejecutar reproductor de audio"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Versión de etiqueta inválida"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Usar relleno"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Usar relleno en las etiquetas ID3v2 para escribir más rápido los "
+#~ "siguientes cambios en la etiqueta."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr ""
+#~ "Guardar las etiquetas siempre en el conjunto de caracteres ISO-8859-1"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Usar el conjunto de caracteres ISO-8859-1 (conjunto de caracteres de un "
+#~ "solo byte) para escribir la etiqueta. Este conjunto de caracteres puede "
+#~ "usarse para las etiquetas ID3v2 y las etiquetas ID3v1, pero note que los "
+#~ "caracteres que no sean ISO-8859-1 se perderán.\n"
+#~ "\n"
+#~ "Si se selecciona un conjunto de caracteres diferente con «Uso de un "
+#~ "conjunto de caracteres no estándar para escribir etiquetas ID3», se usará "
+#~ "en lugar de ISO-8859-1.\n"
+#~ " También pueden definirse algunas reglas si algunos caracteres no se "
+#~ "pueden convertir."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Intentar guardar las etiquetas en ISO-8859-1. Si no es posible, entonces "
+#~ "usar UNICODE (recomendado)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "El conjunto de caracteres UNICODE se usará si la conversión a ISO-8859-1 "
+#~ "falla. Unicode puede usarse para ID3v2 pero no para etiquetas ID3v1 que "
+#~ "sólo usan un conjunto de caracteres de un solo byte. (por omisión ISO-"
+#~ "8859-1).\n"
+#~ "\n"
+#~ "Si se selecciona un conjunto de caracteres diferente con «Usar un "
+#~ "conjunto de caracteres no estándar para escribir etiquetas ID3, se usará "
+#~ "en lugar de ISO-8859-1.\n"
+#~ "Además algunas reglas pueden definirse si algunos caracteres no pueden "
+#~ "ser convertidos."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Guardar siempre las etiquetas en el conjunto de caracteres UNICODE"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Usa el conjunto de caracteres UNICODE para las etiquetas ID3v2. Las "
+#~ "etiquetas ID3v1 siempre se guardan con un conjunto de caracteres de un "
+#~ "solo byte (por omisión ISO-8859-1).\n"
+#~ "\n"
+#~ "Si se selecciona un conjunto de caracteres diferente con «Usar un "
+#~ "conjunto de caracteres no estándar para escribir las etiquetas ID3», se "
+#~ "usará ése en lugar de ISO-8859-1."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "Para los campos ISO-8859-1, tomar preferencia con las siguientes "
+#~ "codificaciones (para usuarios expertos sólo):"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "Usar un conjunto de caracteres no estándar para leer etiquetas ID3:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr ""
+#~ "Usar un conjunto de caracteres no estándar para escribir las etiquetas "
+#~ "ID3:"
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Este conjunto de caracteres será usado al escribir los datos de la "
+#~ "etiqueta, para convertir cada cadena guardada en un campo ISO-8859-1 en "
+#~ "la etiqueta (para ID3v2 y/o ID3v1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "Para los campos ISO-8859-1, aplicar también estas reglas si algunos "
+#~ "caracteres no se pueden convertir al escribir las etiquetas:"
+
+#~ msgid "Do nothing"
+#~ msgstr "No hacer nada"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr ""
+#~ "Forzar el uso de la codificación de caracteres y activar la "
+#~ "transliteración"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr ""
+#~ "Forzar el uso de la codificación de caracteres y descartar algunos "
+#~ "caracteres"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "¡La traducción del conjunto de caracteres de «%s»\n"
+#~ "a «%s» no está soportada!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "ERROR al abrir archivo: «%s» (%s).\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Leer el directorio al inicio"
+
+#~ msgid "#:"
+#~ msgstr "#:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "Establecer fondo amarillo para las sugerencias de ayuda"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "Si está seleccionado, el fondo de las sugerencias de ayuda será de color "
+#~ "amarillo, evitando la información del gestor de ventanas."
+
+#~ msgid "Save _Configuration Now"
+#~ msgstr "_Guardar preferencias ahora"
+
+#~ msgid "Save Configuration Now"
+#~ msgstr "Guardar preferencias ahora"
+
+#~ msgid "Set main window size"
+#~ msgstr "Establecer el tamaño de la ventana principal"
+
+#~ msgid "Width :"
+#~ msgstr "Ancho :"
+
+#~ msgid "Height :"
+#~ msgstr "Alto :"
+
+#~ msgid " Get current size "
+#~ msgstr "Obtener el tamaño actual "
+
+#~ msgid ""
+#~ "Specify the default size for the main window. You must restart the "
+#~ "program to apply the new size. For your display, the max values are: "
+#~ "width=%d and height=%d."
+#~ msgstr ""
+#~ "Permite especificar el tamaño predeterminado de la ventana principal. Es "
+#~ "necesario reiniciar el programa para que se aplique el tamaño nuevo. Para "
+#~ "su pantalla, los valores máximos son: ancho=%d y alto=%d."
+
+#~ msgid "Width: set -1 for automatic size"
+#~ msgstr "Ancho: establecer a -1 para tamaño automático"
+
+#~ msgid "Heigth: set -1 for automatic size"
+#~ msgstr "Alto: establecer a -1 para tamaño automático"
+
+#~ msgid "Set vertical right pane handle position"
+#~ msgstr "Establecer la posición vertical del panel derecho"
+
+#~ msgid "Position :"
+#~ msgstr "Posición :"
+
+#~ msgid " Get current position "
+#~ msgstr "Obtener la posición actual "
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser frame and the tag frame. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Especifica la posición predeterminada para el panel situado entre el "
+#~ "marco de navegación y el marco de etiquetas. Los cambios se aplicarán en "
+#~ "el próximo inicio."
+
+#~ msgid "Position: set -1 for automatic positioning"
+#~ msgstr "Posición: establecer a -1 para un posicionamiento automático"
+
+#~ msgid "Set vertical left pane handle position"
+#~ msgstr "Establecer la posición vertical del panel izquierdo"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser tree and the list of files. Changes will be applied the next "
+#~ "start."
+#~ msgstr ""
+#~ "Especifica la posición predeterminada para el panel situado entre el "
+#~ "árbol de navegación y la lista de archivos. Los cambios serán aplicados "
+#~ "en el próximo inicio."
+
+#~ msgid "Set horizontal pane handle position"
+#~ msgstr "Establecer la posición horizontal del panel"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "artist list and album list. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Especifica la posición predeterminada para el panel localizado entre la "
+#~ "lista del artista y la lista del álbum. Los cambios serán aplicados "
+#~ "reiniciando el programa."
+
+#~ msgid "Set new style for displaying list items"
+#~ msgstr "Configurar nuevo estilo para mostrar elementos de la lista"
+
+#~ msgid ""
+#~ "If activated, items in list will be styled black and bold instead of red "
+#~ "and gray (example : for changed and not saved files)."
+#~ msgstr ""
+#~ "Si está activado, los objetos de la lista estarán en negrilla en lugar de "
+#~ "rojo y gris (ejemplo: para archivos modificados no guardados)."
+
+#~ msgid ""
+#~ "If activated, when switching files with the previous/next button (or "
+#~ "shortcut), it will return the focus to the first field ('Title') of the "
+#~ "tag area, instead of keeping the focus on the same field."
+#~ msgstr ""
+#~ "Si esta activado, entonces al cambiar los archivos con el botón anterior/"
+#~ "siguiente (o la combinación de teclas), se devolverá el foco al primer "
+#~ "campo («Título») del área de etiquetas, en lugar de mantener el foco en "
+#~ "el mismo campo."
+
+#~ msgid "Set scanner window position"
+#~ msgstr "Establecer la posición de la ventana del procesador"
+
+#~ msgid ""
+#~ "If activated, the scanner window will appear at the specified coordinates "
+#~ "relative to the main window. Use it if you want to keep the same position "
+#~ "of the scanner window each times you open it. If deactivated, the window "
+#~ "manager determines the position."
+#~ msgstr ""
+#~ "Si está seleccionado, la ventana del procesador aparecerá en las "
+#~ "coordenadas especificadas relativas a la ventana principal. Use ésto si "
+#~ "quiere mantener la misma posición de la ventana del procesador cada vez "
+#~ "que se abre. Si está deseleccionado, el gestor de ventanas determina la "
+#~ "posición."
+
+#~ msgid "X :"
+#~ msgstr "X :"
+
+#~ msgid "Y :"
+#~ msgstr "Y :"
+
+#~ msgid "CD Data Base Window"
+#~ msgstr "Ventana CDDB"
+
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "Establecer el tamaño de la ventana CDDB"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "Especificar el tamaño predeterminado para la ventana CDDB."
+
+#~ msgid "Set pane handle position"
+#~ msgstr "Establecer la posición del separador del panel"
+
+#~ msgid "Specify the default position for the pane handle in the CDDB window."
+#~ msgstr ""
+#~ "Especificar la posición predeterminada del separador del panel en la "
+#~ "ventana de CDDB"
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "Guardar la configuración antes de salir del programa"
+
+#~ msgid ""
+#~ "If activated, the configuration will be automatically saved before "
+#~ "exiting the program."
+#~ msgstr ""
+#~ "Si está seleccionado, la configuración será guardada automáticamente "
+#~ "antes de salir del programa."
+
+#~ msgid " Window height (%d) is bigger than screen height (%d)! "
+#~ msgstr ""
+#~ " ¡El alto de la ventana (%d) es mayor que el alto de la pantalla (%d)! "
+
+#~ msgid "Size Error..."
+#~ msgstr "Error de tamaño..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr ""
+#~ " ¡El ancho de la ventana (%d) es mayor que el ancho de la pantalla (%d)! "
+
+#~ msgid "The scanner window must be open to get its current position!"
+#~ msgstr ""
+#~ "¡La ventana del procesador debe estar abierta para obtener su posición!"
+
+#~ msgid "The CDDB window must be open to get its current position!"
+#~ msgstr "¡La ventana de CDDB debe estar abierta para obtener su posición!"
diff --git a/po/fr.gmo b/po/fr.gmo
new file mode 100644
index 0000000..6c528f8
--- /dev/null
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..37b77ad
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,5029 @@
+# French catalog for EasyTAG.
+# Copyright (C) 2000-2007 Free Software Foundation, Inc.
+# Jérôme Couderc <j.couderc@ifrance.com>, 2000, 2001, 2002, 2004, 2005.
+# Jérôme Couderc <easytag@gmail.com>, 2005, 2006, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 2.1.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2007-06-24 20:41+0100\n"
+"Last-Translator: Jerome Couderc <easytag@gmail.com>Language-Team: French "
+"<fr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n>1;\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG est un utilitaire pour visualiser et éditer les tags des "
+"fichiers MP3, MP2, FLAC, Ogg Vorbis, MP4/AAC, MusePack et Monkey's Audio. "
+"Son interface GTK+ simple et agréable rend le marquage plus simple sous GNU/"
+"Linux."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(traduction Allemande)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(traduction Russe)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(traduction Hollandaise)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(traduction Suédoise)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(traduction Hongroise)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(traduction Italienne)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(traduction Japonaise)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(traduction Ukrainienne)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(traduction Tchèque)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(traduction Espagnole)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(traduction Polonaise)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(traduction Roumaine)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(traduction Danoise)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(traduction Grecque)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(traduction Portugais Brésilien)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(traduction Bulgare)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(traduction Chinoise)"
+
+#: src/about.c:161
+msgid "(Hebrew translation)"
+msgstr "(traduction Hébraïque)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "A Propos..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "A Propos"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(compilé le: %s)"
+
+#: src/about.c:276
+#, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(utilisé: GTK+ %d.%d.%d)"
+
+#: src/about.c:283
+#, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(Support des fichiers MP3 activé en utilisant : libid3tag %s)"
+
+#: src/about.c:287
+#, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(Support des tags ID3v2.3 activé en utilisant : id3lib %d.%d.%d)"
+
+#: src/about.c:292
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(Support des tags ID3v2.3 désactivé)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(Support des fichiers MP3 désactivé)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Support des fichiers Ogg Vorbis désactivé)"
+
+#: src/about.c:307
+msgid "(Speep file support disabled)"
+msgstr "(Support des fichiers Speex désactivé)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(Support des fichiers FLAC désactivé)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(Support des fichiers MP4/AAC désactivé)"
+
+#: src/about.c:322
+msgid "(WavPack file support disabled)"
+msgstr "(Support des fichiers WavPack désactivé)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Auteur : %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail : %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Page Web : "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Description :"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Remerciements"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Traductions :\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Général :\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Historique"
+
+#: src/about.c:454
+#, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Impossible d'ouvrir le fichier '%s' (%s)\n"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "ERREUR lors de l'ouverture du fichier: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Fichier"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Classer liste par tag"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Classer liste par propriétés"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Ordre croissant des noms de fichiers"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Ordre décroissant des noms de fichiers"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Ordre croissant des dates de création"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Ordre décroissant des dates de création"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Ordre croissant des pistes"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Ordre décroissant des pistes"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Ordre croissant des titres"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Ordre décroissant des titres"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Ordre croissant des artistes"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Ordre décroissant des artistes"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Ordre croissant des albums"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Ordre décroissant des albums"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Ordre croissant des années"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Ordre décroissant des années"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Ordre croissant des genres"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Ordre décroissant des genres"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Ordre croissant des commentaires"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Ordre décroissant des commentaires"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Ordre croissant des compositeurs"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Ordre décroissant des compositeurs"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Ordre croissant des artistes originaux"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Ordre décroissant des artistes originaux"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Ordre croissant des copyrights"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Ordre décroissant des copyrights"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Ordre croissant des URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Ordre décroissant des URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Ordre croissant des noms d'encodeur"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Ordre décroissant des noms d'encodeur"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Ordre croissant des types de fichiers"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Ordre décroissant des types de fichiers"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Ordre croissant de taille des fichiers"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Ordre décroissant de taille des fichiers"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Ordre croissant des durées"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Ordre décroissant des durées"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Ordre croissant des débits"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Ordre décroissant des débits"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Ordre croissant des fréquences"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Ordre décroissant des fréquences"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Ouvrir le(s) Fichier(s) avec ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Sélectionner tous les Fichiers"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Désélectionner tous les Fichiers"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Inverser la Sélection des Fichiers"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Effacer le(s) Fichier(s) ..."
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "Premier _Fichier"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Premier Fichier"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "Fichier _Précédent"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Fichier Précédent"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "Fichier Suivant"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Fichier Suivant"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "Dernier Fichier"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Dernier Fichier"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "S_canner le(s) Fichier(s)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Scanner le(s) Fichier(s)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "Effacer le(s) Tag(s)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Effacer le(s) Tag(s)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "Ann_uler Modifs des Fichier(s)"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Annuler Modifs des Fichier(s)"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "R_efaire Modifs des Fichier(s)"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Refaire Modifs des Fichier(s)"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Sauver le(s) Fichier(s)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Sauver le(s) Fichier(s)"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "_Forcer la Sauvegarde de(s) Fichier(s)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Forcer la Sauvegarde de(s) Fichier(s)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Annuler les Derniers Changements"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Refaire les Derniers Changements"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Quitter"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Quitter"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "Sélec_teur"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Aller dans le Répertoire Personnel"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Aller dans le Répertoire Personnel"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Aller dans le Répertoire par _Défaut"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Aller dans le Répertoire par Défaut"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Mettre le Chemin _Courant par Défaut"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Mettre le Chemin Courant par Défaut"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Arborescence | Vue par Artiste-Album"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Renommer le Répertoire ..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Recharger le Répertoire"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Parcourir le Répertoire avec ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "Refermer l'Arbre"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Rafraîchir l'Arbre"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "S_canner"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Compléter le(s) Tag(s) ..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Compléter le(s) Tag(s) ..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Renommer le(s) Fichier(s) et Répertoire(s) ..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Renommer le(s) Fichier(s) et Répertoire(s) ..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Traiter les Champs ..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Traiter les Champs ..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Divers"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Rechercher le(s) _fichier(s) ..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Rechercher le(s) fichier(s) ..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "Recherche CDD_B ..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "Recherche CDDB ..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Charger les Noms des fichiers à partir d'un TXT ..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Ecrire Liste de Lecture ..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Lancer Lecteur Audio"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "Paramètre_s"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Préférences ..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Préférences ..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Aide"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_A Propos"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Arrêter l'action courante"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "Opérations sur _Fichier"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Rechercher le(s) fichier(s) avec CDDB..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr "Effacer le journal"
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Parcourir les _Sous-répertoires"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Afficher les répertoires cachés"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Afficher l'arborescence / Afficher par Album et Artiste"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Impossible de fusionner l'UI, erreur: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Prêt à  démarrer"
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Un nouveau chemin par défaut a été sélectionné"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Confirmer..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Des fichiers ont été modifiés mais pas sauvés...\n"
+"Voulez-vous les sauver avant de changer de répertoire?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Le chemin donné est incorrect!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Erreur..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<Tous les albums>"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr ""
+"Erreur: Recherche de %s, impossible de trouver le noeud %s dans l'arbre."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Artiste"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Albums"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Fichiers"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Aller dans le Répertoire Parent"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Entrer un répertoire à parcourir."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Arborescence"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Artiste & Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Renommer le Répertoire"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Renommer le répertoire '%s' en :"
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Utiliser le masque :"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "Si activé, les masques seront utilisés pour renommer le répertoire."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Sélectionner ou taper un masque en utilisant les codes (voir la légende dans "
+"la fenêtre du scanner) pour renommer le répertoire d'après les champs du tag."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Masque de Scanner Invalide"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Apercu du renommeur de répertoires..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Vous devez saisir un nom de répertoire!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Impossible de convertir '%s' vers l'encodage du fichier. Utilisez un autre "
+"nom."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Impossible de renommer car ce répertoire existe déjà !\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Impossible de renommer le répertoire \n"
+"'%s'\n"
+" par: \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Répertoire renommé"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Programme à  lancer :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Entrez le programme à lancer. Il recevra en paramètre le répertoire courant."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Ouvrir le Fichier avec ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Entrez le programme à lancer. Il recevra en paramètre le fichier courant."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Vous devez saisir un nom de programme!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Le programme '%s' n'a pas été trouvé!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Impossible d'exécuter %s (erreur %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Ne peut lancer un processus fils!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Commande exécutée : '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Artiste / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Catégorie"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Nom de Piste"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Durée"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "Recherche Base de Données CD"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Recherche Automatique"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "Interroger la base de CD :"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Interroger automatiquement la base CDDB à partir des fichiers sélectionnés "
+"pour générer le CddbID (l'ordre des fichiers est important!)"
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Arrêter la recherche ..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr "Utiliser Cddb local"
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"En activant cette option, après le chargement des champs, le scanner courant "
+"sera exécuté (la fenêtre des scanners doit être ouverte)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr " Recherche Manuelle"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Mots :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Entrez les mots à rechercher (séparés par un espace ou un '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Rechercher dans :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Tous les Champs"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Autres"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Toutes les Catégories"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Classique"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Divers"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Soundtrack"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "inclus : funk, soul, rap, pop, industrial, metal, etc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "films, shows"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "tous ceux qui ne correspondent pas aux autres catégories"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " Catégories "
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Résultats :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Rechercher :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Entrez les mots à rechercher dans la liste du dessous"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr " Rechercher le suivant"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Rechercher le précédent"
+
+#: src/cddb.c:571
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr ""
+"Afficher seulement les lignes rouges (ou afficher toutes les lignes) dans la "
+"liste 'Artiste / Album'"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Désélectionner toutes les lignes"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Inverser la sélection des lignes"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Sélectionner toutes les lignes"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Sélectionner les lignes à 'appliquer' dans la liste des fichiers. Note : "
+"toutes les lignes seront traitées si aucune n'est sélectionnée.\n"
+"Vous pouvez aussi réorganiser les lignes de cette liste avant d'utiliser le "
+"bouton 'Appliquer'."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Mettre dans :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Tous"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Nom de Fichier"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Titre"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Année"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "N° Piste"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "Nbr Pistes"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Genre"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Exécuter le scanner courant pour chaque fichier"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr "Correspondance des lignes avec DLM"
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"En activant cette option, l'algorithme Levenshtein (DLM : Damerau-"
+"Levenshtein Metric) sera utilisé pour identifier la meilleure correspondance "
+"entre les titres CDDB et les noms de fichier du répertoire courant. Cela "
+"sera utilisé pour sélectionner le fichier audio correspondant, ou lors du "
+"chargement des résultats CDDB au lieu de se baser sur la position."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr ""
+"Charger les lignes sélectionnées ou toutes les lignes (si aucune n'est "
+"sélectionnée)"
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Prêt à chercher..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album: '%s', artiste: '%s', durée: '%s', année: '%s', genre: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Inverser la sélection"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Classer par Numéro de Piste"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Classer par Nom de Piste"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Obtention de l'hôte '%s' ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Impossible d'obtenir l'hôte '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "ERREUR: Impossible de créer un nouveau socket (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Connexion en cours sur l'hôte '%s' (port '%d') ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Impossible de se connecter sur l'hôte '%s' (%s)"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Connecté sur l'hôte '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Réception des données (%s) ..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Erreur lors de la lecture de la réponse cddb (%s)!"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Impossible de créer le fichier '%s' (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Impossible d'ouvrir le fichier '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Envoi de la requête ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Impossible d'envoyer la requête (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Réception des données ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "Le serveur a retourné une mauvaise réponse!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Le serveur a retourné une mauvaise réponse! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Désolé, mais la recherche web est désactivée pour l'instant"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Trouvé(s) %d album(s) correspondant(s)"
+
+#: src/cddb.c:2568
+#, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Réception des données de la page %d (album %d/%d)..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Réception des données de la page %d ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "D'autres résultats à charger ..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Aucun fichier sélectionné!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr "Plus de 99 fichiers sélectionnés! Impossible d'envoyer la requête!"
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d fichier(s) sélectionné(s)!"
+
+#: src/cddb.c:2945
+msgid "Local CD search..."
+msgstr "Recherche CD locale ..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+"Le répertoire pour la 'Base de CD locale' n'a pas été définie!\n"
+"Renseignez le dans la fenêtre des préférences."
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Envoi de la requête (CddbId: %s, #pistes: %d, Longueur disque: %d) ..."
+
+#: src/cddb.c:3231
+#, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Trouvé(s) %d album(s) correspondant(s) pour le DiscID '%s'"
+
+#: src/cddb.c:3327
+#, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Impossible de charger le fichier '%s' (%s)!"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Chargement de la liste des pistes de l'album ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Attention, vous allez charger %d lignes des résultats CDDB vers %d lignes "
+"dans la liste des fichiers!\n"
+"\n"
+"Voulez-vous continuer ?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Ecriture des Tags à partir de CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arabe (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabe (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arabe (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltique (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltique (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Baltique (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtique (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Europe centrale (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Europe centrale (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Europe centrale (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinois simplifié (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinois simplifié (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinois traditionnel (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinois traditionnel (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Cyrillique (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cyrillique (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cyrillique (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cyrillique (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cyrillique (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Cyrillique / Russe (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Cyrillique / Ukrainien (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Anglais (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Grec (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Grec (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hébreu (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hébreu (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japonais (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonais (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonais (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Coréen (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordique (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Europe du sud (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Thaï (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Turc (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turc (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Turc (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamien (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamien (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hébreu visuel (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Occidental (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Occidental (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Occidental (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Occidental (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Le nom de fichier '%s' n'a pas pu être converti en UTF-8 (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "UTF-8 Invalide"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"La chaine UTF-8 '%s' n'a pas pu être convertie vers l'encodage du fichier (%"
+"s)\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "La chaîne '%s' n'a pas pu être convertie en UTF-8 (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Démarrage de EasyTAG %s (PId: %d) ..."
+
+#: src/easytag.c:179
+#, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Version de libid3tag utilisée: %s ..."
+
+#: src/easytag.c:182
+#, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Version de id3lib utilisée: %d.%d.%d ..."
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr "Variable EASYTAGLANG non définie. Paramétrage de la locale à : '%s'"
+
+#: src/easytag.c:191
+#, c-format
+msgid "Setting locale : '%s'"
+msgstr "Paramétrage de la locale à '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "Locale utilisée '%s' (et éventuellement '%s')..."
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s par %s (compilé le %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Page Web: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr "Paramètre au chemin '%s' inconnu\n"
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Sélecteur"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Fichier"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Fichier en Lecture Seule"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Fichier Introuvable"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Layer ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Débit:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Fréq:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Mode:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Taille:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? ko"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Durée:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Tag"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Général"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Titre:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Les fichiers sélectionnés sont taggés avec ce titre"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Artiste:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Les fichiers sélectionnés sont taggés avec cet artiste"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Les fichiers sélectionnés sont taggés avec cet album"
+
+#. Disc Number
+#: src/easytag.c:642
+msgid "CD:"
+msgstr "CD:"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Les fichiers sélectionnés sont taggés avec ce numéro de disque"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Année:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Les fichiers sélectionnés sont taggés avec cette année"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Renumérote les pistes sélectionnées séquentiellement. Et redémarre à 01 dans "
+"chaque répertoire."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Piste N°:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Mettre le nombre de fichiers, présents dans le répertoire, pour les pistes "
+"sélectionnées"
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Les fichiers sélectionnés sont taggés avec ce nombre de pistes"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Genre:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Les fichiers sélectionnés sont taggés avec ce genre"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Comment.:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Les fichiers sélectionnés sont taggés avec ce commentaire"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Compositeur:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Les fichiers sélectionnés sont taggés avec ce compositeur"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Artiste Orig.:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Les fichiers sélectionnés sont taggés avec cet artiste original"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Copyright:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Les fichiers sélectionnés sont taggés avec ce copyright"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Les fichiers sélectionnés sont taggés avec cette URL"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Encodeur:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Les fichiers sélectionnés sont taggés avec ce nom d'encodeur"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Images"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Images:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Vous pouvez utiliser le Drag and Drop pour ajouter des images."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Les fichiers sélectionnés sont taggés avec ces images"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Effacer les images sélectionnées, sinon toutes."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Ajouter des images au tag (le Drag and Drop est supporté)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Sauvegarder les fichiers sélectionnés sur le disque dur."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Définir les propriétés des images sélectionnées."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec le titre '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Le titre a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec l'artiste '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "L'artiste a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec l'album '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "L'album a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec le numéro de disque '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Le numéro de disque a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec l'année '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "L'année a été supprimée dans les fichiers sélectionnés."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr ""
+"Les fichiers sélectionnés sont taggés avec un numéro de piste du type 'xx/%"
+"s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr ""
+"Les fichiers sélectionnés sont taggés avec un numéro de piste du type 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "La piste a été supprimée dans les fichiers sélectionnés."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Les pistes sélectionnées ont été renumérotées!"
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec le genre '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Le genre a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec le commentaire '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Le commentaire a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec le compositeur '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Le compositeur a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec l'artiste original '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "L'artiste original a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec le copyright '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Le copyright a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec l'URL '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "L'URL a été supprimée dans les fichiers sélectionnés."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Les fichiers sélectionnés sont taggés avec le nom de l'encodeur '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Le nom de l'encodeur a été supprimé dans les fichiers sélectionnés."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Les fichiers sélectionnés sont taggés avec ces images."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Les images ont été supprimées des fichiers sélectionnés."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Sélectionner le Mode et le Masque, et refaire la même action"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Tous les tags ont été scannés"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Tous les tags ont été supprimés"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Tous les fichiers ont été sauvés..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Les fichiers ont été partiellement sauvés..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Les fichiers ont été partiellement effacés..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Tous les fichiers ont été effacés..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Voulez-vous écrire le tag du fichier\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Ecriture des Tags..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Renommer le Fichier et le Répertoire..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Voulez vous renommer le fichier et le répertoire \n"
+"'%s'\n"
+"par \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Renommer le Répertoire..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Voulez vous renommer le répertoire \n"
+"'%s'\n"
+"par \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Renommer le Fichier..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Voulez vous renommer le fichier \n"
+"'%s'\n"
+"par \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Ecriture du tag de '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Tag(s) écrit"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Impossible d'écrire le tag du fichier '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Renomme le fichier '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Impossible de renommer le fichier '%s'\n"
+" par: \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Fichier(s) non renommé(s)..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Impossible de renommer le fichier \n"
+"%s\n"
+"car ce fichier existe déjà :\n"
+"%s"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Impossible de créer le répertoire cible :\n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Fichier '%s' renommé en '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Fichier(s) renommé(s)..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Impossible d'effacer l'ancien répertoire\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Fichier '%s' déplacé vers '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Fichier(s) déplacé(s)..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Impossible de déplacer le fichier '%s'\n"
+" vers \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Fichier(s) non déplacé(s)..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Voulez-vous réellement effacer définitivement le fichier\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Effacer le Fichier..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Fichier: '%s' effacé"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Impossible de lire le répertoire :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Recherche en cours..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Fichier: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Trouvé(s) %d fichier(s) dans ce répertoire et sous répertoires."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Trouvé(s) %d fichier(s) dans ce répertoire."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u fichier(s)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Aucun fichier trouvé dans ce répertoire et sous répertoires!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Aucun fichier trouvé dans ce répertoire!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Recherche en cours..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " ARRETER la recherche... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Séléctionner un répertoire à parcourir!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Tagger les fichiers sélectionnés avec ce champ"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Convertir '_' et '%20' par un espace"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Convertir ' ' par '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Tout en majuscule"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Tout en minuscule"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Première lettre en majuscule"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Première lettre de chaque mot en majuscule"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Enlever les espaces"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Insérer un espace avant une majuscule"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Supprimer les espaces ou underscores dupliqués"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Sortie anormale! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, c-format
+msgid "Received signal %s (%d)"
+msgstr "Signal reçu %s (%d)"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Vous avez probablement trouvé un bug dans EasyTAG. Merci d'envoyer un "
+"rapport de bug accompagné de la trace gdb ('gdb easytag core' puis 'bt' et "
+"'l') et des informations pour le reproduire à l'adresse <easytag@gmail.com>"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Signal inconnu"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [répertoire]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Affiche ce texte et quitte.\n"
+"-v, --version Affiche les informations de base et quitte.\n"
+"\n"
+"Répertoire:\n"
+"-----------\n"
+"c:/path_to/files Utiliser un chemin absolu à charger,\n"
+"/path_to/files Utiliser un chemin absolu à charger,\n"
+"path_to/files Utiliser un chemin relatif.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Sortie normale."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Des fichiers ont été modifiés mais pas sauvés...\n"
+"Voulez-vous les sauver avant de quitter le programme?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Voulez-vous réellement quitter le programme ?"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "Tag ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Tag Ogg Vorbis"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "Tag FLAC Vorbis"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "Tag APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "Tag MP4/M4A/AAC"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr "Tag Wavpack"
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "Fichier MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "Fichier MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Fichier Ogg Vorbis"
+
+#: src/et_core.c:2573
+msgid "Speex File"
+msgstr "Fichier Speex"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "Fichier FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "Fichier MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Fichier Monkey's Audio"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "Fichier MP4/AAC"
+
+#: src/et_core.c:2599
+msgid "Wavpack File"
+msgstr "Fichier Wavpack"
+
+#: src/et_core.c:2873
+#, c-format
+msgid "Pictures (%d)"
+msgstr "Images (%d)"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Le nom de fichier : '%s'\n"
+"ne peut pas être converti vers l'encodage du système de fichiers\n"
+"(Essayez de définir la variable d'environnement G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Conversion du nom de fichier"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr ""
+"Le nom de fichier '%s' est trop long de %d caractères et sera tronqué!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Encodeur:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Canaux:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "ERREUR lors de l'ouverture du fichier: '%s' comme FLAC (%s)."
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ERREUR: Impossible d'écrire les commentaires du fichier '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Le tag de '%s' a été écrit"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Le tag de '%s' a été supprimé"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Erreur lors de la suppression du tag ID3v1 de '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Erreur lors de la suppression du tag ID3v2 de '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Erreur lors de la mise à jour du tag ID3v2 de '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"Vous avez essayé de sauver le tag en Unicode mais il a été détecté que votre "
+"version de id3lib est bugguée.\n"
+"Si vous rechargez le fichier, certains caractères dans le tag pourraient ne "
+"pas être affichés correctement...\n"
+"Pour corriger cela : appliquez à id3lib le patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"disponible dans les sources de EasyTAG.\n"
+"Notez que ce message apparaîtra seulement une fois.\n"
+"\n"
+"Fichier : %s"
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Erreur lors de la mise à jour du tag ID3v1 de '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Le tag de '%s' a été mis à jour"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Aucune erreur reportée"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Pas de mémoire disponible"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Pas de donnée à analyser"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Donnée mal formatée"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Pas de tampon vers lequel écrire"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Le tampon est trop petit"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "ID du frame invalide"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Le champ demandé n'a pas été trouvé"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Type du champ inconnu"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Le tag est déjà attaché à un fichier"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Version du tag invalide"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Pas de fichier à analyser"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Tentative d'écriture vers un fichier en lecture seule"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Erreur dans la compression/décompression"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Message d'erreur inconnu!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Comme le fichier corrompu : '%s'\n"
+"va causer une erreur dans id3lib, il ne sera pas traité par le programme."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Fichier corrompu..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr "Journal"
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Oui "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Non "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Appliquer "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Sauver "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Annuler "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Fermer "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Ecrire "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Exécuter "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " Rechercher "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "Parcourir..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Sélectionner un répertoire..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Sélectionner un fichier..."
+
+#: src/misc.c:886
+msgid "Warning..."
+msgstr "Attention..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr "Aucun lecteur audio n'a été défini!"
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Impossible d'exécuter %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "o"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "Ko"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "Mo"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "Go"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "To"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Générer une liste de lecture"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "Nom de la Liste de Lecture M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Utiliser le nom du répertoire"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Editer les Masques"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Options de la Liste de Lecture"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Inclure seulement les fichiers sélectionnés"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Si activé, seulement les fichiers sélectionnés seront écrits dans la liste "
+"de lecture. Sinon, tous les fichiers seront pris."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Utiliser le chemin complet pour les fichiers"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Utiliser le chemin relatif pour les fichiers"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Créer la Liste de Lecture dans le rép. supérieur"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Si activé, la Liste de Lecture sera créée dans le répertoire supérieur."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Utiliser le séparateur de répertoires DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Cette option remplace le séparateur de répertoires UNIX '/' par celui de DOS "
+"'\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Contenu de la Liste de Lecture"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Ecrire seulement la liste des fichiers"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Ecrire les infos en utilisant le nom du fichier"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Ecrire les infos en utilisant :"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Le fichier '%s' existe déjà!\n"
+"L'écraser?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Ecrire Liste de Lecture..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Impossible d'écrire la liste de lecture '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "La liste de lecture '%s' a été écrite"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Piste"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Comment."
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Compositeur"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Artiste Orig."
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Copyright"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Encodeur"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Rechercher un fichier"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Tapez le mot à rechercher dans les fichiers. Ou ne rien taper pour tout "
+"afficher."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "Dans :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "le Nom de fichier"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "le Tag"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Sensible à la casse"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Trouvé(s) : %d fichier(s)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Charger les noms des fichiers à partir d'un fichier TXT"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Fichier :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Charger "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Contenu du Fichier Chargé :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Liste des Noms des Fichiers :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"En activant cette option, après le chargement du nom des fichiers, le "
+"scanner courant sera exécuté (la fenêtre des scanners doit être ouverte)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Insérer une ligne vide"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Effacer cette ligne"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Effacer toutes les lignes vides"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Recharger"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Audio"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "Format MP4 invalide"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr "Stéréo"
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr "Stéréo jointe"
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr "Bi-canal"
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr "Mono canal"
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Répéter la même action pour les autres fichiers"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+"Ogg Vorbis : Le flux binaire spécifié n'existe pas ou le fichier a été mal "
+"initialisé (fichier : '%s')."
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+"Ogg Vorbis : La lecture depuis le media a retourné une erreur (fichier : '%"
+"s')."
+
+#: src/ogg_header.c:134
+#, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr ""
+"Ogg Vorbis : Le flux binaire ne contient pas de données Vorbis (fichier : '%"
+"s')."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr "Ogg Vorbis : version Vorbis incorrecte (fichier : '%s')."
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+"Ogg Vorbis : Entête invalide dans le flux binaire Vorbis (fichier : '%s')."
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+"Ogg Vorbis : Erreur interne de logique, indocation d'un bug ou d'une "
+"corruption de pile (fichier ; '%s')."
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "ERREUR lors de l'ouverture du fichier: '%s' en tant que vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Attention : Le fichier Vorbis Ogg '%s' contient un tag ID3v2."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Ajouter les images"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Tous les fichiers"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG et JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Propriétés de l'image %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Type d'Image:"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Description de l'image :"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Sauvegarder l'image %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Le fichier suivant existe déjà :\n"
+"'%s'\n"
+"Voulez vous l'écraser?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Sauvegarder le fichier..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "Image JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "Image PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Image inconnue"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "Fichier icone PNG de 32x32 pixels"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Autre fichier icone"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Couverture (face avant)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Couverture (face arrière)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Dépliant intérieur"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Image de l'album"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Artiste principal/Soliste"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Artiste"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Chef d'orchestre"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Groupe/Orchestre"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Parolier/Ecrivain"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Lieu d'enregistrement"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Artistes pendant l'enregistrement"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Artistes pendant la représentation"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Capture d'écran film/video"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Un poisson aux couleurs vives"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Illustration"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Logo du groupe/de l'artiste"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Maison d'édition/Sigle du studio"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Type d'image inconnu"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "pixels"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Type"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Description"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Impossible d'afficher l'image, car il n'y a pas assez de données lues pour "
+"créer le buffer image."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Chargement du fichier image..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Impossible d'ouvrir le fichier :\n"
+"'%s'\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Image non chargée..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Préférences..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Sélecteur de Fichiers"
+
+#. Label
+#: src/prefs.c:167
+msgid "Default directory :"
+msgstr "Répertoire par défaut :"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Spécifier le répertoire dans lequel se trouvent vos fichiers. Ce chemin sera "
+"chargé au démarrage de EasyTAG sans paramètres."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+"Charger au démarrage le répertoire par défaut, ou celui passé en paramètre"
+
+#: src/prefs.c:203
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Recherche automatique des fichiers dans le répertoire par défaut au "
+"lancement de EasyTAG. Notez que ce chemin ne sera pas pris en compte si on "
+"passe un répertoire en paramètre à EasyTAG (easytag /chemin_vers/fichiers)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Parcourir les sous-répertoires"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr ""
+"Recherche les fichiers également dans les sous-répertoires lors de la "
+"lecture du répertoire"
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+msgid "Show subdirectories when selecting a directory"
+msgstr "Afficher les sous-répertoires lors de la sélection d'un répertoire"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Cette option permet d'ouvrir le noeud sélectionné pour afficher les sous "
+"répertoires."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Parcourir les répertoires cachés"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+"Recherche les fichiers également dans les répertoires cachés (répertoires "
+"commençants par un '.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Interface Utilisateur"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Montrer les informations du fichier"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Si activé, les informations sur le fichier comme le débit, la durée, la "
+"taille seront affichées au dessous du nom du fichier."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Afficher les fichiers modifiés dans la liste en :"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Rouge"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Gras"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Options de Classement de la Liste"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Classer la liste des fichiers par :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Ordre croissant des noms de fichiers"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Ordre décroissant des noms de fichiers"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Ordre croissant des pistes"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Ordre décroissant des pistes"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Ordre croissant des dates de création"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Ordre décroissant des dates de création"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Ordre croissant des titres"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Ordre décroissant des titres"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Ordre croissant des artistes"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Ordre décroissant des artistes"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Ordre croissant des albums"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Ordre décroissant des albums"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Ordre croissant des années"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Ordre décroissant des années"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Ordre croissant des genres"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Ordre décroissant des genres"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Ordre croissant des commentaires"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Ordre décroissant des commentaires"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr ""
+"Sélectionner le type d'ordonnancement des fichiers après le chargement d'un "
+"répertoire."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "Si activé, le classement de la liste sera dépendant de la casse."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Position des Boîtes de Dialogue"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Pas de position particulière"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Laisser le Gestionnaire de Fenêtres placer les boîtes de messages."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "Centre de la fenêtre principale"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr ""
+"Les boîtes de messages seront placées au centre de la fenêtre principale."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Centre de l'écran"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Les boîtes de messages seront placées au centre de l'écran."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Position de la souris"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Les boîtes de messages seront placées sous le curseur de la souris."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Lecteur de Fichiers Audio"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Lecteur à lancer :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Entrer le programme à utiliser pour écouter les fichiers. Des arguments "
+"peuvent être passés au programme (ex: 'xmms -p') avant de recevoir les "
+"fichiers comme autres arguments."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Paramètres du nom des fichiers"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Options pour les Fichiers"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+"Remplacer les caractères illégaux des noms de fichiers (pour Windows et les "
+"CD-Rom)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Convertir les caractères illégaux pour les systêmes de fichiers windows et "
+"ISO9660 + Joliet('\\', ':', ';', '*', '?', '\"', '<', '>', '|') présents "
+"dans le nom des fichiers, pour éviter les problèmes en renommant les "
+"fichiers. Ceci est très utile quand on renomme un fichier à partir du tag "
+"avec le scanner."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Convertir l'extension du fichier en :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Minuscules"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Par exemple, l'extension sera convertie en '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Majuscules"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Par exemple, l'extension sera convertie en '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Pas de Changement"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "L'extension ne sera pas convertie"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Conserver la date de modification du fichier"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Conserver la date de modification (propriétés du fichier) lors de la "
+"sauvegarde du fichier."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Jeu de caractères pour les noms de fichiers"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Règles à appliquer si certains caractères ne peuvent pas être convertis vers "
+"l'encodage du système\n"
+"lors de l'écriture du nom de fichier :"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Essayer un autre encodage"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Avec cette option, il essayera la conversion vers l'encodage de votre langue "
+"(par exemple : ISO-8859-1 pour 'fr', KOI8-R pour 'ru', ISO-8859-2 pour "
+"'ro'). Si il échoue, il essayera l'encodage ISO-8859-1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+"Forcer l'utilisation de l'encodage du système et activer la transcription"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Avec cette option, quand un caractère ne peut pas être représenté dans "
+"l'encodage cible, il pourra être approximé par un ou plusieurs caractères se "
+"ressemblant visuellement."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"Forcer l'utilisation de l'encodage du système et supprimer certains "
+"caractères"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Avec cette option, quand un caractère ne peut pas être représenté dans "
+"l'encodage cible, il pourra être supprimé."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Paramètres des Tags"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Options de Tag"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Compléter automatiquement la date si elle est incomplète"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Compléter automatiquement le champ 'Année' si vous ne tapez que les derniers "
+"chiffres de la date (par exemple, si la date courante est 2005: 5 => 2005, 4 "
+"=> 2004, 6 => 1996, 95 => 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Ecrire le numéro de piste avec le nombre de chiffres suivant :"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Si cette option est activée, le numéro de piste est écrit sur 'n' chiffres "
+"en remplissant à gauche avec le nombre '0' (Ex avec deux chiffres : '05', "
+"'09', '10',...). Sinon, le numéro est laissé tel quel."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Fichiers Ogg Vorbis : Ecrire aussi le commentaire au format XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS n'identifie pas le champ de commentaire correctement pour les fichiers "
+"Ogg Vorbis, au contraire des autres applications. Normalement ce champ est "
+"identifié par la chaîne 'comment=', mais XMMS identifie ce champ seulement "
+"par '='. Par conséquent, désactivez cette option si vous ne voulez pas voir "
+"apparaître un champ inconnu dans Winamp par exemple. Mais le commentaire ne "
+"pourra pas être affiché dans XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"Focus du champ du tag lors du changement de fichier avec les raccourcis Page "
+"Haut/Page Bas"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Garder le focus sur le même champ du tag"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Redonner le focus au premier champ du tag (champ 'Titre')"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "Paramètres des Tags ID3"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Règles pour les Tags ID3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Ecrire des tags ID3 dans les fichiers FLAC (en plus du tag FLAC)"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Si activé, les tags ID3 seront aussi ajoutés dans les fichiers FLAC (d'après "
+"les deux précédentes règles, avec le tag FLAC). Sinon, les tags ID3 seront "
+"supprimés."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Supprimer les tags si tous les champs sont vides"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Comme les tags ID3v2 peuvent contenir d'autres informations que le titre, "
+"l'artiste, l'album, l'année, la piste, le genre ou un commentaire (comme une "
+"image attachée, les paroles, ...), cette option permet de supprimer "
+"entièrement le tag lorsque ces sept données sont vides."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Convertir automatiquement les anciennes versions de tag ID3v2"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Si activé, une ancienne version de tag ID3v2 (comme ID3v2.2) sera convertie "
+"en version ID3v2.3."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr "Utiliser CRC32"
+
+#: src/prefs.c:666
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Utiliser CRC32 dans les tags ID3v2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr "Utiliser la compression"
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr "Utiliser la compression dans les tags ID3v2"
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+msgid "Character Set for writing ID3 tags"
+msgstr "Jeu de caractères pour écrire les tags ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+msgid "ID3v2 tags"
+msgstr "Tags ID3v2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Ecrire le tag ID3v2"
+
+#: src/prefs.c:698
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Si cette option est activée, un tag à la norme ID3v2.4 sera ajouté ou mis à "
+"jour au début des fichiers MP3. Sinon, il sera supprimé."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+msgid "Version:"
+msgstr "Version :"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+"Sélectionner la version du tag ID3v2 à écrire:\n"
+" - ID3v2.3 est écrit en utilisant id3lib,\n"
+" - ID3v2.4 esr écrit en utilisant libid3tag (recommendé)."
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr "Jeu de charactères :"
+
+#. Unicode
+#: src/prefs.c:734
+msgid "Unicode "
+msgstr "Unicode"
+
+#: src/prefs.c:742
+msgid "Unicode type to use"
+msgstr "Type d'Unicode à utiliser"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr ""
+"Jeu de caractères à utiliser pour l'écriture des données du tag dans le "
+"fichier."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr "Paramètres supplémentaires pour iconv() :"
+
+#: src/prefs.c:779 src/prefs.c:845
+msgid "No"
+msgstr "Non"
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr "//TRANSLIT"
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr "//IGNORE"
+
+#. ID3v1 tags
+#: src/prefs.c:801
+msgid "ID3v1 tags"
+msgstr "Tags ID3v1"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Ecrire le tag ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Si cette option est activée, un tag à la norme ID3v1 sera ajouté ou mis à "
+"jour, à la fin des fichiers MP3. Sinon, il sera supprimé."
+
+#: src/prefs.c:835
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr ""
+"Jeu de caractères à utiliser pour l'écriture des données du tag ID3v1 dans "
+"le fichier."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+msgid "Character Set for reading ID3 tags"
+msgstr "Jeu de caractères pour lire les tags ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr "Non standard :"
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Cet encodage sera utilisé pour la lecture des données du tag, pour convertir "
+"chaque chaîne contenue dans un champ ISO-8859-1 du tag (pour les tags ID3v2 "
+"et/ou ID3v1).\n"
+"\n"
+"Par exemple :\n"
+" - dans les versions précédentes de EasyTAG, vous pouviez sauver des "
+"chaînes en UTF-8 dans des champs en ISO-8859-1. Cela n'est pas correct! Pour "
+"convertir ces tags en Unicode : activer cette option et sélectionner UTF-8. "
+"Vous devez aussi activer au dessus l'option 'Essayer de sauver les tags avec "
+"l'encodage ISO-8859-1. En cas d'échec, utiliser l'UNICODE (recommandé)' ou "
+"'Toujours sauver les tags avec l'encodage ISO-8859-1'.\n"
+" - Si l'Unicode n'est pas utilisé, les personnes Russes peuvent "
+"sélectionner l'encodage 'Windows-1251' pour charger des tags écrits sous "
+"Windows. Et 'KOI8-R' pour charger des tags écrits sous un système Unix."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr ""
+"Jeu de caractères à utiliser pour la lecture des données du tag dans le "
+"fichier."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Scanner"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Scanner Compléter Tag - Conversion de Caractères"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr ""
+"Convertir le caractère underscore '_' et la chaîne '%20' par un espace ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Convertir les espaces ' ' par des underscores '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Si activé, cette conversion sera utilisée lors de l'utilisation d'un masque "
+"à partir du scanner de tags."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Scanner Renommer Fichier - Conversion de Caractères"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Si activé, cette conversion sera utilisée lors de l'utilisation d'un masque "
+"à partir du scanner de fichiers."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Scanner Traiter les Champs - Conversion de Caractères"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+"Ne pas convertir en majuscule la première lettre de certaines prépositions "
+"et articles."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Ne pas convertir la première lettre de certains mots comme les prépositions "
+"'at', 'in', 'on' ou de mots comme 'feat.', lors de l'utilisation du scanner "
+"'Première lettre de chaque mot en majuscule' (par exemple, vous obtiendrez "
+"'Text in an Entry' au lieu de 'Text In An Entry')."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Fenêtre du Scanner"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Ouvrir la Fenêtre du Scanner au démarrage"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Activer cette option pour ouvrir automatiquement la fenêtre des scanners au "
+"démarrage de EasyTAG."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Fenêtre du scanner toujours au dessus"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Si activé, la fenêtre qui contient les masques sera toujours au dessus de la "
+"fenêtre principale (toujours visible)."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Champs"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Ecraser les champs lors d'un Scan du tag"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Si activé, le scanner remplacera le texte contenu dans les différents "
+"champs, par le nouveau. Si désactivé, seulement les champs vides seront "
+"complétés."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Mettre ce texte en commentaire par défaut :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Activer cette option si vous voulez mettre le texte suivant dans le champ "
+"commentaire du tag lors de l'utilisation du scanner 'Compléter le Tag'."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+"Mettre la valeur CRC32 comme commentaire par défaut (pour fichier avec ID3 "
+"tag)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Activer cette option si vous voulez mettre le texte suivant dans le champ "
+"commentaire du tag lors de l'utilisation du scanner 'Compléter le Tag'."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "Base de données CD"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "Paramètres du Serveur pour la Recherche Automatique"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Nom :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Port :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "Chemin CGI :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "Paramètres du Serveur pour la Recherche Manuelle"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+msgid "Local CD Data Base"
+msgstr "Base de données CD locale"
+
+#: src/prefs.c:1203
+msgid "Path :"
+msgstr "Chemin :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+"Spécifiez le répertoire où est placée la base de donnée de CD. Ce répertoire "
+"contient les onze répertoires suivants 'blues', 'classical', 'country', "
+"'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' et 'misc'."
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Paramètres du Proxy"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Utiliser un proxy"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Active les paramètres du serveur proxy."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Nom d'Hôte :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Nom du proxy."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Port du proxy."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Nom d'Utilisateur :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Nom de l'utilisateur sur le serveur proxy."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Mot de Passe Utilisateur :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Mot de Passe de l'utilisateur sur le serveur proxy."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Liste des Noms de Pistes"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"Sélectionner le fichier audio correspondant (d'après la position ou "
+"l'algorithme DLM si activé en dessous)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Si activé, lorsque vous sélectionnez une ligne dans la liste des noms de "
+"pistes, le fichier audio correspondant dans la liste principale sera aussi "
+"sélectionné."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Utiliser l'algorithme Levenshtein (DLM) pour faire correspondre les lignes "
+"(d'après le titre) avec les fichiers\n"
+"audio (d'après le nom de fichier)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Confirmation"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Confirmer la sortie du programme"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Si cette option est activée, une boîte de dialogue s'ouvrira pour demander "
+"confirmation avant la fermeture de l'application."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Confirmer l'écriture du tag du fichier"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Confirmer pour renommer les fichiers"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Confirmer l'effacement des fichiers"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Confirmer l'écriture de la liste de lecture"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Appliquer les changements (mais ne pas sauver) et fermer cette fenêtre"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Fermer cette fenêtre sans sauver"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Sauver les changements et fermer cette fenêtre"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Exemple : %.*d_-_Piste_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Changements appliqués"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Configuration sauvée"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Configuration inchangée"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" Le chemin sélectionné comme 'Chemin par défaut des fichiers' est invalide!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Ce n'est pas un répertoire"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "Le programme de lecture audio '%s' n'a pas été trouvé!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Compléter Tag"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Renommer le Fichier et le Répertoire"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Traiter Champs"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Tag scanné avec succès..."
+
+#: src/scan.c:352
+#, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Tag scanné avec succès...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+"Scanner de tags : étrange..., l'extension '%s' n'a pas été trouvée dans le "
+"nom de fichier '%s'!"
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Erreur de scanner: Impossible de trouver le séparateur '%s' dans '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+"Impossible de convertir le nom de fichier '%s' vers l'encodage du système de "
+"fichiers."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Nouveau nom de fichier scanné avec succès..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Nouveau nom de fichier scanné avec succès...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Scanner de Tag et de Nom du Fichier"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Scanner : "
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Sélectionner le type du scanner à utiliser"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Ouvrir fenêtre de Scan / Scanner le(s) fichier(s) sélectionné(s)"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Options du Scanner"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Montrer / Cacher l'Editeur de Masques"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Montrer / Cacher la Légende"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Fermer cette fenêtre"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Sélectionner ou taper un masque en utilisant les codes (voir Légende) pour "
+"analyser le nom du fichier et le chemin, afin de compléter les champs du tag."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Apercu du scanner de tag..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Préfixer le masque avec le chemin courant"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Sélectionner ou saisir un masque en utilisant les codes (voir légende) pour "
+"analyser les champs du tag et renommer le fichier. Utiliser / pour créer des "
+"répertoires. Si le premier caractère est /, il s'agit d'un chemin absolu, "
+"sinon d'un chemin relatif par rapport à l'ancien."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Apercu du renommeur de fichiers..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Champs:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Les boutons sur la droite représentent les champs qui peuvent être traités. "
+"Sélectionnez ceux qui vous intéressent."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Traiter le champ du nom de fichier"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Traiter le champ du titre"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Traiter le champ de l'artiste"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Traiter le champ de l'album"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Traiter le champ du genre"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Traiter le champ du commentaire"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Traiter le champ du compositeur"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "Ao"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Traiter le champ de l'artiste originel"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Traiter le champ du copyright"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Traiter le champ de l'URL"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Traiter le champ du nom de l'encodeur"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Inverser la sélection"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Tout (Dé)Sélectionner."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Convertir '_' et '%20' par ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Convertir :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "par : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Le caractère underscore ou la chaîne %20 seront remplacés par un espace "
+"(exemple, avant : 'Text%20In%20An_Entry', après : 'Text In An Entry')."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Le caractère espace est remplacé par un caractère underscore (exemple, "
+"avant : 'Text In An Entry', après : 'Text_In_An_Entry')."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Remplacer un caractère par un autre"
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Toutes les lettres sont mises en majuscules (exemple, avant : 'Text IN AN "
+"entry', après : 'TEXT IN AN ENTRY')."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Toutes les lettres sont mises en minuscules (exemple, avant : 'Text IN AN "
+"entry', après : 'text in an entry')."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"La première lettre du texte et les suivantes sont respectivement mises en "
+"majuscule et minuscules (exemple, avant : 'text IN An ENTRY', après : 'Text "
+"in an entry')."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"La première lettre de chaque mot est mise en majuscule et les autres en "
+"minuscules (exemple, avant : 'Text in an ENTRY', après : 'Text In An Entry')."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Insérer un espace avant une majuscule"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Effacer les espaces ou underscores dupliqués"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Tous les espaces sont supprimés (exemple, avant: 'Text In An Entry', après: "
+"'TextInAnEntry')."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Avec cette option, vous pouvez ajouter un espace avant chaque lettre en "
+"majuscule (exemple, avant : 'TextInAnEntry', après : 'Text In An Entry')."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Cette option supprime les espaces ou underscores dupliqués (exemple, avant : "
+"'Text__In__An Entry', après : 'Text_In_An Entry')."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Légende"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : artiste"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : commentaire"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : compositeur"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : copyright:"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : n° disque"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : encodé par"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : genre"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ignoré"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : nombre de pistes"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : artiste orig."
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : piste"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : titre"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : année"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Editeur de Masque"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Créer un Nouveau Masque"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Monter ce Masque"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Descendre ce Masque"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Dupliquer le Masque"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Ajouter les Masques par Défaut"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Effacer le Masque"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Sauver les Masques"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Nouveau_masque"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Copier: Ancune ligne sélectionnée!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Effacer: Ancune ligne sélectionnée!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Monter: Ancune ligne sélectionnée!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Descendre: Ancune ligne sélectionnée!"
+
+#: src/setting.c:872
+#, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "ERREUR: Impossible d'écrire le fichier de configuration: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Impossible d'ouvrir le fichier de configuration '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Chargement de la configuration par défaut..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Impossible de créer ou d'ouvrir le fichier '%s' (%s)"
+
+#: src/setting.c:1261
+#, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "ERREUR: Impossible d'écrire la liste vers le fichier: %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Chargement des masques par défaut pour 'Compléter les Tags' ..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Chargement des masques par défaut pour 'Renommer Fichier' ..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Chargement des masques par défaut pour 'Renommer le Répertoire' ..."
+
+#: src/setting.c:1589
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr "ERREUR: La variable d'environnement HOME n'est pas définie!"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "ERREUR: Impossible de créer le répertoire '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Entrée tronquée ou vide."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "L'entrée n'est pas un flux binaire Ogg."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Erreur lors de la lecture de la première page du flux binaire Ogg."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Erreur lors de la lecture de l'entête du paquet initial."
+
+#: src/vcedit.c:341
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Le flux binaire Ogg ne contient pas de données Vorbis."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Second entête corrompue."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr "Besoin de sauver les entêtes supplémentaires - A FAIRE!"
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF avant la fin des entêtes vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Donnée corrompue ou manquante, continu..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Erreur lors de l'écriture du flus vers la sortie. Il se peut que le flux de "
+"sortie soit corrompu ou tronqué."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr "La DLL '%s' n'a pas été trouvée. Tentative de chargement ..."
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr "La DLL '%s' ne peut été chargée"
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr "Cette version de '%s' contient '%s'"
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr "La fonction '%s' n'a pas été trouvée dans la DLL '%s'"
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, c-format
+msgid "Audio player: '%s'"
+msgstr "Lecteur Audio : '%s'"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr "Répertoire pour les paramètres EasyTAG : '%s'"
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Version du tag invalide"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Utiliser le padding"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Utilise le padding dans les tags ID3v2 pour améliorer la vitesse de "
+#~ "sauvegarde des prochains changements dans le tag."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Toujours sauver les tags avec l'encodage ISO-8859-1"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Utiliser l'encodage ISO-8859-1 (encodage utilisant un octet par "
+#~ "caractère) pour écrire le tag. Cet encodage peut être utilisé pour les "
+#~ "tags ID3v2 et ID3v1, mais notez que les caractères qui n'existent pas "
+#~ "dans l'encodage ISO-8859-1 seront perdus.\n"
+#~ "\n"
+#~ "Si un encodage différent est sélectionné avec 'Utiliser un encodage non "
+#~ "standard pour écrire les tags ID3', celui-ci sera utilisé au lieu de "
+#~ "l'ISO-8859-1.\n"
+#~ "Des règles peuvent également être définies si certains caractères ne "
+#~ "peuvent pas être convertis."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Essayer de sauver les tags avec l'encodage ISO-8859-1. En cas d'échec, "
+#~ "utiliser l'UNICODE (recommandé)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "L'encodage UNICODE sera utilisé si la conversion en ISO-8859-1 échoue. "
+#~ "L'unicode peut être utilisé pour les tags ID3v2 mais pas les tags ID3v1 "
+#~ "qui supportent seulement les encodages sur un seul octet (ISO-8859-1 par "
+#~ "défaut).\n"
+#~ "\n"
+#~ "Si un encodage différent est sélectionné avec 'Utiliser un encodage non "
+#~ "standard pour écrire les tags ID3', celui-ci sera utilisé au lieu de ISO-"
+#~ "8859-1.\n"
+#~ "Des règles peuvent également être définies si certains caractères ne "
+#~ "peuvent pas être convertis."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Toujours sauver les tags avec l'encodage UNICODE"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Utiliser l'encodage UNICODE pour les tags ID3v2. Les tags ID3v1 sont "
+#~ "toujours sauvés avec un encodage sur un seul octet (ISO-8859-1 par "
+#~ "défaut).\n"
+#~ "\n"
+#~ "Si un encodage différent est sélectionné avec 'Utiliser un encodage non "
+#~ "standard pour écrire les tags ID3', celui-ci sera utilisé au lieu de ISO-"
+#~ "8859-1."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "Pour les champs ISO-8859-1, utiliser les encodages suivants (utilisateurs "
+#~ "experts seulement!) :"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "Utiliser un encodage non standard pour lire les tags ID3 :"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "Utiliser un encodage non standard pour écrire les tags ID3 : "
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Cet encodage sera utilisé lors de l'écriture des données du tag, pour "
+#~ "convertir chaque chaîne sauvée dans un champ ISO-8859-1 du tag (pour les "
+#~ "tags ID3v2 et/ou ID3v1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "Pour les champs ISO-8859-1, utiliser également ces règles si certains "
+#~ "caractères ne peuvent pas\n"
+#~ "être convertis lors de l'écriture du tag :"
+
+#~ msgid "Do nothing"
+#~ msgstr "Ne rien faire"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr "Forcer l'utilisation de l'encodage et activer la transcription"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr "Forcer l'utilisation de l'encodage et supprimer certains caractères"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "La conversion du jeu de caractères de '%s'\n"
+#~ "vers '%s' n'est pas supportée!"
+
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "ERREUR lors de l'ouverture du fichier: '%s' (%s)"
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Charger le répertoire au démarrage"
diff --git a/po/he.gmo b/po/he.gmo
new file mode 100644
index 0000000..83a3498
--- /dev/null
+++ b/po/he.gmo
Binary files differ
diff --git a/po/he.po b/po/he.po
new file mode 100644
index 0000000..222bd8f
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,4697 @@
+# Hebrew translation for EasyTAG
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Yuval Hager <yuval@avramzon.net>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 2.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2007-06-13 08:59+0300\n"
+"Last-Translator: Yuval Hager <yuval@avramzon.net>\n"
+"Language-Team: Hebrew <he@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(×ª×¨×’×•× ×œ×’×¨×ž× ×™×ª)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(×ª×¨×’×•× ×œ×¨×•×¡×™×ª)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(×ª×¨×’×•× ×œ×”×•×œ× ×“×™×ª)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(×ª×¨×’×•× ×œ×©×•×•×“×™×ª)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(×ª×¨×’×•× ×œ×”×•× ×’×¨×™×ª)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(×ª×¨×’×•× ×œ×יטלקית)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(×ª×¨×’×•× ×œ×™×¤× ×™×ª)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(×ª×¨×’×•× ×œ×וקר×ינית)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(×ª×¨×’×•× ×œ×¦'כית)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(×ª×¨×’×•× ×œ×¡×¤×¨×“×™×ª)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(×ª×¨×’×•× ×œ×¤×•×œ× ×™×ª)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(×ª×¨×’×•× ×œ×¨×•×ž× ×™×ª)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(×ª×¨×’×•× ×œ×“× ×™×ª)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(×ª×¨×’×•× ×œ×™×•×•× ×™×ª)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(×ª×¨×’×•× ×œ×¤×•×¨×˜×•×’×–×™×ª ברזיל×ית)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(×ª×¨×’×•× ×œ×‘×•×œ×’×¨×™×ª)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(×ª×¨×’×•× ×œ×¡×™× ×™×ª)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(×ª×¨×’×•× ×œ×™×•×•× ×™×ª)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "×ודות..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "×ודות"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(קומפל: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(משתמש ב: GTK+ %d.%d.%d וכן id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב MP3)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב MP3)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב MP3)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב MP3)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב Ogg Vorbis)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב MP3)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב FLAC)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב MP4/AAC)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(×œ×œ× ×ª×ž×™×›×” ב MP3)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "מחבר: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "דו×\"ל: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "×תר: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "תי×ור:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "תודות"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "תרגומי×:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "כללי:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "שינויי×"
+
+#: src/about.c:454
+#, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "×œ× × ×™×ª×Ÿ לפתוח ×ת הקובץ '%s' (%s)\n"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "שגי××” בפתיחת קובץ: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_קובץ"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "מיון רשימה לפי תג"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "מיון הרשימה על פי תכונה"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "עולה לפי ×©× ×§×•×‘×¥"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "יורד לפי ×©× ×§×•×‘×¥"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "עולה לפי ת×ריך יצירה"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "יורד לפי ת×ריך יצירה"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "עולה לפי מספר רצועה"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "יורד לפי מספר רצועה"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "עולה לפי ש×"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "יורד לפי ש×"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "עולה לפי ×מן"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "יורד לפי ×מן"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "עולה לפי ×לבו×"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "יורד לפי ×לבו×"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "עולה לפי שנה"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "יורד לפי שנה"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "עולה לפי סגנון"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "יורד לפי סגנון"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "עולה לפי הערה"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "יורד לפי הערה"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "עולה לפי מלחין"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "יורד לפי מלחין"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "עולה לפי ×מן מקורי"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "יורד לפי ×מן מקורי"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "עולה לפי זכויות"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "יורד לפי זכויות"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "עולה לפי URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "יורד לפי URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "עולה לפי ×©× ×ž×§×•×“×“"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "יורד לפי ×©× ×ž×§×•×“×“"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "עולה לפי סוג קובץ"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "יורד לפי סוג קובץ"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "עולה לפי גודל קובץ"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "יורד לפי גודל קובץ"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "עולה לפי משך"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "יורד לפי משך"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "עולה לפי bitrate"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "יורד לפי bitrate"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "עולה לפי קצב דגימה"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "יורד לפי קצב דגימה"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "פתח ב×מצעות ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "בחר הכל"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "בטל בחירת הכל"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "הפוך בחירה"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "מחק"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "הקובץ ×”_ר×שון"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "הקובץ הר×שון"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "הקובץ ×”_קוד×"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "הקובץ הקוד×"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "הקובץ הב_×"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "הקובץ הב×"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "הקובץ ×”×_חרון"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "הקובץ ×”×חרון"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "_סרוק קבצי×"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "סרוק קבצי×"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_מחק תגי×"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "מחק תג(×™×)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "ב_טל ×©×™× ×•×™×™× ××—×¨×•× ×™× ×‘×§×‘×¦×™×"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "בטל ×©×™× ×•×™×™× ×חרון בקבצי×"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "ב_צע מחדש ×©×™× ×•×™×™× ××—×¨×•× ×™× ×‘×§×‘×¦×™×"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "בצע מחדש ×©×™× ×•×™×™× ×חרון קבצי×"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_שמור קבצי×"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "שמור קבצי×"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "הכר_×— שמירת קבצי×"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "הכרח שמירה קבצי×"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "בטל ×©×™× ×•×™×™× ×חרוני×"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "בצע מחדש ×©×™× ×•×™×™× ×חרוני×"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_×¦× "
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "צ×"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_דפדפן"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "עבור לתיקיית ה_בית"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "עבור לתיקיית הבית"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "עבור לתיקיית ברירת המח_דל"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "עבור לתיקיית ברירת המחדל"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "קבע ×ת ×”×ž×™×§×•× ×”× ×•×›×—×™ כברירת מח_דל"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "קבע ×ת ×”×ž×™×§×•× ×”× ×•×›×—×™ כברירת מחדל"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "תצוגת ×¢×¥ | תצוגת ×מן-×לבו×"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "שנה ×©× ×ª×™×§×™×™×” ..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "טען תיקייה מחדש"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "עיין בתיקייה ב×מצעות ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_קפל עץ"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_רענן עץ"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "_סורק"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_×ž×œ× ×ª×’×™× ..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "×ž×œ× ×ª×’×™× ..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_שנה שמות ×§×‘×¦×™× ×•×ª×™×§×™×•×ª ..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "×©× × ×©×ž×•×ª ×§×‘×¦×™× ×•×ª×™×§×™×•×ª ..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_עבד שדות ..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "עבד שדות ..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_שונות"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "חיפוש _×§×‘×¦×™× ..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "חיפוש ×§×‘×¦×™× ..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "חיפוש ב_מסד ×”× ×ª×•× ×™× ..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "חיפוש CDDB ..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "טען שמות ×§×‘×¦×™× ×ž×§×•×‘×¥ TXT ..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "כתוב רשימת השמעה ..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "הרץ נגן חיצוני"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_הגדרות"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "העד_פות ..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "העדפות ..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_עזרה"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_×ודות"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "עצור פעולה נוכחית"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "פעולות _קבצי×"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "חיפוש ב CDDB ..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr "נקה יומן"
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "עיין בתיקיות _משנה"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "הר××” תיקיות חבויות"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "הר××” ×¢×¥ / הצג לפי ×מן ו×לבו×"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "×œ× × ×™×ª×Ÿ ל×חד ×ת הממשק, השגי××” היתה ב: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "מוכן להתחיל..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "נבחר ×ž×™×§×•× ×‘×¨×™×¨×ª מחדל חדש לקבצי×"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "×ישור..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"מספר ×§×‘×¦×™× ×©×•× ×• ×ך ×œ× × ×©×ž×¨×•...\n"
+"×”×× ×œ×©×ž×•×¨ ××•×ª× ×œ×¤× ×™ החלפת התיקיה?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"המסלול שהוזן ×ינו תקף!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "שגי××”..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<כל ×”×לבומי×>"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "שגי××”: בחיפוש ×חר %s, ×œ× × ×ž×¦× %s בעץ."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "×מן"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# ×לבומי×"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# קבצי×"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "×לבו×"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "עבור לתיקיית ×ב"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "הכנס תיקייה לעיון"
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "×¢×¥"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "×מן ו×לבו×"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "שנה ×©× ×œ×ª×™×§×™×™×”"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "שנה ×©× ×ª×™×§×™×™×” '%s' ל:"
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "השתמש במסכה:"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "×× ×ž×•×¤×¢×œ, ישתמש במסכות לשינוי ×©× ×ª×™×§×™×™×”."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"בחר ×ו הכנס מסכה בעזרת ×”×§×•×“×™× (ר××” ×ž×§×¨× ×‘×—×œ×•×Ÿ הסורק) כדי לשנות ×ת ×©× ×”×ª×™×§×™×” "
+"מתוך שדות התגי×."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "מסכת סורק ×œ× ×ª×§×¤×”"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "תצוגה מקדימה של שינוי ×©× ×ª×™×§×™×™×”..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "יש להכניס ×©× ×ª×™×§×™×™×”!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr "×œ× × ×™×ª×Ÿ להמיר '%s' לקידוד ×©× ×§×•×‘×¥. ×× × ×”×©×ª×ž×© ×‘×©× ×חר."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ לשנות ×ת ×©× ×”×ª×™×§×™×” ×›×™ ×”×©× ×›×‘×¨ קיי×!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ לשנות ×ת ×©× ×”×ª×™×§×™×”\n"
+"'%s'\n"
+" ל \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "×©× ×”×ª×™×§×™×™×” שונה"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "תוכנית להריץ :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr "הכנס ×ת ×©× ×”×ª×•×›× ×™×ª להרצה. התוכנית תקבל ×ת התיקיה הנוכחית כפרמטר."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "פתח קובץ ב×מצעות ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr "הכנס ×ת ×©× ×”×ª×•×›× ×™×ª להרצה. התוכנית תקבל ×ת ×©× ×”×§×•×‘×¥ הנוכחי כפרמטר."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "יש להניס ×©× ×ª×•×›× ×™×ª"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת התוכנית '%s'!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "×œ× × ×™×ª×Ÿ להריץ ×ת %s (שגי××” %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "×œ× × ×™×ª×Ÿ לפצל תהליך חדש!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "הפקודה שהורצה: '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "×מן / ×לבו×"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "סווג"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "×©× ×¨×¦×•×¢×”"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "זמן"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "חיפוש בבסיס ×”× ×ª×•× ×™× ×©×œ הדיסקי×"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "חיפוש ×וטומטי"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "ש××™×œ×ª× ×œ×‘×¡×™×¡ ×”× ×ª×•× ×™× ×©×œ ×”×“×™×¡×§×™× :"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"חפש ב×ופן ×וטומטי ב CDDB לפי ×”×§×‘×¦×™× ×©× ×‘×—×¨×• (הסדר חשוב!) כדי לייצר ×ת המזהה "
+"של הדיסק ב CDDB."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "עצור ×ת החיפוש ..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr "השתמש ב CDDB מקומי"
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"×›×©×ž×¤×¢×™×œ×™× ×ת ×פשרות זו, ×חרי ×©×ž×¢×œ×™× ×ת השדות, הסורק שנבחר ירוץ (חלון הסורק "
+"חייב להיות פתוח)"
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "חיפוש ידני"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "×ž×™×œ×™× :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "הכנס ×ת ×”×ž×™×œ×™× ×œ×—×™×¤×•×© (מופרדות ×‘×¨×•×•×—×™× ×ו '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "חפש ב :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "כל השדות"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "×חר"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "כל הסיווגי×"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "בלוז"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "קל×סי"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "ק×ונטרי"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "עממי"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "×’'××–"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "שונות"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "ניו××™×™×’'"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "ר××’×™×™"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "רוק"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "פסקול"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "כולל: פ×נק, נשמה, ר×פ, פופ, תעשייתי, מט×ל ועוד"
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "סרטי×, הופעות"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "×›×לו ×©×œ× ×ž×ª××™×ž×™× ×œ×¡×™×•×•×’×™× ×”×חרי×"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " סיווגי×"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "תוצ×ות :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "חיפוש :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "הכנס ×ת ×”×ž×™×œ×™× ×œ×—×™×¤×•×© ברשימה למטה"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "חפש ×ת הב×"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "חפש ×ת הקוד×"
+
+#: src/cddb.c:571
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "הר××” רק שורות ×דומות (×ו הר××” ×ת כל השורות) ברשימת ×”'×מן / ×לבו×'"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "בטל בחירה לכל השורות"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "הפוך בחירת שורות"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "בחר ×ת כל השורות"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"בחר שורות להחלה על רשימת ×”×§×‘×¦×™× ×©×œ×š. כל השורות יעובדו ×× ×œ× ×ª×‘×—×¨ כלו×. \n"
+"ניתן ×’× ×œ×¡×“×¨ ×ת השורות מחדש לפני לחיצה על כפתור \"החל\""
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "קבע כ :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "הכל"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "×©× ×§×•×‘×¥"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "כותרת"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "שנה"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "מספר רצועה"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "מספר רצועות"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "×–'×נר"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "הרץ ×ת הסורק הנוכחי לכל קובץ"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr "הת×× ×©×•×¨×•×ª בעזרת ××œ×’×•×¨×™×ª× ×œ×‘× ×©×˜×™×™×Ÿ"
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "העלה ×ת השורות שנבחרו ×ו כל השורות (×× ×œ× × ×‘×—×¨×” ××£ שורה)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "מוכן לחיפוש..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr "×לבו×: '%s', ×ומן: '%s', ×ורך: '%s', שנה: '%s', ×–,×נר: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "הפוך בחירה"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "מיין לפי מספר רצועה"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "מיון לפי ×©× ×¨×¦×•×¢×”"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "מחפש מ×רח '%s' ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "×œ× ×ž×¦×תי ×ת המ×רח '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "×œ× ×ž×¦×œ×™×— לייצר socket חדש (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "מתחבר לשרת '%s', פורט '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "×œ× ×ž×¦×œ×™×— להתחבר לשרת '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "מחובר לשרת '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "מקבל מידע (%s) ..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "שגי××” בקרי×ת תשובת CDDB (%s)!"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "×œ× × ×™×ª×Ÿ ליצור קובץ '%s' (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "×œ× × ×™×ª×Ÿ לפתוח קובץ '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "שולח בקשה ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "×œ× × ×™×ª×Ÿ לשלוח בקשה (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "מקבל × ×ª×•× ×™× ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "השרת החזיר תשובה ×œ× × ×›×•× ×”!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "השרת החזיר תשובה ×œ× × ×›×•× ×”! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "סליחה, ×ל החיפוש מבוסס הרשת כרגע ×œ× ×¤×¢×™×œ!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "נמצ×ו %d ×לבומ(×™×) מת×ימ(×™×)"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "מקבל × ×ª×•× ×™× ×¢×‘×•×¨ עמוד %d ..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "מקבל × ×ª×•× ×™× ×¢×‘×•×¨ עמוד %d ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "העל×ת תוצ×ות נוספות ..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "×œ× × ×‘×—×¨ קובץ!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d ×§×‘×¦×™× × ×‘×—×¨×•!"
+
+#: src/cddb.c:2945
+msgid "Local CD search..."
+msgstr "חיפוש CD מקומי..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr ""
+
+#: src/cddb.c:3231
+#, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "נמצ×ו %d ××œ×‘×•×ž×™× ×ž×ª××™×ž×™× ×œ×ž×–×”×” דיסק '%s'"
+
+#: src/cddb.c:3327
+#, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "×œ× × ×™×ª×Ÿ להעלות קובץ: '%s' (%s)!"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "מעלה ×ת רשימת הרצועות ב×לבו×"
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "כתוב תג מתוך בסיס הנתוני×..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "ערבית (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "ערבית (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "ערבית (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "בלטית (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "בלטית (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "בלטית (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "קלטית (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "מרכז ×ירופה (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "מרכז ×ירופה (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "מרכז ×ירופה (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "סינית מופשטת (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "סינית מופשטת (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "סינית מסורתית (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "סינית מסורתית (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "קירילית (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "קירילית (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "קירילית (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "קירילית (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "קירילית (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "קירילית/רוסית (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "קירילית/×וקר×ינית (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "×נגלית (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "יוונית (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "יוונית (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "עברית (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "עברית (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "יפנית (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "יפנית (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "יפנית (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "קורי×נית (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "נורדית (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "×“×¨×•× ×ירופה (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "ת××™ (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "טורקית (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "טורקית (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "טורקית (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "יוניקוד (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "וי×טנמית (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "ויטנ×מית (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "עברית ויזו×לית (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "מערבי (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "מערבי (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "מערבי (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "מערבי (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "×œ× × ×™×ª×Ÿ להמיר ×ת ×©× ×”×§×•×‘×¥ '%s' ל UTF-8 (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "UTF-8 ×œ× ×ª×§×£"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#. Starting messages
+#: src/easytag.c:177
+#, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "מפעיל ×ת EasyTag %s (מספר תהליך: %d) ..."
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "משתמש בספריית id3lib גרסה %d.%d.%d ..."
+
+#: src/easytag.c:182
+#, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "משתמש בספריית id3lib גרסה %d.%d.%d ..."
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr "המשתנה EASYTAGLANG מוגדר. קובע הגדרות מקומיות: '%s'"
+
+#: src/easytag.c:191
+#, c-format
+msgid "Setting locale : '%s'"
+msgstr "קובע הגדרות מקומיות: '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "משתמש בהגדרות מקומיות '%s' (ולבסוף '%s')..."
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s מ×ת %s (קומפל ב %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "×תר: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr "משתנה ×ו מסלול ×œ× ×™×“×•×¢ '%s'\n"
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "דפדפן"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "קובץ"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "קובץ לקרי××” בלבד"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr ""
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr ""
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, שכבה ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "קצב:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? קילוביט לשניה"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "תדר:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? הרץ"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "מצב:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "גודל:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? קילוביט"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "זמן:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "תג"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "רגיל"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "כותרת:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×›×•×ª×¨×ª זו"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "×ומן:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×ומן ×–×”"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "×לבו×:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ××œ×‘×•× ×–×”"
+
+#. Disc Number
+#: src/easytag.c:642
+msgid "CD:"
+msgstr "דיסק:"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×ž×¡×¤×¨ דיסק ×–×”"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "שנה:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×©× ×” ×–×ת"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr "מספר ×ת הרצועות שנבחרו סדרתית. מתחיל ב 01, לכל תת-תיקייה."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "מספר רצועה:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr "קבע ×ת מספר ×”×§×‘×¦×™× ×‘×ותה תיקייה כמו קובץ ×–×”, עבור הרצועות הנבחרות."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×ž×¡×¤×¨ רצועות ×–×”"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "×–'×נר:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×–'×נר ×–×”"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "הערה:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×”×¢×¨×” זו"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "מלחין:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×ž×œ×—×™×Ÿ ×–×”"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "×מן מקורי:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×ומן מקורי ×–×”"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "זכויות:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×–×›×•×™×•×ª ×לו"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "×תר:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×תר ×ומן ×–×”"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "קודד ע\"י"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×©× ×ž×§×•×“×“ ×–×”"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "תמונות"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "תמונות:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "תוכל לגרור תמונה כדי להוסיף ×ותה לכ×ן."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×¢× ×ª×ž×•× ×•×ª ×לה"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "מחק תמונות נבחרות, ×ו ×ת כולן."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "הוסף תמונות לתג (ניתן ×’× ×œ×’×¨×•×¨ תמונות לכ×ן)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "שמור ×ת התמונות שנבחרו לדיסק הקשיח."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "קבע ×ת התכונות לתמונות שנבחרו."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×”×›×•×ª×¨×ª '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "הכותרת נמחקה ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×”×ומן '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "×”×ומן נמחק ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×”××œ×‘×•× '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "×©× ×”××œ×‘×•× × ×ž×—×§ ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×ž×¡×¤×¨ דיסק '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "מספר הדיסק נמחק ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×©× ×” '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "השנה נמחקה ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×¨×¦×•×¢×” כמו 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ברצועה כמו 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "מספר רצועה נמחקה ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• מוספרו ב×ופן סדרתי."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×–'×נר '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "×”×–'×נר נמחק ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×”×¢×¨×” '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "ההערה נמחקה ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×ž×œ×—×™×Ÿ '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "המלחין נמחק ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×ומן מקורי '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "×”×מן המקורי נמחק ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×–×›×•×™×•×ª '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "הזכויות נמחקו ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×תר '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "×”×תר נמחק ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו ×¢× ×ž×§×•×“×“ '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "×©× ×”×ž×§×•×“×“ נמחק ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "×”×§×‘×¦×™× ×©× ×‘×—×¨×• תויגו בתמונות."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "התמונות נמחקו ×ž×”×§×‘×¦×™× ×©× ×‘×—×¨×•."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "בחר מצב ומסכה, ובצע מחדש ×ת ×ותה הפעולה "
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "כל ×”×ª×’×™× × ×¡×¨×§×•"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "כל ×”×ª×’×™× × ×ž×—×§×•"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "כל ×”×§×‘×¦×™× × ×©×ž×¨×•..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "חלק ×ž×”×§×‘×¦×™× × ×©×ž×¨×•..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "חלק ×ž×”×§×‘×¦×™× × ×ž×—×§×•..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "כל ×”×§×‘×¦×™× × ×ž×—×§×•..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"×”×× ×‘×¨×¦×•× ×š לשמור ×ת תג הקובץ\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "שמור תג..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "שנה ×©× ×§×•×‘×¥ ותיקייה..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"×”×× ×‘×¨×¦×•× ×š לשנות ×ת ×©× ×”×§×•×‘×¥ והתיקייה \n"
+"'%s'\n"
+"×ל \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "שנה ×©× ×ª×™×§×™×™×”..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"×”×× ×‘×¨×¦×•× ×š לשנות ×ת ×©× ×”×ª×™×§×™×™×” \n"
+"'%s'\n"
+"×ל \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "שנה ×©× ×§×•×‘×¥..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"×”×× ×‘×¨×¦×•× ×š לשנות ×ת ×©× ×”×§×•×‘×¥ \n"
+"'%s'\n"
+"×ל \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "שמירת תג לקובץ '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "תג(×™×) נשמרו"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ לכתוב תג בקובץ '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "משנה ×©× ×œ×§×•×‘×¥ '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ לשנות ×ת ×©× ×”×§×•×‘×¥ '%s'\n"
+" ×ל \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "שמות ×”×§×‘×¦×™× ×œ× ×©×•× ×•.."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"×œ× × ×™×ª×Ÿ לשנות ×ת ×©× ×”×§×•×‘×¥ \n"
+"'%s'\n"
+"בגלל שהקובץ ×”×‘× ×›×‘×¨ קיי×:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ ליצור תיקיית יעד\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "×©× ×”×§×•×‘×¥ '%s' שונה ל '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "שמות ×§×‘×¦×™× ×©×•× ×•..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ למחוק ×ת התיקייה הישנה\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "הקובץ '%s' הועבר ל '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "×§×‘×¦×™× ×”×•×¢×‘×¨×•..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ להעביר קובץ '%s'\n"
+" ×ל \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "×§×‘×¦×™× ×œ× ×”×•×¢×‘×¨×•..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"×”×× ×תה ב×מת רוצה למחוק לתמיד ×ת הקובץ\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "מוחק קובץ..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "קובץ '%s' נמחק"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×ת התיקייה :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "החיפוש מתבצע..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "קובץ: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "נמצ×ו %d ×§×‘×¦×™× ×‘×ª×™×§×™×™×” זו ובתיקיות המשנה שלה."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "נמצ×ו %d ×§×‘×¦×™× ×‘×ª×™×§×™×™×” זו."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u קבצי×"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "×œ× × ×ž×¦×ו ×§×‘×¦×™× ×‘×ª×™×§×™×™×” זו ובתיקיות המשנה שלה!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "×œ× × ×ž×¦×ו ×§×‘×¦×™× ×‘×ª×™×§×™×™×” זו!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "מחפש..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr "עצור ×ת החיפוש..."
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "בחר תיקייה לעיון!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "תייג ×ת ×”×§×‘×¦×™× ×©× ×‘×—×¨×• בשדה ×–×”"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "המר '_' ו '%20' לרווחי×"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "המר ' ' ל '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "הכל ב×ותיות גדולות"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "הכל ב×ותיות קטנות"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "×ות ר×שונה גדולה"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "×ות ר×שונה גדולה בכל מילה"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "מחק רווחי×"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "הכנס רווח לפני ×ות גדולה"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "מחק ×¨×•×•×—×™× ×ו ×§×•×™× ×ª×—×ª×•× ×™× ×›×¤×•×œ×™×"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: יצי××” ×œ× ×ž×¡×•×“×¨×ª! (מספר תהליך: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, c-format
+msgid "Received signal %s (%d)"
+msgstr "התקבל סיגנל %s (%d)"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"נר××” שמצ×ת תקלה ב EasyTag. ×× ×, שלח הודעה על השגי××” ×¢× gdb backtrace (הרץ "
+"'gdb easytag core' ו××– 'bt' ו××– 'l') ומידע על ×יך לשחזר ×ת התקלה ל "
+"easytag@gmail.com"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "סיגנל ×œ× ×ž×•×›×¨"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: יצי××” מסודרת."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"חלק ×ž×”×§×‘×¦×™× ×©×•× ×• ×ך ×œ× × ×©×ž×¨×•...\n"
+"×”×× ×‘×¨×¦×•× ×š לשמור ××•×ª× ×œ×¤× ×™ הסיו×?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr "×”×× ×תה ב×מת רוצה ×œ×¡×™×™× ×ת מהתוכנית?"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "תג ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "תג Ogg Vorbis"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "תג FLAC Vorbis"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "תג APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "תג MP4/M4A/AAC"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr "תג Wavpack"
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "קובץ MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "קובץ MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "קובץ Ogg Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "הקובץ הב×"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "קובץ FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "קובץ MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "קובץ Monkey's Audio"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "קובץ MP4/AAC"
+
+#: src/et_core.c:2599
+msgid "Wavpack File"
+msgstr "קובץ Wavpack"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "תמונות"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d קילוביט לשנייה"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d הרץ"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "×ª×¨×’×•× ×©× ×§×•×‘×¥"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "×‘×©× ×”×§×•×‘×¥ '%s' יש יותר מ%d ×ª×•×™× ×•×œ×›×Ÿ יקוצץ!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "מקודד:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "ערוצי×:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "שגי××” בפתיחת קובץ: '%s' כקובץ FLAC (%s)."
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "שגי××”: כתיבת ההערות לקובץ נכשלה '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "התג נכתב לקובץ '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "התג נמחק מהקובץ '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "שגי××” במחיקת תג מסוג ID3v1 בקובץ '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "שגי××” במחיקת תג מסוג ID3v2 בקובץ '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "שגי×ב בעדכון תג מסוג ID3v2 בקובץ '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"ניסית לשמור ×ת תג ×”×–×” כיוניקוד, ×בל בספריה id3lib שמותקנת יש תקלה.\n"
+"×× ×ª×¢×œ×” ×ת הקובץ ×”×–×” מחדש, יכול להיות ×©×ª×•×™× ×ž×¡×•×™×ž×™× ×œ× ×™×•×¦×’×• כר×וי...×× ×, "
+"×™×™×©× ×ת הפ××¥' המתקן ×ת התקלה בid3lib בsrc/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"- תוכל ×œ×ž×¦×•× ×ותו בקבצי המקור של EasyTag.×©×™× ×œ×‘ שהודעה זו תופיע ×¤×¢× ×חת "
+"בלבד!\n"
+"קובץ : %s"
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "שגי××” בעדכון תג מסוג ID3V1 בקובץ '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "התג בקובץ '%s' עודכן"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "×œ× ×“×•×•×—×• שגי×ות"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "×ין די זכרון"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "×ין × ×ª×•× ×™× ×œ×¢×™×‘×•×“"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "× ×ª×•× ×™× ×œ× ×ž×¡×•×“×¨×™× ×›×¨×וי"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "×ין מחיצה לכתוב ×ליה"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "מחיצה קטנה מדי"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "מזהה ×” frame ×œ× ×ª×§×£"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "השדה ×œ× × ×ž×¦×"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "סוג שדה ×œ× ×ž×•×›×¨"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "התג כבר × ×ž×¦× ×‘×§×•×‘×¥"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "גרסה ×œ× ×ª×§×¤×” של התג"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "×ין קובץ לעיבוד"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "מנסה לכתוב לקובץ לקרי××” בלבד"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "שגי××” בדחיסה/פריסה"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "שגי××” ×œ× ×ž×•×›×¨×ª!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"כיוון שהקובץ המושחת הב×: '%s'\n"
+"ייצור שגי××” ב id3lib, ×”×•× ×œ× ×™×¢×•×‘×“ ×¢\"×™ התוכנית."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "קובץ מושחת..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr "יומן"
+
+#: src/misc.c:211
+msgid " OK "
+msgstr "בסדר"
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr "כן"
+
+#: src/misc.c:221
+msgid " No "
+msgstr "ל×"
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr "החל"
+
+#: src/misc.c:231
+msgid " Save "
+msgstr "שמור"
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr "בטל"
+
+#: src/misc.c:241
+msgid " Close "
+msgstr "סגור"
+
+#: src/misc.c:246
+msgid " Write "
+msgstr "כתוב"
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr "בצע"
+
+#: src/misc.c:256
+msgid " Search "
+msgstr "חפש"
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "עיין..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "בחר תיקייה..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "בחר קובץ..."
+
+#: src/misc.c:886
+msgid "Warning..."
+msgstr "×זהרה..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr "×œ× ×ž×•×’×“×¨ נגן"
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "×œ× × ×™×ª×Ÿ להריץ %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "בייטי×"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "קילובייט"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "מגהבייט"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "ג'יגהבייט"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "טרהבייט"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "ייצר רשימת השמעה"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "×©× ×¨×©×™×ž×ª ההשמעה מסוג M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "השתמש ×‘×©× ×”×ª×™×§×™×™×”"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "ערוך מסכות"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "×פשרויות רשימת השמעה"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "כלול רק ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™×"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"×× ×ž×•×¤×¢×œ, רק ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×™×™×›×ª×‘×• לרשימת ההשמעה, ×חרת, כל ×”×§×‘×¦×™× ×™×™×›×ª×‘×•."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "השתמש במסלול ×ž×œ× ×œ×§×‘×¦×™× ×‘×¨×©×™×ž×ª ההשמעה"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "השתמש במסלול יחסי ×œ×§×‘×¦×™× ×‘×¨×©×™×ž×ª ההשמעה"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "צור רשימת השמעה בתיקיית ×”×ב"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr "×× ×ž×•×¤×¢×œ, רשימת ההשמעה תיוצר בתיקיית ×”×ב."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "השתמש במפריד תיקייות של DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr "×פשרות זו מחליפה ×ת מפריד התיקיות של UNIX - '/' בזה של DOS - '\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "תוכן רשימת ההשמעה"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "כתוב רק ×ת רשימת הקבצי×"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "כתוב מידע מתוך ×©× ×”×§×•×‘×¥"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "כתוב מידע מתוך:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"קובץ רשימת ההשמעה '%s' כבר קיי×!\n"
+"לשכתב?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "כתוב רשימת השמעה..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ לכתוב ×ת קובץ רשימת ההשמעה '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "רשימת ההשמעה נכתבה '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "דיסק"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "רצועה"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "הערה"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "מלחין"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "×מן מקורי"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "זכויות"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "×תר"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "קודד ע\"י"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "חפש קובץ"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr "כתוב ×ת המילה שברצונך לחפש בקבצי×. ×× ×œ× ×ª×¨×©×•× ×›×œ×•×, יוחזרו כל הקבצי×."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "בתוך :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "×©× ×”×§×•×‘×¥"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "התג"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "הבחנה בין ×ותיות גדולות לקטנות"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "נמצ×ו: %d קבצי×"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "העלה ×ת שמות ×”×§×‘×¦×™× ×ž×ª×•×š קובץ TXT"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "קובץ :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " העלה"
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "תוכן הקובץ שהועלה :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "רשימת שמות ×”×§×‘×¦×™× :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "הכנס שורה ריקה"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "מחק שורה זו"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "מחק ×ת כל השורות הריקות"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "טען מחדש"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "פרופיל:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "קול"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "×œ× ×™×“×•×¢"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "התסדיר MP4 ×ינו תקף"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d קילוביט לשניה"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr "סטרי×ו"
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr "סטרי×ו משולב"
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr "ערוץ כפול"
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr "ערוץ יחיד"
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "חזור על הפעולה בש×ר הקבצי×"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr ""
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr ""
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "הוסף תמונות"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "כל הקבצי×"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG וכן JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "תכונות התמונה %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "סוג התמונה"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "תי×ור התמונה:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "שמור תמונה %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"הקובת ×”×‘× ×›×‘×¨ ×§×™×™× :\n"
+"'%s'\n"
+"לשכתב?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "שמור קובץ..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "תמונת JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "תמונת PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "תמונה ×œ× ×ž×•×›×¨×ª"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "צלמית PNG בגודל 32x32 פיקסלי×"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "צלמית ×חרת"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "עטיפה קדמית"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "עטיפה ×חורית"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "עמוד חוברת"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "מדיה (למשל התוית על הדיסק)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "×ומן מוביל/מבצע מוביל/מבצע סולו"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "×ומן/מבצע"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr ""
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "להקה/תזמורת"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "כותב המילי×"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "×ž×™×§×•× ×”×”×§×œ×˜×”"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "בזמן ההקלטה"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "בזמן ההופעה"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "תמונת מתוך סרט"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "דג ×‘×¦×‘×¢×™× ×‘×”×™×¨×™×"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "×ילוסטרציה"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "לוגו של הלהקה/×ומן"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "לוגו מפיץ/סטודיו"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "סוג תמונה ×œ× ×™×“×•×¢"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "פיקסלי×"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "סוג"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "תי×ור"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "מעלה ×ת קובץ התמונה..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"×œ× × ×™×ª×Ÿ לפתוח קובץ :\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "קובץ התמונה ×œ× ×”×•×¢×œ×”..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "העדפות..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "דפדפן קבצי×"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "עבור לתיקיית ברירת המחדל"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "חפש בתיקיות משנה"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "חפש ×§×‘×¦×™× ×‘×ª×™×§×™×•×ª משנה בקרי×ת תיקייה לתוך ×¢×¥ התיקיות"
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "הר××” תיקיות משנה בבחירת תיקייה"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "חפש תיקיות חבויות"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "חפש ×§×‘×¦×™× ×‘×ª×™×§×™×•×ª חבויות (תיקיות ששמן מתחיל ב'.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "ממשק משתמש"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "הר××” ×ת המידע בכותרת הקובץ"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "הצג רשימת ×§×‘×¦×™× ×©×©×•× ×• ב×מצעות :"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "צבע ×דו×"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "סגנון מודגש"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "×פשרויות מיון רשימה"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "מיון רשימה ע\"י :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "×©× ×§×•×‘×¥ עולה"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "×©× ×§×•×‘×¥ יורד"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "מספר רצועה עולה"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "מספר רצועה יורד"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "זמן יצירה עולה"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "זמן יצירה יורד"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "כותרת בסדר עולה"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "כותרת בסדר יורד"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "×ומן בסדר עולה"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "×ומן בסדר יורד"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "××œ×‘×•× ×‘×¡×“×¨ עולה"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "××œ×‘×•× ×‘×¡×“×¨ יורד"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "שנה בסדר עולה"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "שנה בסדר יורד"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "×–'×נר בסדר עולה"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "×–'×נר בסדר יורד"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "הערה בסדר עולה"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "הערה בסדר יורד"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "בחר ×ת סוג המיון בהעל×ת תיקייה."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "×ž×™×§×•× ×—×œ×•×Ÿ הודעות"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "×œ×œ× ×ž×™×§×•× ×ž×¡×•×™×"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "תן למנהל החלונות לקבוע ×ת המיקו×."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "במרכז החלון הר×שי"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "החלונות ימוקמו במרכז החלון הר×שי."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "מרכז המסך"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "החלונות ימוקמו במרכז המסך."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "×ž×™×§×•× ×”×¢×›×‘×¨"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "החלונות ימוקמו לפי מצביע העכבר."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr ""
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "הנגן ×ותו יש להריץ :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "הגדרות קבצי×"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "×פשרויות קבצי×"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "הפוך ×ת סיומת הקובץ ל :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "×ותיות קטנות"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "לדוגמ×, הסיומת תומר ל '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "×ותיות גדולות"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "לדוגמ×, הסיומת תהפוך ל '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "×œ×œ× ×©×™× ×•×™"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "הסיומת ×œ× ×ª×©×ª× ×”"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "שמר ×ת זמן השינוי של הקובץ"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "קידוד ×ª×•×™× ×œ×©× ×”×§×•×‘×¥"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "נסה קידוד ×חר"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "הגדרות תגי×"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "×פשרויות תגי×"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "השלמה ×וטומטית של הת×ריך ×× ×ינו של×"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "×¨×©×•× ×ת שדה מספר הרצועה ×¢× ×ž×¡×¤×¨ הספרות ×”×‘× :"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr ""
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr ""
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "הגדרות ×ª×’×™× ×ž×¡×•×’ ID3"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "×—×•×§×™× ×œ×ª×’×™× ×ž×¡×•×’ ID3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr ""
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr ""
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr ""
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "כתוב תג ID3V2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "קידוד ×ª×•×™× ×¢×‘×•×¨ תגי ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "כתוב תג ID3V2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "כתוב תג ID3V2"
+
+#: src/prefs.c:698
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "תי×ור:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "יוניקוד (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "קודד ע\"י"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr ""
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr "ל×"
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "תג ID3"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr ""
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+
+#: src/prefs.c:835
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr ""
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "קידוד ×ª×•×™× ×¢×‘×•×¨ תגי ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr ""
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "סורק"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "סורק למילוי ×ª×’×™× - המרת תוי×"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "המר קו תחתי '_' ו×ת המחרוזת '%20' לרווח - ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "המר ×¨×•×•×—×™× ' ' לקו תחתי '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "סורק לשינוי שמות ×§×‘×¦×™× - המרת תוי×"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "סורק לעיבוד שדות - המרת תוי×"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "חלון הסורק"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "פתח ×ת חלון הסורק ב×תחול"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "חלון הסורק תמיד למעלה"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "שדות"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "שכתב שדות בסריקת תג"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "קבע ×ת הטקסט ×”×‘× ×›×”×¢×¨×ª ברירת מחדל :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "בסיס × ×ª×•× ×™× ×©×œ הדיסקי×"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr ""
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "×©× :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "פורט :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "מסלול CGI :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "הגדרות שרת לחיפוש ידני"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+msgid "Local CD Data Base"
+msgstr "חיפוש בבסיס × ×ª×•× ×™× ×ž×§×•×ž×™"
+
+#: src/prefs.c:1203
+msgid "Path :"
+msgstr "מסלול :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "הגדרות פרוקסי"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "השתמש בפרוקסי"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr ""
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "×©× ×ž×רח :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "×©× ×©×¨×ª הפרוקסי."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "הפורט של שרת הפרוקסי."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "×©× ×ž×©×ª×ž×© :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "×©× ×”×ž×©×ª×ž×© בשרת הפרוקסי."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "×¡×™×¡×ž× :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "×”×¡×™×¡×ž× ×©×œ המשתמש בשרת הפרוקסי."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "רשימת שמות רצועות"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"השתמש ב××œ×’×•×¨×™×ª× ×œ×‘× ×©×˜×™×™×Ÿ (DLM) להת×מת שורות (×©× ×¨×¦×•×¢×”) ×¢× ×§×‘×¦×™ הקול (×©× ×§×•×‘×¥)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "×ישור"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "×ישור לפני ×¡×™×•× ×”×ª×•×›× ×™×ª"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr "×× ×ž×•×¤×¢×œ, פותח חלון לקבלת ×ישור לפני ×¡×™×•× ×”×ª×•×›× ×™×ª."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "×ישור כתיבת תג לקובץ"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "×ישור שינוי ×©× ×œ×§×•×‘×¥"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "×ישור מחיקת קובץ"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "×ישור כתיבת רשימת השמעה"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "החל ×©×™× ×•×™×™× (×ך ×ל תשמור) וסגור חלון ×–×”"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "סגור חלון זה בלי לשמור"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "שמור ×©×™× ×•×™×™× ×•×¡×’×•×¨ חלון ×–×”"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(×“×•×’×ž× : %.*d_-_Track_name_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "×”×©×™× ×•×™×™× ×”×•×—×œ×•"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "ההגדרות נשמרו"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "ההגדרות ×œ× ×”×©×ª× ×•"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "×œ× ×ª×™×§×™×™×”"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת הנגן '%s'!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "×ž×œ× ×ª×’"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "שנה ×©× ×§×•×‘×¥ ותיקייה"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "עבד שדות"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "×ª×’×™× × ×¡×¨×§×• בהצלחה..."
+
+#: src/scan.c:352
+#, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "×ª×’×™× × ×¡×¨×§×• בהצלחה...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr "סורק תגי×: מוזר..., הסיומת '%s' ×œ× × ×ž×¦××” בקובץ '%s'!"
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "שגי×ת סריקה: ×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת המפריד '%s' בתוך '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "×©× ×§×•×‘×¥ חדש נסרק בהצלחה..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "×©× ×§×•×‘×¥ חדש נסרק בהצלחה...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "סורק ×ª×’×™× ×•×©×ž×•×ª קבצי×"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "סורק:"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "בחר ×ת סוג הסורק לשימוש"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "פתח ×ת חלון הסורק / סרוק ×ת ×”×§×‘×¦×™× ×©× ×‘×—×¨×•"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "×פשרויות סורק"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "הצג / ×”×—×‘× ×ת עורך המסכות"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "הצג / ×”×—×‘× ×ž×§×¨×"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "סגור חלון זה"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"בחר ×ת סוג המסכה בעזרת ×”×§×•×“×™× (ר××” מקר×) לעיבוד ×©× ×”×¨×•×‘×¥ והמסלול. בשימוש "
+"למילוי שדות התגי×."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "תצוגה מקדימה של מילוי התגי×..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr ""
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "תצוגה מקדימה לשינוי הש×..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "בחר שדות:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "ק"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "עבד ×ת שדה ×©× ×”×§×•×‘×¥"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "×›"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "עבד ×ת שדה הכותרת"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "×ו"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "עבד ×ת שדה ×”×ומן"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "×ל"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "עבד ×ת שדה ×”×לבו×"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "×–"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "עבד ×ת שדה ×”×–'×נר"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "×”"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "עבד ×ת שדה ההערה"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "מ"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "עבד ×ת שדה המלחין"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "מק"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "עבד ×ת שדה ×”×ומן המקורי"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "×–×›"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "עבד ×ת שדה הזכויות"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "×ת"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "עבד ×ת שדה ×”×תר"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "מק"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "עבד ×ת שדה המקודד"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "הפוך בחירה"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "בחר/בטל הכל."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "המר '_' ו'%20' ל' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "המר:"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "×ל:"
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "החלף תו בתו ×חר."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "הכנס רווח לפני ×ות גדולה"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "מחק ×¨×•×•×—×™× ×ו ×§×•×™× ×ª×—×ª×™×™× ×›×¤×•×œ×™×"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "מקר×"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : ×ומן"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : ×לבו×"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : הערה"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : מלחין"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : זכויות"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : מספר דיסק"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : מקודד ע\"י"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : ×–'×נר"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ignored"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : מספר הרצועות"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : ×ומן מקורי"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : רצועה"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : כותרת"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : ×תר"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : שנה"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "עורך מסכות"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "צור מסכה חדשה"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "הזז מסכה זו למעלה"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "הזז מסכה זו למטה"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "שכפל מסכה"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "הוסף מסכות ברירת מחדל"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "מחק מסכה"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "שמור מסכות"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr ""
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "העתקה: ×œ× × ×‘×—×¨×” שורה!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "מחיקה: ×œ× × ×‘×—×¨×” שורה!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "העלה: ×œ× × ×‘×—×¨×” שורה!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "הורד: ×œ× × ×‘×—×¨×” שורה!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "שגי××”: ×œ× × ×™×ª×Ÿ לכתוב לקובץ ההגדרות: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "×œ× × ×™×ª×Ÿ לפתוח קובץ הגדרות '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "מעלה הגדרות ברירת מחדל..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "×œ× × ×™×ª×Ÿ ליצור ×ו לפתוח קובץ '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "שגי××”: ×œ× × ×™×ª×Ÿ לכתוב רשימה לקובץ: %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "מעלה ×ת מסכות ברירת המחדל למילוי תגי×..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "מעלה ×ת מסכות ברירת המחדל לשינוי שמות קבצי×..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "מעלה ×ת מסכות ברירת המחדל לשינוי תיקייה..."
+
+#: src/setting.c:1589
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr "שגי××”: משתנה הסביבה HOME ×ינו מוגדר"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "שגי××”: ×œ× × ×™×ª×Ÿ ליצור תיקייה '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr ""
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr ""
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr ""
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr ""
+
+#: src/vcedit.c:341
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr ""
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr ""
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr ""
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr ""
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, c-format
+msgid "Audio player: '%s'"
+msgstr "נגן: '%s'"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr "תיקיית ההגדרות של EasyTag: '%s'"
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "גרסה ×œ× ×ª×§×¤×” של התג"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "יוניקוד (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "יוניקוד (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "יוניקוד (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "השתמש בריפוד"
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "שמור תמיד בקידוד ISO-8859-1"
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr "נסה לשמור בקידוד ISO-8859-1. ×× ×œ× ×פשרי, ××– יוניקוד (מומלץ)"
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "תמיד שמור ×ª×’×™× ×‘×™×•× ×™×§×•×“."
+
+#~ msgid "Do nothing"
+#~ msgstr "×ל תעשה כלו×"
+
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "שגי××” בפתיחת הקובץ: '%s' (%s)"
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "טען ×ת התיקייה בזמן עלייה"
diff --git a/po/hu.gmo b/po/hu.gmo
new file mode 100644
index 0000000..ef2b403
--- /dev/null
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..f5583d5
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,5157 @@
+# Hungarian catalog for EasyTAG.
+# Copyright (C) 2001-2005, 2006 Free Software Foundation, Inc.
+# Szel Miklos <mukka@freemail.hu>, 2001.
+# Nagy Boldizsar <boldi01@freemail.hu>, 2002, 2003, 2004.
+# Mészáros Csaba <csablak@freemail.hu>, 2005, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: easytag-1.99.13\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2006-12-28 22:10+0100\n"
+"Last-Translator: Mészáros Csaba\n"
+"Language-Team: <hu@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+"Az EasyTag egy GTK+-on alapuló ID3 MP3 címkeszerkesztõ program MP3, MP2, "
+"FLAC, Ogg Vorbis, MP4/AAC, MusePack és Monkey audio fájlokhoz. Könnyen "
+"áttekinthetõ felülete egyszerûvé teszi a címkékkel kapcsolatos munkát.\n"
+"Magyar fordítás: Nagy Boldizsár <boldi01@freemail.hu>\n"
+"Szél Miklós <mukka@freemail.hu>\n"
+"Mészáros Csaba <csablak@freemail.hu>"
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Német fordítás)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Orosz fordítás)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Holland fordítás)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Svéd fordítás)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Magyar fordítás)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Olasz fordítás)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Japán fordítás)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Ukrán fordítás)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Cseh fordítás)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Spanyol fordítás)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Lengyel fordítás)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Román fordítás)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Dán fordítás)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Görög fordítás)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Brazil és Portugál fordítás)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(Bulgár fordítás)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(Kínai fordítás)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Görög fordítás)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Névjegy..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Névjegy"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(Készült: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(gtk+ %d.%d.%d és id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(MP3 fájl támogatás nem elérhetõ)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(MP3 fájl támogatás nem elérhetõ)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(MP3 fájl támogatás nem elérhetõ)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(MP3 fájl támogatás nem elérhetõ)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Ogg Vorbis fájl támogatás nem elérhetõ)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(MP3 fájl támogatás nem elérhetõ)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(FLAC fájl támogatás nem elérhetõ)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(MP4/AAC fájl támogatás nem elérhetõ)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(MP3 fájl támogatás nem elérhetõ)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Szerzõ: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Honlap: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Leírás:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Köszönet"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Fordítások:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Általános:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Módosítások"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "'%s' (%s) fájl megnyitása sikertelen!"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "Hiba a '%s' (%s) fájl megnyitása közben."
+
+# Menüsor
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Fájl"
+
+# Fájl menü
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Lista _rendezése címkemezõk szerint"
+
+# Fájl menü
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Lista r_endezése tulajdonság szerint"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Fájlnév szerint növekvõen"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Fájlnév szerint csökkenõen"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Létrehozás idõpontja szerint növekvõen"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Létrehozás idõpontja szerint csökkenõen"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Sorszám szerint növekvõen"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Sorszám szerint csökkenõen"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Cím szerint növekvõen"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Cím szerint csökkenõen"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Elõadó szerint növekvõen"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Elõadó szerint csökkenõen"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Album szerint növekvõen"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Album szerint csökkenõen"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Év szerint növekvõen"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Év szerint csökkenõen"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Mûfaj szerint növekvõen"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Mûfaj szerint csökkenõen"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Megjegyzés szerint növekvõen"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Megjegyzés szerint csökkenõen"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Szerzõ szerint növekvõen"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Szerzõ szerint csökkenõen"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Eredeti elõadó szerint növekvõen"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Eredeti elõadó szerint csökkenõen"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Kiadó szerint növekvõen"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Kiadó szerint csökkenõen"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "URL szerint növekvõen"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "URL szerint csökkenõen"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Kódoló neve szerint növekvõen"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Kódoló neve szerint csökkenõen"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Fájltípus szerint növekvõen"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Fájltípus szerint csökkenõen"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Fájlméret szerint növekvõen"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Fájlméret szerint csökkenõen"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Idõtartam szerint növekvõen"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Idõtartam szerint csökkenõen"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Bitráta szerint növekvõen"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Bitráta szerint csökkenõen"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Minõség szerint növekvõen"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Minõség szerint csökkenõen"
+
+# Fájl menü
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Me_gnyitás ezzel..."
+
+# Fájl menü és bubble help egyben!
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "_Minden fájl kijelölése"
+
+# Fájl menü és bubble help egyben
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "_Kijelölés megszüntetése"
+
+# Fájl menü
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "K_ijelölés megfordítása"
+
+# Fájl menü
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Fájlok _törlése"
+
+# Fájl menü
+#: src/bar.c:193
+msgid "_First File"
+msgstr "El_sõ fájl"
+
+# ikon megjegyzés
+#: src/bar.c:193
+msgid "First File"
+msgstr "Elsõ fájl"
+
+# Fájl menü
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "Elõ_zõ fájl"
+
+# ikon megjegyzés
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Elõzõ fájl"
+
+# Fájl menü
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "Kö_vetkezõ fájl"
+
+# ikon megjegyzés
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Következõ fájl"
+
+# Fájl menü
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "Ut_olsó fájl"
+
+# ikon megjegyzés
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Utolsó fájl"
+
+# Fájl menü
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "_Fájlok feldolgozása"
+
+# ikon megjegyzés
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Módosítások beillesztése, a kijelölt helyekre."
+
+# Fájl menü
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Címkék eltávolítása"
+
+# ikon megjegyzés
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Címkék eltávolítása"
+
+# Fájl menü
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "Fá_jlmódosítások visszavonása"
+
+# Fájl menü
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Fáj_lmódosítások visszavonása"
+
+# Fõ menü
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "Fáj_lmódosításokat mégis"
+
+# ikon megjegyzés
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Fájlmódosításokat mégis"
+
+# Fõ menü
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "Fájlok me_ntése"
+
+# ikon megjegyzés
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Fájlok mentése"
+
+# Fájl menü
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "Fájlok kén_yszerített mentése"
+
+# ikon megjegyzés
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Fájlok kényszerített mentése"
+
+# Fájl menü
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "_Utolsó változtatást vissza"
+
+# ikon megjegyzés
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Utolsó változt_atást mégis"
+
+# Fõ menü
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "Kilé_pés"
+
+# ikon megjegyzés
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Kilépés"
+
+# Menüsor
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Böngészõ"
+
+# Böngészõ menü
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "_Ugrás a kezdõ könyvtárra"
+
+# ikon megjegyzés
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Ugrás a kezdõ könyvtárra"
+
+# Böngészõ menü
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "U_grás az alapértelmezett könyvtárra"
+
+# Ikon megjegyzés
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Ugrás az alapértelmezett könyvtárra"
+
+# Böngészõ menü
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "_Aktuális könyvtár alapértelmezetté tétele"
+
+# ikon megjegyzés
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Aktuális könyvtár alapértelmezetté tétele"
+
+# böngészõ menü
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Fa_struktúra nézet | Elõadó-Album nézet"
+
+# böngészõ menü
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "_Könyvtár átnevezése..."
+
+# böngészõ menü
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Kö_nyvtár újratöltése"
+
+# böngészõ menü
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Kön_yvtár böngészés külsõ programmal..."
+
+# böngészõ menü
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "Könyvtárfát _bezár"
+
+# böngészõ menü
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "Könyvtárfát _frissít"
+
+# Menüsor
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "Fel_dolgozó"
+
+# feldolgozó menü
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Mezõk kitöltése..."
+
+# ikon megjegyzés
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Mezõk kitöltése"
+
+# feldolgozó menü
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "Á_tnevezés..."
+
+# ikon megjegyzés
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Átnevezés..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "Me_zöfeldolgozás..."
+
+# feldolgozó menü
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Mezöfeldolgozás..."
+
+# Menüsor
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Egyéb"
+
+# egyéb menü
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "_Fájl keresése..."
+
+# ikon megjegyzés
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Fájl keresése..."
+
+# egyéb menü
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "CDD_B keresés..."
+
+# ikon megjegyzés
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB keresés..."
+
+# egyéb menü
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Fájlnevek _betöltése TXT-bõl..."
+
+# egyéb menü
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "M3u _listafájl írása..."
+
+# egyéb menü
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "_Zene lejátszó futtatása"
+
+# Menüsor
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "Beállításo_k"
+
+# beállítások menü
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Tulajdonságok..."
+
+# ikon megjegyzés
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Tulajdonságok..."
+
+# Menüsor
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Súgó"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Névjegy"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Folyamatban levõ mûvelet megszakítása"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "fájlnév beállítások"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Fájl keresése CDDB adatbázisban..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+# böngészõ menü
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "A_lkönyvtárak böngészése"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "_Rejtett könyvtárak megjelenítése"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Fastruktúra nézet / Elõadó és Album nézet"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Összevonás nem lehetséges %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Futtatásra kész..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Új alapértelmezett könyvtár kiválasztva"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Figyelem1x"
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Néhány fájl megváltozott\n"
+"Szeretné menteni a változásokat?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"A megadott elérési út helytelen:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Hiba!"
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<Minden albums>"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Hiba a kereséskor: %s nem található %s útvonalon."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Elõadó"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Albumok"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Fájlok"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Ugrás a szülõ könyvtárba"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Adja meg az átvizsgálandó könyvtárat."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Fastruktúra"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Elõadó & Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Könyvtár átnevezése"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "%s - könyvtár átnevezése"
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Használandó maszk :"
+
+# bubblehelp
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "Ha aktíválja, a könyvtár a beállított maszkkal lesz átnevezve."
+
+# bubblehelp
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Válassza ki a megfelelõ maszkot, vagy írjon egy újat a könyvtár "
+"átnevezéséhez."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Hibás feldolgozómaszk"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Könyvtár átnevezés elõnézet..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Meg kell adnia a könyvtár nevét!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"A konvertálás sikertelen. %s fájlnév kódolva. Kérem használjon más nevet."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Az átnevezés sikertelen. Ez a név már létezik!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Az átnevezés sikertelen!\n"
+"Errõl: '%s'\n"
+"Erre: '%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Könyvtár átnevezve"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Futtatandó program:"
+
+# bubble help?
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Adja meg a futtatandó programot. Az aktuális könyvtárat fogja megkapni "
+"paraméterként."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Megnyitás ezzel..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Adja meg a futtatandó programot. Az aktuális fájlt fogja megkapni "
+"paraméterként."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Meg kell adnia a program nevét!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "A %s program nem található!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "'%s'-t nem lehet futtatni. %d hiba!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Egy másik folyamatot nem sikerült leválasztani!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "A futtatott parancs : '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Elõadó / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Kategória"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Sáv neve"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Idõtartam"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "CDDB keresés"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Automatikus keresés"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "CD adatbázis lekérése:"
+
+# bubble help
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr "Az automatikus kereséshez szükség van egy adatbázis szerverre."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Keresés leállítása"
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+# bubble help
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Ha ez az opció aktív, a betöltés után a címkék az aktuális mezõkkel lesznek "
+"kitöltve."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Kézi keresés"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Keresendõ elem:"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Írja be a keresendõ eleme(ke)t szóközzel elválasztva egymástól."
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Ahol keres:"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Minden mezõben"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Egyéb"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Minden kategóriában"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Klasszikus"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Egyéb"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Új hullám"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Filmzene"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "beleértve a funk, soul, rap, pop, industrial, metal, stb mûfajokat is."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "filmek, tv mûsorok"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "egyéb fel nem sorolt kategóriák is."
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr "Kategóriák"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Eredmények"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Keresendõ elem:"
+
+# bubble help
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Írja be a keresendõ elemet."
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Lefelé keres"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Felfelé keres"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "Csak a piros (vagy vastag) sorokat / Minden sort"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Kijelölés megszüntetése"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Kijelölés megfordítása"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Minden sor kijelölése"
+
+# bubble help
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Válassza ki a feldolgozandó fájlokat. Ha semmit nem választ ki, minden sor "
+"fel lesz dolgozva."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Lekérés tartalma"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "MInden mezõ"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Fájl neve"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Cím"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Év"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Sáv #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# Sáv"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Mûfaj"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Az aktuális feldolgozó futtatása a kijelölt fájlokon"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Ha ezt a lehetõséget választja, a Levenshtein algoritmus (DLM: Damerau-"
+"Levenshtein Metric) a CDDB címet összeveti az összes fájlnévvel az aktuális "
+"könyvtárban, és kiválasztja a legjobb párosítást. A megfelelõ audio fájlok "
+"kiválasztásánál és a cddb eredmények alkalmazásakor a direkt pozíció sorrend "
+"helyett is ezt fogja használni."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Kijelölt sorok betöltése. (Ha nincs kjelölés mind betöltõdik)"
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Keresésre kész..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album: '%s', elõadó: '%s', hossz: '%s', év: '%s', mûfaj: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Kijelölés megfordítása"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Lista rendezése sorszám szerint"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Rendezés név szerint"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "%s név feloldása"
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "'%s' (%s) névfeloldása sikertelen!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "(%s) létrehozása sikertelen!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Kapcsolódás ide '%s', port '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Sikertelen kapcsolódás a '%s' (%s) helyhez!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Kapcsolódás a %s szerverhez"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Adatok fogadása (%s)"
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Hibás válasz a (%s) cddb lehívásakor!"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "A '%s' (%s) fájl létrehozása sikertelen."
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "'%s' (%s) fájl megnyitása sikertelen!"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Kérés küldése"
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "(%s) kérés küldése sikertelen!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Adatok fogadása..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "A szerver hibás választ küldött!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "A szerver (%s) hibás választ küldött!"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Sajnáljuk, de a web-bázisú keresõ jelenleg nem mûködik!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "%d darab egyezõ albumot találtam."
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Adatok fogadása (%d)"
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Adatok fogadása (%d)"
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "További eredmények letöltése"
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Nincs kijelölt fájl!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d fájl kijelölve!"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Keresésre kész..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Adatküldés szükséges (CddbId: %s, #sáv: %d, Lemez hossz: %d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "%d darab egyezõ albumot találtam."
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "'%s' (%s) fájl megnyitása sikertelen!"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Az album számcímeinek betöltése ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Legyen óvatos ezzel az opcióval. A %d sorok a CDDB %d eredményeknél vannak "
+"kilistázva!\n"
+"\n"
+"Folytatja?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Címke írása CDDB-bõl..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arab (IBM-864)"
+
+# src/trans.h:230
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arab (ISO-8859-6)"
+
+# src/trans.h:231
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arab (Windows-1256)"
+
+# src/trans.h:229
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Balti (ISO-8859-13)"
+
+# src/trans.h:230
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Balti (ISO-8859-4)"
+
+# src/trans.h:231
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Balti (Windows-1257)"
+
+# src/trans.h:232
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Kelta (ISO-8859-14)"
+
+# src/trans.h:233
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Közép-európai (IBM-852)"
+
+# src/trans.h:234
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Közép-európai (ISO-8859-2)"
+
+# src/trans.h:236
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Közép-európai (Windows-1250)"
+
+# src/trans.h:238
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Egyszerûsített kínai (GB18030)"
+
+# src/trans.h:237
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Egyszerûsített kínai (GB2312)"
+
+# src/trans.h:240
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Hagyományos kínai (Big5)"
+
+# src/trans.h:240
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Hagyományos kínai (Big5-HKSCS)"
+
+# src/trans.h:243
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirill (IBM-855)"
+
+# src/trans.h:244
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirill (ISO-8859-5)"
+
+# src/trans.h:245
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirill (ISO-IR-111)"
+
+# src/trans.h:243
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirill (KOI8-R)"
+
+# src/trans.h:246
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirill (Windows-1251)"
+
+# src/trans.h:247
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Cirill/Orosz (CP-866)"
+
+# src/trans.h:248
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Cirill/Ukrán (KOI8-U)"
+
+# src/trans.h:293
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Angol (US-ASCII)"
+
+# src/trans.h:250
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Görög (ISO-8859-7)"
+
+# src/trans.h:252
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Görög (Windows-1253)"
+
+# src/trans.h:274
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Héber (IBM-862)"
+
+# src/trans.h:252
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Héber (Windows-1255)"
+
+# src/trans.h:254
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japán (EUC-JP)"
+
+# src/trans.h:255
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japán (ISO-2022-JP)"
+
+# src/trans.h:256
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japán (Shift_JIS)"
+
+# src/trans.h:257
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Koreai (EUC-KR)"
+
+# src/trans.h:258
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Északi (ISO-8859-10)"
+
+# src/trans.h:260
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Dél-európai (ISO-8859-3)"
+
+# src/trans.h:261
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+# src/trans.h:262
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Török (IBM-857)"
+
+# src/trans.h:263
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Török (ISO-8859-9)"
+
+# src/trans.h:265
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Török (Windows-1254)"
+
+# src/trans.h:267
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+# src/trans.h:269
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnámi (VISCII)"
+
+# src/trans.h:271
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnámi (Windows-1258)"
+
+# src/trans.h:272
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Héber (ISO-8859-8)"
+
+# src/trans.h:274
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Nyugati (IBM-850)"
+
+# src/trans.h:275
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Nyugati (ISO-8859-1)"
+
+# src/trans.h:276
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Nyugati (ISO-8859-15)"
+
+# src/trans.h:278
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Nyugati (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "A '%s' fájlnév konvertálása a (%s) UTF-8 részbe sikertelen!\n"
+
+# src/trans.h:267
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "Érvénytelen Unicode (UTF-8)"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr "A '%s' UTF-8 rész (%s) fájlnévbe való konvertálása sikertelen.\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "A '%s' szöveg konvertálása a (%s) UTF-8 részbe sikertelen!\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "EasyTAG indítása %s (PId: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Az id3lib %d.%d.%d környezettel fordítva\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Az id3lib %d.%d.%d környezettel fordítva\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "'%s' fájl átnevezése"
+
+#: src/easytag.c:195
+#, fuzzy, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "A jelenleg használt helyi '%s' (és végül '%s')...\n"
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s by %s (fordítva %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Honlap:%s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Böngészõ"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Fájl"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Csak olvasható fájl"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Hibás fájlhivatkozás"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Réteg ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Bitérték:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Frekvencia:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Mód:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Méret:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Hossz:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "ID3 címkék"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Címkemezõk"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Mû címe:"
+
+# bubble help
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott névvel"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Elõadó:"
+
+# bubble help
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott elõadóval"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album neve:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott albumnévvel"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott CD lemez számmal"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Év:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott évszámmal"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Pici gomb megnyomása:\n"
+"Minden kijelölt sáv növekvõ megszámozása. 01-tõl kezdve"
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Sorszám #;"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A könyvtárban található fájlok számának automatikus megadása"
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott számmal"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Mûfaj:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott mûfajjal"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Megjegyzés:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott megjegyzéssel"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Szerzõ:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott szerzõvel "
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Eredeti elõadó:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott Eredeti elõadóval"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Kiadó:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott kiadóval"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott URL-lel"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Kódoló:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott kódolóval"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Képek"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Képek:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Csak fogja meg és húzza bele a képet."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr ""
+"Pici gomb megnyomása:\n"
+"A kijelölt fájlok megcímkézése a megadott képpel"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr ""
+"A kijelölt kép eltávolítása. Ha nem jelöl ki semmit, minden kép törlõdik."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Kép hozzáadása. (Húzd és ejtsd funkció)"
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Kijelölt kép(ek) mentése a merevlemezre."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Kép jellemzõi"
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Minden fájl megcímkézve a megadott %s címmel."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Mû címe mezõ törölve."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott %s elõadóval"
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Elõadó mezõ törölve"
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s' albummal"
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Album neve mezõ törölve"
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "A kijelölt fájlok megcímkézve a '%s' CD lemez számmal"
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "CD lemez szám mezõ törölve"
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s' évvel"
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Év mezõ törölve"
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott számozással mint 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "A kijelölt fájlok megcímkézve a megadott számozással mint 'xx'"
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Sorszám mezõ törölve"
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "A kijelölt sávok növekvõen sorszámozva."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s' mûfajjal."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Mûfaj mezõ törölve"
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "A kijelölt fájlok megcímkézve a '%s' megjegyzéssel."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Megjegyzés mezõ törölve"
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s' szerzõvel"
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Szerzõ mezõ törölve"
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s'. Eredeti elõadóval"
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Az Eredeti elõadó mezõ törölve"
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s' kiadóval"
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "A Kiadó mezõ törölve"
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s' URL-lel"
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Az URL mezõ törölve"
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s' kódolóval"
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "A Kódoló mezõ törölve"
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "A kijelölt fájlok megcímkézve a megadott '%s' képpel"
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "A Képek mezõ törölve"
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Válasszon módot és maszkot, és ismételje meg"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Minden címke feldolgozva"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Minden címke törölve"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Minden fájl elmentve..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Fájlok részben elmentve..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Fájlok részben törölve..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Minden fájl törölve..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Beírja a címkét ebbe a fájlba: \n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Címke írása..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Átnevezés"
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Valóban át akarja nevezni a(z) \n"
+"'%s' fájlt\n"
+"erre: '%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Könyvtár átnevezése..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Valóban át akarja nevezni a(z) \n"
+"'%s' könyvtárat\n"
+"erre: '%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Fájl átnevezése..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Valóban át akarja nevezni a(z) \n"
+"'%s' fájlt\n"
+"erre: '%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "'%s' címkéjének írása"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Címkék kiírva"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"A címkék nem írhatók ebbe a fájlba: '%s'!\n"
+"(Nem %s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "'%s' fájl átnevezése"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nem lehet átnevezni a '%s' fájlt!\n"
+"erre: '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Nem történt átnevezés..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Nem lehet átnevezni a \n"
+"'%s' fájlt\n"
+", mert ilyen nevû fájl már létezik:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"A célkönyvtár létrehozása sikertelen\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Fájl átnevezve '%s'-ról '%s'-re"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Fájlok átnevezve..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"'%s'\n"
+"(%s) könyvtár törlése sikertelen!"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Fájl átnevezve '%s'-ról '%s'-re"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Fájlok átnevezve..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nem lehet átnevezni a '%s' fájlt!\n"
+"erre: '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Nem történt átnevezés..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Véglegesen törölni kívánja a(z) \n"
+"'%s' fájlt?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Fájl törlése..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "'%s' fájl törölve"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"'%s'\n"
+"(%s)könyvtár nem olvasható."
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Beolvasás..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Fájl: %s"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "'%d' db fájl található ebben a könyvtárban és alkönyvtáraiban."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "'%d' db fájl található ebben a könyvtárban."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u fájl"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Nem található fájl ebben a könyvtárban és alkönyvtáraiban."
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Nem található fájl ebben a könyvtárban!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Betöltés"
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr "Betöltés leállítása"
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Adja meg az átvizsgálandó könyvtárat!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "A kijelölt fájlok megcímkézve a megadott mezõkkel"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Alsóvonás és '%20' sztring szóközzé alakítása"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Szóköz alsóvonássá alakítása"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "MINDENT NAGYBETÛSRE"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "mindent kisbetûsre"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Elsõ betû legyen nagybetû"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Minden Szó Elsõ Betûje Legyen Nagybetû"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Szóközök eltávolítása"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Szóköz minden nagybetû elé"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Minden dupla szóköz és alsóvonás eltávolítása"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: rendellenes kilépés! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "%s (%d) szignál keletkezett!\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Valószínûleg egy hibát talált az EasyTAG-ben. Kérem küldje el a hiba "
+"leírását egy gdb visszavezetéssel ('gdb easytag core' majd 'bt' és 'l' (kis "
+"el)\n"
+"<easytag@gmail.com> címre."
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Ismeretlen szignál"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Használat: easytag [paraméter] \n"
+"vagy: easytag [könyvtár]\n"
+"\n"
+"Paraméter:\n"
+"-------\n"
+"-h, --help Kiírja ezt a szöveget és kilép.\n"
+"-v, --version Alapvetõ infó.-kat ír ki és kilép.\n"
+"\n"
+"Könyvtár:\n"
+"----------\n"
+"c:/elérési_út/a_fájlokhoz Egy abszolút útvonalat tölt be,\n"
+"/elérési_út/a_fájlokhoz. Egy abszolút útvonalat tölt be,\n"
+"elérési_útvonal/a_fájlokhoz. Relatív útvonal használata.\n"
+"\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Normális kilépés."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Néhány fájl megváltozott\n"
+"Szeretné menteni a változásokat?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Biztosan ki akar lépni? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3 címkék"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis címkék"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis címkék"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE címkék"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "MP4/M4A/AAC címkék"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3 fájl"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2 fájl"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis fájl"
+
+# ikon megjegyzés
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Következõ fájl"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC fájl"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MusePack fájl"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey's Audio fájl"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "MP4/AAC fájl"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "MusePack fájl"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Képek"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"A '%s' fájlnév átkonvertálás sikertelen!'\n"
+"(Próbálja meg a környezetet variálni:\n"
+" G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Fájlnév fordítások (?)"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "A %s'fájlnév %d karakterek miatt csonkitott lesz!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Kódoló:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Csatornák:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "Hiba a '%s' (%s) fájl megnyitása közben."
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "HIBA: A megjegyzés írása közben a(z) '%s' (%s) fájlba."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "'%s' címkéje kiírva"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "'%s' fájl címkéje eltávolítva"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Hiba a(z) '%s' (%s) fájl ID3v1 címkéjének eltávolításakor"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Hiba a(z) '%s' (%s) fájl ID3v2 címkéjének eltávolításakor"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Hiba a(z) '%s' (%s) fájl ID3v2 címkéjének frissítésekor"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"Megpróbálta elmenteni ezt a címkét ebben a formátumban, de a rendszer id3lib "
+"fájlja hibás.\n"
+"Ha újratölti ezt a fájlt, néhány karakter hibásan fog megjelenni, mivel a "
+"hiba miatt hibásan is került kiírásra.\n"
+"A javításhoz az id3lib fájlt kell megfoltozni.\n"
+"A folt elérhetõ az EasyTAG csomag forrásában.\n"
+" src/id3lib/ patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"Ez az üzenet minden indulásnál csak egyszer jelenik meg.\n"
+"\n"
+"File : %s"
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Hiba a(z) '%s' (%s) fájl ID3v1 címkéjének frissítésekor"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "'%s' címkéje frissítve"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Nem történt hiba"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Nincs elég memória"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Nincs feldolgozandó adat"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Hibás formátumú adat"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Nincs írható puffer"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "A puffer túl kicsi"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Hibás formátum azonosító"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "A keresett fájl nem található"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Ismeretlen mezõtípus"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Ennek a fájlnak már van címkéje"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Hibás ID3 címke verzió"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Nincs feldolgozandó fájl"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Megpóbál csak olvasható fájlba írni"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Hiba a be/kitömörítés közben"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Ismeretlen hiba!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Ez egy hibás formátumú fájl: '%s'\n"
+"Az id3lib által nem értelmezhetõ címkék miatt, feldolgozás meghiusúl."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Hibás fájl..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Igen "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Nem "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Alkalmaz "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Ment "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Mégsem "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Bezár "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Írás "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Futtatás "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr "Keresés "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "Tallóz..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Könyvtár kiválasztása..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Fájl kiválasztása..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "Betöltés"
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "'%s' (%s)-t nem lehet futtatni!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "M3u listafájl készítés"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "M3U listafájl neve"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Könyvtár nevének használata"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Maszkok szerkesztése"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "M3u listafájl beállítások"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Csak a kijelölt fájlokat tartalmazza"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Ha aktíválja, csak a kijelölt fájlok lesznek az m3u listafájlban. Egyébként "
+"minden fájl belekerül."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Teljes elérési út használata az m3u listában"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Relatív elérési út használata az m3u listában"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "M3u listafájl írása a szülõ könyvtárba"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Ha aktíválja, az m3u listafájl a szülõ könyvtárban kerül létrehozásra. "
+"(Tehát nem abba amiben éppen dolgozunk, hanem eggyel feljebb)"
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Dos-Windows féle könyvtár elválasztó használata"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Ez az opció lecseréli az UNIX könyvtáraknál használatos '/' "
+"könyvtárválasztót a DOS-Windows-nál alkalmazott '\\' könyvtárválasztóra"
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "M3u listafájl tartalma"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Csak lista készítése a fájlokról"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Információ írás a fájlnevet használva"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Információ írás ezt a maszkot használva:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"'%s' listafájl már létezik!\n"
+"Felülírja?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "M3u listafájl írása..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"A '%s' listafájl írása sikertelen!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "'%s' listafájl elkészült"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Sáv"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Megjegyzés"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Szerzõ"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Eredeti elõadó"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Kiadó"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Kódoló"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Fájlkeresés"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Írja be a keresendõ szót vagy ne írjon be semmit, és minden fájl látható lesz"
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "Hol keressen?"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "fájlnévben"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "címkében"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "kis és NAGYBETÛK megkülönböztetése"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "%d darab találat"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Fájlnevek betöltése TXT fájlból"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Fájl:"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Betölt "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Fájl tartalma betöltve:"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Fájlok neveinek listája:"
+
+# bubble help
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Ha aktíválja ezt az opciót akkor a betöltés után a fájlnevek a feldolgozó "
+"aktuális beállításaival íródnak felül.\n"
+"(A feldolgozóablak most nyitva)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Üres sor beszúrása"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Sor törlése"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Minden üres sor törlése"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Újratöltés"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Audio"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Ismeretlen"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "Ismeretlen MP4 formátum"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Mûvelet ismétlése a hátralevõ fájlokra"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Az Ogg Vorbis adatfolyam nem tartalmaz vorbis adatot."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "HIBA: '%s' (%s) fájl vorbisként való megnyitásakor."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Figyelem: Az Ogg Vorbis fájl '%s' ID3v2 címkét tartalmaz."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Kép hozzáadása"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Minden fájl"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG és JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Kép jellemzõi %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Kép típusa"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Képek leírása:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Kép mentése %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"A következõ fájl már létezik:\n"
+"'%s'\n"
+"Felülírja?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Fájl mentése..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Ismeretlen formátum"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "32x32 pixeles PNG ikon"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Egyéb ikon"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Elsõ borító"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Hátsó borító"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Belsõ lap"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "CD korong fénykép"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Sorszám - elõadó"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Szerzõ - elõadó"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Karmester"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Banda - Zenekar"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Dalszöveg - szövegíró"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Felvétel helyszíne"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Felvétel közben"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Elõadás közben"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Film - Video felvétel"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Egy fényes színes hal"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Illusztráció"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Banda - Elõadó logója"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Kiadó - stúdió logója"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Ismeretlen kép típus"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "képpont"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Típus"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Leírás"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"A kép megjelenítése nem lehetséges mert túl kevés adat áll rendelkezésre."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Kép betöltése..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"'%s' (%s) fájl megnyitása sikertelen!\n"
+" "
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Kép betöltése sikertelen..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Tulajdonságok..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Fájlböngészõ beállítások"
+
+# Ikon megjegyzés
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Ugrás az alapértelmezett könyvtárra"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Itt adhatja meg az alapértelmezett könyvtárat. Minden indításkor erre a "
+"könyvtárra poziciónálódik a kurzor, ha paraméter nélkül indítja az EasyTAG-"
+"et."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Fájlok betöltése amikor az EasyTAG a megadott könyvtárba lép.\n"
+"Ez felülbírálható az induláskor megadott paraméterrel. (easytag /elérési_út/"
+"mp3_fájl)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Alkönyvtárak tartalmának betöltése"
+
+# bubble help
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "Alkönyvtárak tartalmának betöltése"
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Alkönyvtárak megjelenítése a fõkönyvtár betöltésekor"
+
+# not necessary (hungarian)
+# bubble help
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr "Alkönyvtárak megjelenítése a fõkönyvtár betöltésekor"
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Rejtett könyvtárak tartalmának betöltése"
+
+# bubble help
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "Rejtett könyvtárak tartalmának betöltése"
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Felhasználói felület"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "A fájl belsõ információinak mutatása"
+
+# bubble help
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Információkat mutat a fájlról, mint például a bitérték, a szám hossza, a "
+"méret."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Módosított fájl megjelenítése:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Vékony piros betûkkel"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Vastag fekete betûkkel"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Fájllista rendezési szempontok"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Fájllista rendezése:"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Fájlnév szerint növekvõen"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Fájlnév szerint csökkenõen"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Sorszám szerint növekvõen"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Sorszám szerint csökkenõen"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Létrehozás idõpontja szerint növekvõen"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Létrehozás idõpontja szerint csökkenõen"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Cím szerint növekvõen"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Cím szerint csökkenõen"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Elõadó szerint növekvõen"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Elõadó szerint csökkenõen"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Album szerint növekvõen"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Album szerint csökkenõen"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Év szerint növekvõen"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Év szerint csökkenõen"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Mûfaj szerint növekvõen"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Mûfaj szerint csökkenõen"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Megjegyzés szerint növekvõen"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Megjegyzés szerint csökkenõen"
+
+# bubble help
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "A fájlrendezés szempontja új könyvtár betöltésekor."
+
+# bubble help
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "kis és NAGYBETÛK megkülönböztetése"
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Üzenetablak elhelyezkedése"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Nincs meghatározott pozíció"
+
+# bubble help
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Az ablakokat az ablakkezelõ helyezi el."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "A fõablak közepén"
+
+# bubble help
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Az ablakok a fõablak közepén jelennek meg."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "A képernyõ közepén"
+
+# bubble help
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Az ablakok a képernyõ közepén jelennek meg."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Egérmutató pozíciójában"
+
+# bubble help
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Az üzenetek az aktuális egérpozícióban jelennek meg."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Zene lejátszó"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Futtatandó lejátszó:"
+
+# bubble help
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr "Alapértelmezett paraméterezhetõ zenelejátszó program. (pl. 'xmms -p') "
+
+# Menüsor
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Fájlnév beállítások"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr " "
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+"Szabálytalan karakterek cseréje a fájlnevekben (Windows és CD-Rom számára)"
+
+# bubble help
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"A szabálytalan karakterek cseréje FAT32/16 és ISO9660 + Joliet "
+"fájlrendszerek számára, ('\\', ':', '*', '?', '\"', '<', '>', '|') az "
+"átnevezéskor felmerülõ problémák megelõzésére. Hasznos, ha a címkemezõket "
+"használva nevezzük át a fájlokat a feldolgozóval."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Fájlnév kiterjesztés átalakítása:"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "kisbetûsre"
+
+# bubble help
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Például: fájlnév.mp3"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "NAGYBETÛSRE"
+
+# bubble help
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Például: fájlnév.MP3"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Nincs változtatás"
+
+# bubble help
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "A kiterjesztés nem változik"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "A fájl eredeti dátumának védelme"
+
+# bubble help
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr "A fájl eredeti dátuma nem változik mentéskor."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr ""
+"Karakterkészlet beállítása a fájlnévhez, ha valamely karakter nem írható a "
+"rendszer beállítások miatt."
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr " "
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Próbálja meg másik karakter kódolással"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Ha ezt az opciót választja, megpróbálja a kódolást az ön helyi "
+"beállításainak megfelelõen összekapcsolni a nyelvi beállítással\n"
+"(Például: ISO-8859-1-fr; KOI8-R-ru; ISO-8859-2-hu)\n"
+"Ha ez nem sikerül, akkor ISO-8859-1-be kódol."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr "A rendszerkódolás használata, és a nem megfelelõ karakterek átírása"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Ezzel az opcióval elérheti, hogy amennyiben a karakterkészletben nem "
+"található meg az adott karakter, akkor 1 vagy több hasonló formájú karaktert "
+"próbál beilleszteni helyette."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr "A rendszerkódolás használata, és a nem megfelelõ karakterek eldobása"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Ezzel az opcióval eldobja azokat a karaktereket, amelyek nem szerepelnek az "
+"adott karakterkészletben."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Címke beállítások"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr " "
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Év automatikus kiegészítése, ha hiányos"
+
+# bubble help
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Megpróbálja kiegészíteni az év mezöt, ha csak egyjegyû szám áll "
+"rendelkezésre."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "A sorszám mezõt kitöltõ számok formátuma (1, 01, 001)"
+
+# bubble help
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Egyjegyû számozás: 1,2,3 - írjon be 1-est.\n"
+"Kétjegyû számozás:01,02,03 - írjon be 2-est."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Ogg Vorbis fájlok esetén XMMS formátumba is írjon megjegyzést"
+
+# bubble help
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"Az XMMS helytelenül ismeri fel a megjegyzéseket az Ogg Vorbis fájlokban más "
+"programokkal ellentétben.\n"
+"Tény, hogy általában ez a mezõ 'comment=' címkeként van jelölve, míg az XMMS "
+"csak '='-t használ. Kapcsolja ki ezt a paramétert ha nem szeretné, hogy más "
+"programok ne panaszkodjanak egy ismeretlen mezõ miatt. A megjegyzések nem "
+"fognak látszani az XMMS-ben."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr "Címkemezõk feldolgozása esetén a Page Up/Page Down gombok viselkedése:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "A fókuszt ugyanazon a mezõn tartja"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "A fókusz mindig a (Mû címe)-re ugrik."
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "ID3 címke beállítások"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr " "
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "ID3 címke írása FLAC fájlba FLAC címkével"
+
+# bubble help
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Ha ezt az opciót választja, az ID3 címkék a FLAC fájlokhoz is hozzáadódnak. "
+"Ellenkezõ esetben a címkemezõk tartalma törlõdik."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Címke tartalmának törlése ha minden mezõ üresre van állítva"
+
+# bubble help
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Az ID3v2 címke tartalmazhat más adatokat is az\n"
+" EasyTag-gal használható mezõkön kívül, mint például egy csatolt képet, "
+"dalszöveget. Ez a paraméter kitörli a teljes címkét, ha az alap címkemezõk "
+"üresre vannak állítva."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Automatikus konvertálás a régi ID3v2 címkébõl"
+
+# bubble help
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr "Automatikus konvertálás a régi ID3v2 címkébõl az új ID3v2.3-verzióra."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "ID3v2.x címke írása"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Karakterkészlet az ID3 címkékhez"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "ID3v2.x címke írása"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "ID3v2.x címke írása"
+
+# bubble help
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Ha ezt az opciót választja, az mp3 fájl ELEJÉN található ID3v2 címke kerül "
+"bejegyzésre, felülírásra.\n"
+"Ellenkezõ esetben a címkemezõk tartalma törlõdik."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Leírás:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+# src/trans.h:267
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Kódoló"
+
+# bubble help
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr ""
+"A címkeadatok ÍRÁSÁRA használt karakterkészlet a felhasználói felületen."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " Nem "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3 címkék"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "ID3v1.x címke írása"
+
+# bubble help
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Ha ezt az opciót választja, az mp3 fájl VÉGÉN található ID3v1 címke kerül "
+"bejegyzésre, felülírásra.\n"
+"Ellenkezõ esetben a címkemezõk tartalma törlõdik."
+
+# bubble help
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr ""
+"A címkeadatok ÍRÁSÁRA használt karakterkészlet a felhasználói felületen."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Karakterkészlet az ID3 címkékhez"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr "Ez a karakterkódolás használata a címke olvasásához"
+
+# bubble help
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr ""
+"A címkeadatok OLVASÁSÁRA használt karakterkészlet a felhasználói felületen."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Feldolgozó"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Címkemezõk kitöltése - Karakterkonverzió"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Alsóvonás és '%20' sztring szóközzé alakítása"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Szóköz alsóvonássá alakítása"
+
+# bubble help
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr "A megadott konvertálás automatikusan végrehajtódik."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Átnevezés - Karakterkonverzió"
+
+# bubble help
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr "A megadott konvertálás automatikusan végrehajtódik."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Feldolgozó - Karakterkonverzió"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr "Ne kezdje nagybetûvel a cikkek és az elõtagok elsõ szavát."
+
+# bubble help
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Ne konvertálja a cikkek, elõtagok és hasonlók elsõ betûjét nagybetûre, ha a "
+"feldolgozó 'Minden szó elsõ betûje legyen nagybetû' opciója be van kapcsolva."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Feldolgozóablak"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Feldolgozóablak megnyitása indításkor"
+
+# bubble help
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr "Feldolgozóablak megnyitása indításkor"
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Feldolgozóablak mindig felül"
+
+# bubble help
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr "Feldolgozóablak mindig felül"
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Mezõk"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Mezõk felülírása a címkék feldolgozásakor"
+
+# bubble help
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Ha ki van választva, a feldolgozáskor a mezõk felülíródnak.\n"
+"Ha nincs kiválasztva, akkor csak az üres mezõk kitöltése engedélyezett."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Ez a szöveg az alapértelmezett 'megjegyzés':"
+
+# bubble help
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Ha ezt az opciót választja, akkor alapértelmezetten kitöltõdik a "
+"'megjegyzés' mezõ a megadott szöveggel."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "CRC32 ellenõrzõ kód írása alapértelmezett 'megjegyzés'-ként "
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Ha ezt az opciót választja, akkor alapértelmezetten kitöltõdik a "
+"'megjegyzés' mezõ a CRC-32 ellenõrzõ összeggel."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "CD adatbázis"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "Szerver beállítások az Automatikus kereséshez"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Név:"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Port:"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI elérési út:"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "Szerver beállítások a manuális kereséshez"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "CD adatbázis"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "CGI elérési út:"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Proxy beállítás"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Proxy használata"
+
+# bubble help
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Proxy beállítások aktiválása."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Gépnév:"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Proxy szerver neve."
+
+# bubble help
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Proxy szerver portja."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Felhasználó neve:"
+
+# bubble help
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "A felhasználó neve a proxy szerveren."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Felhasználó jelszava:"
+
+# bubble help
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "A proxy szerver felhasználójának jelszava."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Sáv neve"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"A megfelelõ audio fájl kiválasztása (pozíció szerint vagy DLM használatával, "
+"ha az aktiválva van)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Ha aktiválja ezt az opciót, a fájlnév sorának kiválasztásakor a központi "
+"listában is kiválasztásra kerül a megfelelõ fájl. "
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"A sávok címe és az audio fájlnevek összevetése (DLM) algoritmus "
+"használatával."
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Megerõsítés"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Programból való kilépés megerõsítése"
+
+# bubble help
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr "Programból való kilépés megerõsítése"
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Címke írásának megerõsítése"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Fájl átnevezésének megerõsítése"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Fájl törlésének megerõsítése"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "M3u listafájl írásának megerõsítése"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr ""
+"Változtatások életbe léptetése (de nem mentése!), majd az ablak bezárása"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Ablak bezárása mentés nélkül"
+
+# bubble help
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Változtatások mentése, majd az ablak bezárása"
+
+# not necessary hungarian. I do not understand.
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Például : %.*d - fájlnév.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "A változások életbe léptek"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Beállítások elmentve"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "A beállítások nem változtak"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+"A megadott alapértelmezett könyvtár élérési útja nem érvényes!\n"
+"'%s'\n"
+" (%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Nem könyvtár"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "A '%s' audio lejátszó nem található!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Mezõk kitöltése"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Átnevezés"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Mezöfeldolgozás"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Címke sikeresen feldolgozva..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Címke sikeresen feldolgozva...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Hiba a feldolgozáskor: nem található a '%s' elválasztó '%s'-ben"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "A fájl átkonvertálása nem lehetséges %s ebben a rendszerben"
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Új fájlnév sikeresen feldolgozva..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Új fájlnév sikeresen feldolgozva...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Címke és fájlnév feldolgozás"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Feldolgozó: "
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Feldolgozótípus választása"
+
+# bubble help
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Feldolgozó ablak megnyitása / Kijelölt fájlok feldolgozása"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Feldolgozó beállításai"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Maszkszerkesztõt mutat/rejt"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Puskát mutat/rejt"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Ablak bezárása"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Válassza ki a megfelelõ maszkot, vagy írjon egy újat a címkék kitöltéséhez."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Elõnézet"
+
+# bubble help
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Kitöltés a megadott maszkkal"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Válassza ki a megfelelõ maszkot, vagy írjon egy újat a címkék kitöltéséhez."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Fájlátnevezés elõnézet..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Mezõk kijelölése:"
+
+# bubble help
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Az itt látható gombok közül jelölje ki azokat melyeket szükségesnek tart."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+# bubble help
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Fájlnév mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+# bubble help
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Mû címe mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+# bubble help
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Elõadó mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+# bubble help
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Album neve mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+# bubble help
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Mûfaj mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+# bubble help
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Megjegyzés mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+# bubble help
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Szerzõ mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+# bubble help
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Eredeti elõadó mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+# bubble help
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Kiadó mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+# bubble help
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "URL mezõ feldolgozása"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+# bubble help
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Kódoló mezõ feldolgozása"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Kijelölés megfordítása"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Kijelölés/Kijelölés megforditása - mindenhol"
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Alsóvonás és '%20' sztring szóközzé alakítása"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Karaktercsere ezt:"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "ebbe: "
+
+# bubble help
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr "Alsóvonás és '%20' sztring szóközzé alakítása"
+
+# bubble help
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr "A szóköz karakterek alsóvonássá alakítása"
+
+# bubble help
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Karaktercsere"
+
+# bubble help
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr "MINDEGYIK KARAKTERT NAGYBETÛSRE CSERÉLI"
+
+# bubble help
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr "mindegyik karaktert kisbetûsre cseréli"
+
+# bubble help
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr "Csak a legelsõ karaktert cseréli nagybetûsre"
+
+# bubble help
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr "Minden Szó Elsõ Betûjét Nagybetûsre Cseréli"
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Szóköz beszúrása minden NAGYBETÛS szó elé"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Dupla szóközök, és alsóvonások törlése"
+
+# bubble help
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Minden szóköz eltávolítása a szavak közül.\n"
+"Példa: 'Szöveg a kijelölt ablakban' --> 'Szövegakijelöltablakban'"
+
+# bubble help
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Szóköz beillesztése minden nagybetûs karakter elé.\n"
+"Példa: 'SzövegAKijelöltablakban' --> 'Szöveg A Kijelöltablakban'."
+
+# bubble help
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Egymás mellett lévõ dupla, vagy több szóköz és alsóvonás csökkentése EGY "
+"alsóvonás és szóközre. Példa: Ez itt egy__ példa__Szöveg > Ez itt "
+"egy_példa_Szöveg"
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Puska"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : elõadó"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : megjegyzés"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : szerzõ"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : kiadó"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : CD lemez száma"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : kódoló"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : mûfaj"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : mellõzött"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : sávok száma"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : Eredeti elõadó"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : sorszám"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : cím"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : év"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Maszkszerkesztõ"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Új maszk"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Maszk felfelé mozgatása"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Maszk lefelé mozgatása"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Maszk kétszerezése"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Alapmaszkok hozzáadása"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Maszk eltávolítása"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Maszkok mentése"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Új_maszk"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Másolás: Nincs kijelölt sor!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Eltávolítás: Nincs kijelölt sor!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Felfelé mozgatás: Nincs kijelölt sor!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Lefelé mozgatás: Nincs kijelölt sor!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "HIBA: A konfigurációs fájl nem írható %s (%s)a"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "A konfigurációs fájl megnyitása sikertelen '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Alapértelmezett beállítások betöltése..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "'%s' (%s)-t megnyitása sikertelen"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "HIBA: A lista nem írható %s (%s) fájlba"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Alapértelmezett Címke kitöltés maszkok betöltése..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Alapértelmezett fájl átnevezõ maszkok betöltése..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Alapértelmezett könyvtár átnevezõ maszkok betöltése..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"HIBA: A Kezdõ könyvtár környezeti változója nincs definiálva!\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "HIBA: Nem lehet létrehozni a '%s'(%s) könyvtárat!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "A bemenet csonka, vagy üres."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "A bemenet nem Ogg Vorbis adatfolyam."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Hiba az Ogg Vorbis adatfolyam elsõ oldalának olvasásakor."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Hiba a kezdeti fejléc csomag olvasásakor."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Az Ogg Vorbis adatfolyam nem tartalmaz vorbis adatot."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Hibás másodlagos fejléc."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF a vorbis fejléc vége elõtt."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Hibás, vagy hiányos adat, Mûvelet folytatása..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Hiba a kimenetre való írás közben. Kimeneti adatfolyam hibás, vagy csonka."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+# egyéb menü
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "_Zene lejátszó futtatása"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Hibás ID3 címke verzió"
+
+# src/trans.h:266
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+# src/trans.h:266
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+# src/trans.h:266
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Kitöltés használata"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr "A kitöltés beállítása az ID3 címkék gyorsabb írását eredményezi."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Mindig ISO-8859-1-be mentsen"
+
+# bubblehelp
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Használja az ISO-8859-1 készletet a címke írásához.\n"
+#~ "Ez a készlet jó az ID3v1 és ID3v2-höz is. De az ISO-8859-1 készletben nem "
+#~ "található karakterek eldobásra kerülnek."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Az ISO-8859-1 elsõdleges használata. A fel nem ismert karakterek esetén "
+#~ "UNICODE-ra váltás. (Ajánlott)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Ha nem tudja ISO-8859-1-be konvertálni, az UNICODE karakterkészletet "
+#~ "fogja használni. Az Unicode használható ID3v2, de nem használható ID3v1 "
+#~ "cimkékhez\n"
+#~ "(mivel ez EGY karakteres kódolás) \n"
+#~ "\n"
+#~ "Ha a 'Nem standard karakterkészlet használata az ID3 cimkék írásakor' "
+#~ "opciónál másik karakterkészletet választunk, az ISO-8859-1 helyett, akkor "
+#~ "AZT fogja használni.\n"
+#~ "Valamint szabályokat is tudunk definiálni arra az esetre, ha nem tudná "
+#~ "kódolni a karaktert. "
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Mindig UNICODE-ba mentsen"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Az UNICODE készlet használata az ID3v2 címkékhez. Az ID3v1 címkék "
+#~ "alapértelmezetten mindig ISO-8859-1 kódolással vannak mentve."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "ISO-8859-1 készlet feldolgozása a következõ kódolással: (csak szakértõk "
+#~ "részére!)"
+
+# bubble help
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "A nem standard karakterkódolás használata az ID3 címkék olvasásakor"
+
+# bubble help
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "A nem standard karakterkódolás használata az ID3 címkék írásakor"
+
+# bubble help
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr "Ez a karakterkódolás használata a címke írásához. "
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "Az ISO-8859-1 mezõk esetén ezeket a szabályokat is alkalmazza, ha "
+#~ "egycimke írásakor nem lehet konvertálni a karaktereket:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Nincs változtatás"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr ""
+#~ "A rendszerkódolás kényszerített használata, és a nem megfelelõ karakterek "
+#~ "átírása"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr ""
+#~ "A rendszerkódolás használata, és a nem megfelelõ karakterek eldobása"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "A karakterkészlet fordítás '%s'-ról \n"
+#~ " '%s'-re nem támogatott!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "Hiba a '%s' (%s) fájl megnyitása közben.a"
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Induláskor az alább megadott könyvtár tartalmának betöltése"
+
+#~ msgid "#:"
+#~ msgstr "CD #:"
diff --git a/po/it.gmo b/po/it.gmo
new file mode 100644
index 0000000..ddb4474
--- /dev/null
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..eb5e84f
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,5055 @@
+# translation of easytag-2.0.2it.po to italiano
+# translation of EasyTAG to italiano
+# Copyright (C) 2001-2005, 2006, 2007 Free Software Foundation, Inc.
+# Lorenzo Cappelletti <lorenzo.cappellettiATemail.it>, 2001, 2002, 2003.
+# Michele G. <micheleATmr-miky.com>, 2005.
+# Grazie a Vincenzo Reale <smart2128ATbaslug.org> per i suoi suggerimenti.
+# Kostantino <ciclope10ATalice.it>, 2006, 2007.
+# Kostantino <ciclope10ATalice.it>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: easytag-2.0.2it\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2007-05-04 19:37+0200\n"
+"Last-Translator: Kostantino <ciclope10ATalice.it>\n"
+"Language-Team: italiano <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"First-Translator: Lorenzo Cappelletti <lorenzo.cappellettiATemail.it>\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG è programma per vedere, modificare e scrivere le etichette dei "
+"file MP3, MP2, FLAC, Ogg Vorbis, MP4/AAC, MusePack e Monkey's Audio. La sua "
+"semplice e stuzzicante interfaccia GTK+ rende più facile mettere le "
+"etichette in ambiente GNU/Linux."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(traduzione tedesca)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(traduzione russa)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(traduzione olandese)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(traduzione svedese)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(traduzione ungherese)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(traduzione italiana)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(traduzione giapponese)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(traduzione ucraina)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(traduzione ceca)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(traduzione spagnola)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(traduzione polacca)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(traduzione rumena)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(traduzione danese)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(traduzione greca)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(traduzione portoghese brasiliana)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(traduzione bulgara)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(traduzione cinese)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(traduzione greca)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Informazioni..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Informazioni"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(compilato il: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(usando: GTK+ %d.%d.%d e id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(il supporto per i file MP3 è stato disabilitato)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(il supporto per i file MP3 è stato disabilitato)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(il supporto per i file MP3 è stato disabilitato)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(il supporto per i file MP3 è stato disabilitato)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(il supporto per i file Ogg Vorbis è stato disabilitato)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(il supporto per i file MP3 è stato disabilitato)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(il supporto per i file FLAC è stato disabilitato)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(il supporto per i file MP4/AAC è stato disabilitato)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(il supporto per i file MP3 è stato disabilitato)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Autore: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "Posta elettronica: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Pagina web: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Descrizione:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Ringraziamenti"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Traduzioni:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Generale:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Modifiche"
+
+#: src/about.c:454
+#, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Non posso aprire il file '%s' (%s)\n"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "Si è verificato un errore aprendo il file '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_File "
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Ordina la lista per etichetta"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Ordina la lista per proprietà"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Crescente per nome file"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Decrescente per nome file"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Crescente per data di creazione"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Decrescente per data di creazione"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Crescente per numero di traccia"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Decrescente per numero di traccia"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Crescente per titolo"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Decrescente per titolo"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Crescente per artista"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Decrescente per artista"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Crescente per album"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Decrescente per album"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Crescente per anno"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Decrescente per anno"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Crescente per genere"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Decrescente per genere"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Crescente per commento"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Decrescente per commento"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Crescente per compositore"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Decrescente per compositore"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Crescente per artista originale"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Decrescente per artista originale"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Crescente per diritti d'autore"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Decrescente per diritti d'autore"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Crescente per URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Decrescente per URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Crescente per nome codificatore"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Decrescente per nome codificatore"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Crescente per tipo file"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Decrescente per tipo file"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Crescente per dimensione file"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Decrescente per dimensione file"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Crescente per durata"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Decrescente per durata"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Crescente per bitrate"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Decrescente per bitrate"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Crescente per campionamento"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Decrescente per campionamento"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Apri file con..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Seleziona tutti i file"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Deseleziona tutti i file"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Inverti la selezione dei file"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Cancella file"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Primo file"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Primo file"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "File _precedente"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "File precedente"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "File _successivo"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "File successivo"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "_Ultimo file"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Ultimo file"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "Proc_essa file"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Processa file"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Rimuovi etichette"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Rimuovi etichette"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "_Annulla le modifiche all'ultimo file"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Annulla le modifiche all'ultimo file"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "Rip_eti le modifiche all'ultimo file"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Ripeti le modifiche all'ultimo file"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Salva file"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Salva file"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "_Forza salvataggio file"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Forza il salvataggio dei file"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Annulla le ultime modifiche"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Ripeti le ultime modifiche"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Esci"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Esci"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Navigatore"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Vai alla cartella _home"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Vai alla cartella home"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Vai alla cartella pre_definita"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Vai alla cartella predefinita"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Imposta il percorso _corrente come predefinito"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Imposta il percorso corrente come predefinito"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Vista ad albero | Vista artista - album"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Rinomina cartella..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Ricarica cartella"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Sfoglia cartella con..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Riduci albero"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Aggiorna albero"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "A_nalizzatore"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "R_iempi etichette..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Riempi etichette..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Rinomina file e cartelle..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Rinomina file e cartelle..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "Proces_sa campi..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Processa campi..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Varie"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Cerca _file..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Cerca file..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "Ricerca archivio CD..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "Ricerca CDDB..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Carica nomi file da TXT..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Scrivi playlist..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Esegui il riproduttore audio"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Impostazioni"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Preferenze..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Preferenze..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Aiuto"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Informazioni"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Termina azione corrente"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_Operazioni sul file"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Ricerca file CDDB..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr "Azzera registro"
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Soglia _sottocartelle"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Mostra cartelle nascoste"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Mostra navigatore ad albero / Visualizza per Artista ed Album"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Non riesco ad incorporare lo UI. L'errore è stato: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Pronto a partire..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "È stato selezionato un nuovo percorso predefinito per i file"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Conferma..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Alcuni file sono stati modificati ma non salvati.\n"
+"Vuoi salvarli prima di cambiare cartella?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Il percorso indicato non è valido!\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Errore..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<Tutti gli album>"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr ""
+"Errore: non sono riuscito a trovare nell'albero il nodo %s mentre cercavo %s."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Artista"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Album"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# File"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Vai alla cartella genitrice"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Immetti una cartella da sfogliare."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Albero"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Artista & Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Rinomina la cartella"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Rinomina la cartella '%s' in: "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Usa maschera:"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr ""
+"Saranno usate delle maschere per rinominare le cartelle se questa opzione è "
+"attivata."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Seleziona o scrivi in un una maschera utilizzando i codici (vedi Legenda "
+"nella Finestra Analizzatore) per rinominare la cartella dai campi "
+"dell'etichetta."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "La Maschera Analizzatore non è valida"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Anteprima di rinomina cartella..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Devi scrivere il nome di una cartella!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Non posso convertire '%s' nel nome file da codificare. Per favore, usa un "
+"altro nome."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Non posso rinominare nulla perché il nome della cartella esiste già!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Non posso rinominare la cartella \n"
+"'%s'\n"
+" in \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Cartella rinominata"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Programma da eseguire:"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Immetti il programma da eseguire e che riceverà la cartella corrente come "
+"parametro."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Apri file con..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Immetti il programma da eseguire che riceverà il file corrente come "
+"parametro."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Devi immettere il nome di un programma!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Non ho potuto trovare il programma '%s'!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Non è possibile eseguire %s (errore %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Non posso eseguire una nuova istanza di un altro processo!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Comando eseguito: '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Artista / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Categoria"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Nome Traccia"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Tempo"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "Ricerca Database CD"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Ricerca Automatica"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "Richiesta Database CD:"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Ricerca automaticamente il database CDDB usando il file selezionato "
+"(l'ordine è importante!) per generare il CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Interrompi la ricerca... "
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr "Usa Cddb locale"
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Verrà eseguita l'analisi selezionata in quel momento (la finestra "
+"dell'analizzatore deve essere aperta) quando questa opzione è attiva e dopo "
+"che i campi sono stati caricati."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Ricerca Manuale"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Parole:"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr ""
+"Immetti le parole da cercare (separate da uno spazio o da un segno '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Cerca In:"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Ogni Campo"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Altro"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Ogni Categoria"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Classica"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Varie"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Colonna sonora"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "inclusi: funk, soul, rap, pop, industrial, metal, ecc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "film, spettacoli"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "altre che non rientrano nelle categorie precedenti"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr "Categorie "
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Risultati:"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Cerca:"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Immetti le parole da cercare nella lista seguente"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Cerca Successivo"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Cerca Precedente"
+
+#: src/cddb.c:571
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr ""
+"Mostra solo linee rosse (o mostra tutte le linee) nella lista 'Artista / "
+"Album'"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Deseleziona tutte le linee"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Inverti la selezione delle linee"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Seleziona tutte le linee"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Seleziona le righe da 'applicare' alla propria lista di file. Saranno "
+"processate tutte le righe se non ne viene selezionata alcuna. Puoi anche "
+"riordinare le linee in questa lista prima di usare il pulsante 'Applica'."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Imposta A:"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Tutto"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Nome File"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Titolo"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Anno"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Traccia #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# Tracce"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Genere"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Esegui l'analisi corrente per ogni file"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr "Corrispondi linee con l'algoritmo Levenshtein"
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Verrà usato l'algoritmo Levenshtein (DLM: Metrica Damerau - Levenshtein) per "
+"far corrispondere il titolo CDDB con ogni nome di file nella cartella "
+"corrente e perselezionare il risultato migliore, se questa opzione è "
+"attivata. Sarà usato per selezionare il file audio corrispondente, o per "
+"applicare i risultati cddb, invece di usare direttamente l'ordine della "
+"posizione."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Carica le righe selezionate o tutte le righe (se non c'è selezione)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Pronto a cercare..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album: '%s', artista: '%s', lunghezza: '%s', anno: '%s', genere: '%s', ID: '%"
+"s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Inverti selezione"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Ordina per Numero Traccia"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Ordina per Nome Traccia"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Risolvo il nodo '%s'..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Non riesco a risolvere il nodo '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Non riesco a creare un nuovo socket (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Connessione al nodo '%s', porta '%d'..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Non riesco a connettermi al nodo '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Connesso al nodo '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Ricezione dati (%s)..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Si è verificato un errore leggendo la risposta cddb (%s)!"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Non riesco a creare il file '%s' (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Non posso aprire il file '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Invio richiesta..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Non riesco ad inviare la richiesta (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Ricezione dati..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "Il server ha fornito una risposta sbagliata!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Il server ha fornito una risposta sbagliata! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Mi dispiace ma la ricerca basata sul web non è al momento disponibile!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Sono stati trovati %d album corrispondenti"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Sto ricevendo i dati della pagina %d..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Sto ricevendo i dati della pagina %d..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "Altri risultati da caricare..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Non è stato selezionato alcun file!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d file selezionati!"
+
+#: src/cddb.c:2945
+msgid "Local CD search..."
+msgstr "Ricerca CD locale..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+"Il percorso per 'Database Locale CD' non è stato definito!\n"
+"Impostalo nella finestra delle preferenze."
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Invio richiesta (CddbId: %s, #tracce: %d, Lunghezza disco: %d)..."
+
+#: src/cddb.c:3231
+#, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Sono stati trovati %d album corrispondenti per DiscID '%s'"
+
+#: src/cddb.c:3327
+#, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Non posso caricare il file: '%s' (%s)!"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Sto caricando l'elenco delle tracce dell'album..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Attento! Stai per applicare %d linee di risultati CDDB a %d linee nella "
+"lista dei file!\n"
+"\n"
+"Vuoi davvero continuare?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Scrivi Etichette da CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arabo (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabo (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arabo (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltico (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltico (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Baltico (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtico (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Europeo Centrale (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Europeo Centrale (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Europeo Centrale (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Cinese Semplificato (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Cinese Semplificato (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Cinese Tradizionale (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Cinese Tradizionale (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirillico (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirillico (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirillico (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirillico (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirillico (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Cirillico/Russo (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Cirillico/Ucraino (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Inglese (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Greco (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Greco (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Ebreo (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Ebreo (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Giapponese (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Giapponese (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Giapponese (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Coreano (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordico (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Sud europeo (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Turco (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turco (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Turco (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamita (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamita (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Ebreo visuale (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Occidentale (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Occidentale (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Occidentale (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Occidentale (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"Il nome del file '%s' non ha potuto essere convertito nel formato UTF-8 (%"
+"s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "UTF-8 non valido"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"La stringa UTF-8 '%s' potrebbe non venir convertita nella codifica del file "
+"(%s)\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"La stringa '%s' non ha potuto essere convertito nel formato UTF-8 (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Avvio EasyTAG %s (PId: %d) ..."
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Attualmente sto utilizzando la versione %d.%d.%d di id3lib..."
+
+#: src/easytag.c:182
+#, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Attualmente sto utilizzando la versione %d.%d.%d di id3lib..."
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+"La variabile EASYTAGLANG è stata definita. Imposto la localizzazione: '%s' "
+
+#: src/easytag.c:191
+#, c-format
+msgid "Setting locale : '%s'"
+msgstr "Imposto localizzazione : '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr ""
+"Attualmente sto usando la localizzazione '%s' (ed eventualmente '%s')..."
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s da %s (compilato %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Pagina Web: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr "Parametro o percorso sconosciuto '%s'\n"
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Navigatore"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "File"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "File in sola lettura"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Il collegamento del file è interrotto"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Livello ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Bitrate:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Freq:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Modalità:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Dimensione:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Tempo:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Etichetta"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Comune"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Titolo:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Etichetta i file selezionati con questo titolo"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Artista:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Etichetta i file selezionati con questo artista"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Etichetta i file selezionati con questo nome d'album"
+
+#. Disc Number
+#: src/easytag.c:642
+msgid "CD:"
+msgstr "CD:"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Etichetta i file selezionati con questo numero di disco"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Anno:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Etichetta i file selezionati con questo anno"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Numera tutte le tracce in sequenza. Inizia con 01 in ogni sottocartella."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Traccia #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Imposta il numero di file alle tracce selezionate, nella stessa cartella del "
+"file visualizzato."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Etichetta i file selezionati con questo numero di tracce"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Genere:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Etichetta i file selezionati con questo genere"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Commento:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Etichetta i file selezionati con questo commento"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Compositore:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Etichetta i file selezionati con questo compositore"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Artista Originale:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Etichetta i file selezionati con questo artista originale"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Diritti d'autore:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Etichetta i file selezionati con questi diritti d'autore"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Etichetta i file selezionati con questa URL"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Codificato da:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Etichetta i file codificati con questo nome di codificatore"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Immagini"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Immagini:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Puoi usare il trascina e rilascia per aggiungere delle immagini."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Etichetta i file selezionati con queste immagini"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Rimuovi le immagini selezionate o tutte le immagini."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr ""
+"Aggiungi le immagini all'etichetta (è disponibile anche il trascina e "
+"rilascia). "
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Salva le immagini selezionate sul disco rigido."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Imposta le proprietà delle immagini selezionate."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "I file selezionati sono stati etichettati con il titolo '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Il titolo è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "I file selezionati sono stati etichettati con l'artista '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "L'artista è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr ""
+"I file selezionati sono stati etichettati con con il nome d'album '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Il nome dell'album è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "I file selezionati sono stati etichettati con il numero di disco '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Il numero di disco è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "I file selezionati sono stati etichettati con l'anno '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "L'anno è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr ""
+"I file selezionati sono stati etichettati con una traccia tipo 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "I file selezionati sono stati etichettati con una traccia tipo 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Il numero di traccia è stato rimosso dai file selezionati."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Le tracce selezionate sono state numerate in sequenza."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "I file selezionati sono stati etichettati con il genere '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Il genere è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "I file selezionati sono stati etichettati con il commento '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Il commento è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "I file selezionati sono stati etichettati con il compositore '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Il compositore è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr ""
+"I file selezionati sono stati etichettati con l'artista originale '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "L'artista originale è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "I file selezionati sono stati etichettati con i diritti d'autore '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "I diritti d'autore sono stati rimossi dai file selezionati."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "I file selezionati sono stati etichettati con l'URL '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "L'URL è stata rimossa dai file selezionati."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr ""
+"I file selezionati sono stati etichettati con il nome del codificatore '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Il nome del codificatore è stato rimosso dai file selezionati."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "I file selezionati sono stati etichettati con le immagini."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Le immagini sono state rimosse dai file selezionati."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Seleziona Modalità e Maschera e ripeti la stessa azione"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Tutte le etichette sono state analizzate"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Tutte le etichette sono state rimosse"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Tutti i file sono stati salvati..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "I file sono stati parzialmente salvati..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "I file sono stati in parte eliminati..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Tutti i file sono stati eliminati..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Vuoi scrivere l'etichetta del file\n"
+" '%s'?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Scrivi Etichetta..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Rinomina File e Cartella..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vuoi rinominare il file e la cartella \n"
+"'%s'\n"
+"in \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Rinomina Cartella..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vuoi rinominare la cartella \n"
+"'%s'\n"
+"in \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Rinomina File..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vuoi rinominare il file \n"
+"'%s'\n"
+"in \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Scrittura dell'etichetta di '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Etichette scritte"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Non posso scrivere l'etichetta nel file '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Rinomino il file '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Non è possibile rinominare il file '%s'\n"
+" in \n"
+"'%s'! \n"
+"(%s) "
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "File non rinominato/i..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Non è possibile rinominare il file \n"
+" '%s'\n"
+"perché il file seguente esiste già:\n"
+" '%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Non è possibile creare la cartella\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Il file '%s' è stato rinominato in '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "File rinominato/i..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Non posso rimuovere la vecchia cartella\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Ho spostato il file '%s' su '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "File spostato/i..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Non è possibile spostare il file '%s'\n"
+" in \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "File non spostato/i..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Vuoi davvero eliminare definitivamente il file\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Elimina File..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Il file '%s' è stato eliminato"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Non è possibile leggere la cartella:\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Ricerca in corso..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "File: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr ""
+"Sono stati trovati %d file in questa cartella e nelle relative sottocartelle."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Sono stati trovati %d file in questa cartella."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u file"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr ""
+"Non è stato trovato alcun file in questa cartella e nelle sue sottocartelle!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Non è stato trovato alcun file in questa cartella!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Ricerca..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " INTERROMPI la ricerca... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Seleziona una cartella da sfogliare!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Etichetta i file selezionati con questo campo"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Converti '_' e '%20' in spazi"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Converti ' ' in '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Tutto maiuscolo"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Tutto minuscolo"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Prima lettera maiuscola"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Prima lettera maiuscola per ogni parola"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Rimuovi spazi"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Inserisci degli spazi prima delle lettere maiuscole"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Rimuovi spazi o trattini duplicati"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: uscita anomala! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, c-format
+msgid "Received signal %s (%d)"
+msgstr "Ricevuto segnale %s (%d) "
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Probabilmente hai scoperto un baco in EasyTAG. Per favore, invia un rapporto "
+"via backtrace gdb ('gdb easytag core' poi 'bt' and 'l') a easytag@gmail.com"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Segnale sconosciuto"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Uso: easytag [opzioni] \n"
+" o: easytag [cartella]\n"
+"\n"
+"Opzioni:\n"
+"--------\n"
+"-h, --help Mostra questo testo ed esce.\n"
+"-v, --version Stampa le informazioni di base ed esce.\n"
+"\n"
+"Cartella:\n"
+"--------\n"
+"c:/path_to/files Usa un percorso assoluto per caricare.\n"
+"/path_to/files Usa un percorso assoluto per caricare.\n"
+"path_to/files Usa un percorso relativo.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: uscita normale."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Alcuni file sono stati modificati ma non salvati...\n"
+"Vuoi salvarli prima di uscire dal programma?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr "Vuoi veramente uscire dal programma?"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "Etichetta ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Etichetta Ogg Vorbis"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "Etichetta Vorbis FLAC"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "Etichetta APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "Etichetta MP4/M4A/AAC"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr "Etichetta Wavpack"
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "File MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "File MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "File Ogg Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "File successivo"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "File FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "File MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "File Monkey's Audio"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "File MP4/AAC"
+
+#: src/et_core.c:2599
+msgid "Wavpack File"
+msgstr "File Wavpack"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Immagini"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Non posso convertire il nome del file: '%s'\n"
+"nella codifica del sistema\n"
+"(Prova impostando la variabile d'ambiente G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Traduzione del nome file"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "Il nome file '%s' eccede di %d caratteri e sarà quindi troncato!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Codificatore:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Canali:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "Si è verificato un errore aprendo il file '%s' (%s)."
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ERRORE: non è possibile scrivere i commenti sul file '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "L'etichetta di '%s' è stata scritta"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "L'etichetta di '%s' è stata rimossa"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr ""
+"Si è verificato un errore durante la rimozione dell'etichetta ID3v1 di '%"
+"s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr ""
+"Si è verificato un errore durante la rimozione dell'etichetta ID3v2 di '%"
+"s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr ""
+"Si è verificato un errore durante l'aggiornamento dell'etichetta ID3v2 di '%"
+"s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"Hai cercato di salvare questa etichetta in formato Unicode ma si è scoperto "
+"che la tua versione di id3lib è bacata.\n"
+"Alcuni caratteri nell'etichetta potrebbero venir visualizzati in modo "
+"scorretto se cerchi di ricaricare questo file...\n"
+"Per favore, applica alla tua versione di id3lib la patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"disponibile nel pacchetto sorgente di EasyTAG. Ricordati che questo "
+"messaggio comparirà una volta soltanto.\n"
+"\n"
+"File: %s"
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr ""
+"Si è verificato un errore durante l'aggiornamento dell'etichetta ID3v1 di '%"
+"s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "L'etichetta di '%s' è stata aggiornata"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Non ci sono errori da riportare"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Non c'è più memoria disponibile"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Non ci sono dati da elaborare"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Dati formattati impropriamente"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Non c'è un buffer sul quale scrivere"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Il buffer è troppo piccolo"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "L'identificatore ID del frame non è valido"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Il campo richiesto non è stato trovato"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Il tipo di campo è sconosciuto"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "L'etichetta è già allegata al file"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "La versione dell'etichetta non è valida"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Non ci sono file da elaborare"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Si è cercato di scrivere su un file a sola lettura"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Errore nella compressione/decompressione"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Messaggio d'errore sconosciuto!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Il seguente file danneggiato: '%s'\n"
+"non verrà processato dal programma perché causerebbe un errore in id3lib."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "File danneggiato..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr "Registro"
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK"
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Sì "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " No "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Applica "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Salva "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Annulla "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Chiudi "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Scrivi "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Esegui "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " Ricerca "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " Sfoglia... "
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Seleziona cartella..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Seleziona file..."
+
+#: src/misc.c:886
+msgid "Warning..."
+msgstr "Attenzione..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr "Nessun riproduttore audio definito!"
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Non è possibile eseguire %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Genera una playlist"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "Nome della playlist M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Usa il nome di una cartella"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Modifica Maschere"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Opzioni Playlist"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Includi solo i file selezionati"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Solo il file selezionato sarà scritto sulla playlist, se questa opzione è "
+"attivata. In caso contrario vi saranno scritti tutti i file."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Usa un percorso completo per i file nella playlist"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Usa un percorso relativo per i file nella playlist"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Crea la playlist nella cartella genitrice"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Se questa opzione è attivata, la playlist sarà creata nella cartella "
+"genitrice."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Usa il separatore delle cartelle in stile DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Questa opzione sostituisce il separatore di cartelle UNIX '/' con quello "
+"DOS '\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Contenuto Playlist"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Scrivi solo la lista dei file"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Scrivi le informazioni usando il nome del file"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Scrivi le informazioni usando:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Il file della playlist '%s' esiste già!\n"
+"Sovrascrivo?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Scrivi Playlist..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Non è possibile scrivere la playlist nel file '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "È stato scritto il file della playlist '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Traccia"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Commento"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Compositore"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Artista Originale"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Diritti d'autore"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Codificato da"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Cerca file"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Immetti la parola da cercare nei file o non scrivere nulla per mostrare "
+"tutti i file."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "In:"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "è il Nome File"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "è l'Etichetta"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Maiuscolo e minuscolo"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Trovati: %d file"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Carica i nomi dei file da un file di testo"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "File:"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr "Carica "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Caricato Contenuto File:"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Lista Nomi File:"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Sarà eseguita l'analisi selezionata in quel momento quando questa opzione è "
+"attiva e dopo che i nomi dei file sono stati caricati (la finestra "
+"dell'analizzatore deve essere aperta)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Inserisci una linea vuota"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Elimina questa linea"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Elimina tutte le linee vuote"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Ricarica"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profilo:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Audio"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "Formato MP4 non valido"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr "Stereo"
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr "Aggiungi stereo"
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr "Canale doppio "
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr "Canale singolo"
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Ripeti l'azione per i file rimanenti"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Il flusso di dati Ogg non contiene dati vorbis."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "ERRORE: non è possibile aprire il file '%s' come vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Attenzione: il file Ogg Vorbis '%s' contiene un'etichetta ID3v2."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Aggiungi immagini"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Ogni File"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG e JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Proprietà Immagine %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Tipo Immagine"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Descrizione Immagine:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Salva immagine %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Il file seguente esiste già:\n"
+"'%s'\n"
+"Vuoi davvero sovrascriverlo?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Salva file..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "Immagine JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "Immagine PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Immagine sconosciuta"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "File icona PNG a 32x32 pixel"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Altro file icona"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Copertina (fronte)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Copertina (retro)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Pagina di volantino"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Mezzo (cioè il lato dell'etichetta di un CD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Carica artista/carica esecutore/solista"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Artista/esecutore"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Conduttore"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Gruppo/Orchestra"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Lirico/scrittore testo"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Località di registrazione"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Durante la registrazione"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Durante l'esecuzione"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Cattura schermo film/video"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Un pesce di colore intenso"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Illustrazione"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Logo gruppo/artista"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Logo editore/studio"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Tipo d'immagine sconosciuta"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "pixel"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Tipo"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Descrizione"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Non posso mostrare l'immagine visto che non sono stati letti abbastanza dati "
+"per determinare come creare il buffer dell'immagine."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Sto caricando l'immagine..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Non posso aprire il file:\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "L'immagine non è stata caricata..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Preferenze..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Navigatore File"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Vai alla cartella predefinita"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Specifica la cartella in cui risiedono i tuoi file. Questo percorso verrà "
+"caricato quando EasyTAG viene lanciato senza parametri."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Cerca automaticamente file all'avvio di EasyTAG nella seguente cartella. "
+"Nota che questo percorso può essere sovrascritto dal parametro passato ad "
+"EasyTAG: easytag /percorso_per/file_mp3."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Ricerca nelle sottocartelle"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr ""
+"Ricerca i file nelle sottocartelle durante la lettura di una cartella "
+"dell'albero"
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Mostra le sottocartelle durante la selezione di una cartella"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Questo espande il nodo selezionato nel navigatore per mostrare le "
+"sottocartelle."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Ricerca nelle cartelle nascoste"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+"Cerca file nelle cartelle nascoste (sono le cartelle che iniziano per '.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Interfaccia Utente"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Mostra le informazioni dell'intestazione del file"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Verranno mostrate sotto il nome del file informazioni quali bitrate, durata, "
+"dimensione, se questa opzione è attivata."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Mostra i file modificati nella lista usando:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Colore rosso"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Stile grassetto"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Opzioni Ordinamento Lista"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Lista file ordinata per:"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Nome file crescente"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Nome file decrescente"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Numeri di traccia crescenti"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Numeri di traccia decrescenti"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Data di creazione crescente"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Data di creazione decrescente"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Titolo crescente"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Titolo decrescente"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Artista crescente"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Artista decrescente"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Album crescenti"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Album decrescenti"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Anno crescente"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Anno decrescente"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Genere crescente"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Genere decrescente"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Commento crescente"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Commento decrescente"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Seleziona il tipo di ordinamento del file quando carichi una cartella."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+"L'ordinamento della lista terrà conto delle lettere maiuscole e minuscole, "
+"se questa opzione è attivata."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Posizione delle finestre di dialogo"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Nessuna posizione particolare"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Lascia che sia il Gestore Finestre a posizionarle."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "Centro della finestra principale"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr ""
+"Le finestre dovrebbero venir posizionate al centro della finestra principale."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Centro dello schermo"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Le finestre devono venir posizionate al centro dello schermo."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Posizione mouse"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr ""
+"Le finestre devono venir posizionate alla posizione corrente del mouse."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Riproduttore File Audio"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Riproduttore da eseguire:"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Immetti il programma usato per riprodurre i file. Si possono passare al "
+"programma alcuni argomenti (ad esempio \"xmms -p\") prima di ottenere i "
+"file, come pure altri argomenti."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Impostazioni File"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Opzioni File"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+"Sostituisci i caratteri illegali nel nome del file (per Windows e CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Converte i caratteri illegali ('\\', ':', ';', '*', '?', '\"', '<', '>', "
+"'|') presenti nel nome file per i file system di tipo FAT32/16 e ISO9660 e "
+"Joliet in modo da evitare problemi quando il file stesso viene rinominato. "
+"Utile quando si rinomina file dall'etichetta usando l'analizzatore."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Converti l'estensione del nome file in:"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Minuscolo"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Per esempio, l'estensione sarà convertita in '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Maiuscolo"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Per esempio, l'estensione sarà convertita in '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Nessuna Modifica"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "L'estensione non sarà convertita"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Mantieni la data di modifica del file"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Mantieni la data di modifica (nelle proprietà file) quando salvi il file."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Gruppo di caratteri per i nomi dei file"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Regole da applicare se alcuni caratteri non possono essere convertiti nella "
+"codifica di sistema quando venga scritto il nome del file:"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Prova un'altra codifica di caratteri"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Con questa opzione, verrà provata la conversione nella codifica associata "
+"alla tua localizzazione (per esempio: ISO-8859-1 per 'fr', KOI8-R per 'ru', "
+"ISO-8859-2 per 'ro'). Il sistema proverà la codifica ISO-8859-1 se ciò "
+"dovesse fallire."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr "Forza l'uso della codifica di sistema ed attiva la traslitterazione"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Con questa opzione, un carattere che non possa essere rappresentato nella "
+"codifica scelta potrà venire approssimato ad uno o più caratteri somiglianti."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"Forza l'uso della codifica di sistema e rifiuta silenziosamente alcuni "
+"caratteri"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Con questa opzione, un carattere sarà rigettato silenziosamente quando non "
+"possa essere rappresentato nella codifica di sistema."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Impostazioni Etichetta"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Opzioni Etichetta"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Completamento automatico della data se incompleta"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Prova a completare il campo dell'anno se si immettono solo le ultime cifre "
+"della data (per esempio, se l'anno corrente è 2005: 5 => 2005, 4 => 2004, 6 "
+"=> 1996, 95 => 1995, etc.)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Scrivi il campo della traccia con il seguente numero di cifre:"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Se questa opzione è attivata, il campo della traccia sarà scritto usando il "
+"numero '0' come riempimento per ottenere un numero con 'n' cifre (esempio "
+"con due cifre: '05', '09', '10',...). Altrimenti sarà mantenuto il valore "
+"'grezzo' della traccia."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "File Ogg Vorbis: scrivi il commento anche nel formato XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS non usa il modo giusto per identificare un commento nei file Ogg Vorbis "
+"come fanno altre applicazioni. Infatti questo campo è normalmente "
+"etichettato con 'commento=', mentre XMMS usa solo `='. Per favore, non "
+"selezionare questa opzione se non vuoi che altre applicazioni si lamentino "
+"per un campo sconosciuto! I commenti, però, non saranno mostrati in XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"Focalizza il campo dell'etichetta quando scorri i file nella lista usando le "
+"scorciatoie PaginaSu/PaginaGiù."
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Focalizza sulle stesso campo dell'etichetta"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+"Riporta l'attenzione al primo campo dell'etichetta (cioè il campo 'Titolo')"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "Impostazioni Etichetta ID3"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Regole Etichetta ID3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Scrivi etichette ID3 nei file FLAC con l'etichetta FLAC"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Le etichette ID3 verranno aggiunte nel file FLAC (in accordo con le due "
+"regole di cui sopra più l'etichetta FLAC), se questa opzione è attivata. In "
+"caso contrario le etichetta ID3 verranno tolte."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Togli le etichette se tutti i campi sono vuoti"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Poiché le etichette ID3v2 possono contenere altre informazioni oltre a "
+"titolo, artista, album, anno, traccia, genere e commento (come un'immagine "
+"allegata, il testo della canzone, ...) questa opzione permette di eliminare "
+"l'intera etichetta qualora questi sette campi risultino tutti vuoti."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Converti automaticamente le vecchie versioni delle etichette ID3v2"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Una vecchia versione dell'etichetta ID3v2 (come ID3v2.2) sarà aggiornata "
+"allaversione ID3v2.3, se questa opzione è attivata."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Scrivi etichetta ID3v2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Gruppo di caratteri per le etichette ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Scrivi etichetta ID3v2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Scrivi etichetta ID3v2"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Verrà aggiunta o aggiornata un'etichetta di tipo ID3v2 all'inizio dei file "
+"MP3, se questa opzione è attivata. Sarà invece tolta in caso contrario."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Descrizione:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Codificato da"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Gruppo di caratteri usato per scrivere i dati dell'etichetta nel file."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " No "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "Etichetta ID3"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Scrivi etichetta ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Verrà aggiunta o aggiornata un'etichetta di tipo ID3v1 in fondo ai file MP3, "
+"se questa opzione è attivata. Sarà invece tolta in caso contrario."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Gruppo di caratteri usato per scrivere i dati dell'etichetta nel file."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Gruppo di caratteri per le etichette ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Questa codifica verrà usata quando si leggono i dati dell'etichetta, per "
+"convertire ogni stringa trovata in un campo ISO-8859-1 dell'etichetta (per "
+"etichette ID3v2 e/o ID3v1).\n"
+"\n"
+"Per esempio:\n"
+" - nelle precedenti versioni di EasyTag, si poteva salvare stringhe UTF-8 in "
+"un campo ISO-8859-1. Questo non è corretto! Per convertire queste etichette "
+"nella codifica UNICODE, attiva questa opzione e seleziona UTF-8. Devi anche "
+"attivare l'opzione 'Cerca di salvare le etichette in formato ISO-8859-1. Se "
+"non è possibile allora usa la codifica UNICODE (raccomandata)' oppure 'Salva "
+"sempre le etichette nella codifica UNICODÈ.\n"
+" - Se non viene usata la codifica UNICODE, le genti russe possono "
+"selezionare la codifica 'Windows-1251' per caricare etichette scritte sotto "
+"Windows e 'KOI8-R' per caricare etichette scritte sotto sistemi Unix."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Gruppo di caratteri usato per leggere i dati dell'etichetta nel file."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Analizzatore"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Analizzatore Riempi etichetta - Conversione Caratteri"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr ""
+"Converti il carattere trattino-basso '_' e la stringa '%20' nello spazio ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Converti lo spazio ' ' nel trattino-basso '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"La conversione avrà luogo durante l'applicazione di una maschera "
+"dall'analizzatore per etichette, se questa opzione è attivata."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Analizzatore Rinomina File - Conversione Caratteri"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"La conversione avrà luogo durante l'applicazione di una maschera "
+"dall'analizzatore per nomi di file, se questa opzione è attivata."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Analizzatore Processa Campi - Conversione Caratteri"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+"Non scrivere maiuscola la prima lettera per alcune preposizioni ed articoli."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Non convertire la prima lettera di parole quali preposizioni, articoli e "
+"parole quali 'carat.', quando venga usata la maschera 'Prima lettera "
+"maiuscola di ogni parola' (per esempio, otterrai così 'Testo in una "
+"Voce'invece di 'Testo In Una Voce')."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Finestra Analizzatore"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Apri la Finestra Analizzatore all'avvio"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Attiva questa opzione per aprire automaticamente la finestra "
+"dell'analizzatore all'avvio di EasyTAG."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Finestra dell'analizzatore sempre in primo piano"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"La finestra contenente le maschere rimarrà sempre sopra a quella principale, "
+"se questa opzione è attivata."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Campi"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Sovrascrivi i campi durante la scansione dell'etichetta"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"L'analizzatore sostituirà il testo già presente nei campi con quello nuovo. "
+"Verranno riempiti solo i campi vuoti se disattivata, se questa opzione è "
+"attivata."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Imposta questo testo come commento predefinito:"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Attiva questa opzione se vuoi mettere la seguente stringa nel campo di "
+"commento quando usi l'analizzatore 'Riempi Etichetta'."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+"Usa CRC32 come commento predefinito (solo per file con le etichette ID3)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Calcola il valore di CRC32 del file e lo scrive nel campo dedicato al "
+"commento quando si usa l'analizzatore 'Riempi Etichetta'."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "Database CD"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "Impostazioni Server per Ricerca Automatica"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Nome:"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Porta:"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "Percorso CGI:"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "Impostazioni Server per Ricerca Manuale"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+msgid "Local CD Data Base"
+msgstr "Database Locale CD"
+
+#: src/prefs.c:1203
+msgid "Path :"
+msgstr "Percorso:"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+"Specifica la cartella dove sono localizzati i database cd locali. Il "
+"database cd locale contiene le undici seguenti cartelle: 'blues', "
+"'classical', 'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', "
+"'soundtrack' e 'misc'."
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Impostazioni Proxy"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Utilizza un proxy"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Imposta come attive le impostazioni del server proxy."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Nome Nodo:"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Nome del server proxy."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Porta del server proxy."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Nome Utente:"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Nome dell'utente per il server proxy."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Password Ptente:"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Password dell'utente per il proxy server."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Elenco Nomi Traccia"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"Seleziona il file audio corrispondente (concordemente alla posizione o al "
+"DLM se attivato più sotto)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Il file corrispondente nella lista principale sarà selezionato qualora venga "
+"selezionata una linea nell'elenco dei nomi delle tracce, se questa opzione è "
+"attivata."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Usa l'algoritmo Levenshtein (DLM) per far corrispondere linee (usando il "
+"loro titolo) con file audio (usando il loro nome)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Conferma"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Conferma l'uscita dal programma"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Apre una finestra di dialogo per chiedere conferma prima di uscire dal "
+"programma, se questa opzione è attivata."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Conferma la scrittura delle etichette"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Conferma il cambio del nome dei file"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Conferma l'eliminazione dei file"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Conferma la scrittura della playlist"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Applica le modifiche (senza salvare) e chiudi questa finestra"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Chiudi questa finestra senza salvare"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Salva le modifiche e chiudi questa finestra"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Esempio: %.*d_-_Nome_traccia_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Le modifiche sono state applicate"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "La configurazione è stata salvata"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "La configurazione è rimasta invariata"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" Il percorso selezionato come 'Percorso predefinito file' non è valido!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Non una cartella"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "Il riproduttore audio '%s' non può essere trovato!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Riempi Etichetta"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Rinomina File e Cartella"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Processa Campi"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "L'etichetta è stata analizzata con successo..."
+
+#: src/scan.c:352
+#, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "L'etichetta è stata analizzata con successo... (%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+"Analizzatore Etichetta: strano.... l'estensione '%s' non è stata trovata nel "
+"nome file '%s'!"
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr ""
+"Errore Scansione: non è possibile trovare il separatore '%s' all'interno di "
+"'%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "Non posso convertire il nome del file '%s' nella codifica di sistema."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Il nuovo nome del file è stato processato con successo..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Il nuovo nome del file è stato processato con successo... (%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Scansione Etichetta e Nome File"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Analizzatore: "
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Seleziona il tipo di analizzatore da usare"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Apri la finestra dell'analizzatore / Scansiona i file selezionati"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Opzioni Analizzatore"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Mostra/Nascondi Modificatore Maschere"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Mostra/Nascondi Legenda"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Chiudi questa finestra"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Scegli o immetti una maschera utilizzando i codici (vedi legenda) per "
+"processare nome di file e percorso. Viene usato per riempire i campi delle "
+"etichette."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Anteprima riempimento etichette..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Anticipa la maschera con il percorso corrente"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Scegli o immetti una maschera utilizzando i codici (vedi legenda) per "
+"processare i campi delle etichette. Viene usato per rinominare i file.\n"
+"Usa / per creare le cartelle. Avrai un percorso assoluto se il primo "
+"carattere è /, altrimenti è relativo al vecchio percorso."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Anteprima rinomina file..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Seleziona i campi:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"I bottoni sulla destra rappresentano i campi che possono venir processati. "
+"Scegli quelli di tuo proprio interesse."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Processa il campo nome"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Processa il campo titolo"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Processa il campo artista"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Processa il campo album"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Processa il campo genere"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Processa il campo commento"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Processa il campo compositore"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Processa il campo artista originale"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Processa il campo diritti d'autore"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Processa il campo URL"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Processa il campo nome del codificatore"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Inverti Selezione"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Seleziona/Deseleziona Tutto."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Converti '_' e '%20' in ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Converti:"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "a:"
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Il carattere di trattino-basso o la stringa '%20' sono sostituiti con uno "
+"spazio. Esempio, prima: 'Testo%20In%20Una_Voce', dopo: 'Testo In Una Voce'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Il carattere spazio è sostituito con un trattino-basso. Esempio, prima: "
+"'Testo in una voce', dopo: 'Testo_in_una_voce'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Sostituisci un carattere con un altro."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Converti tutte le parole di tutti i campi in maiuscolo. Esempio, prima: "
+"'Testo IN UNA voce', dopo: 'TESTO IN UNA VOCÈ."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Converti tutte le parole di tutti i campi in minuscolo. Esempio, prima: "
+"'TESTO IN una voce', dopo: 'testo in una voce'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Converti la lettera iniziale della prima parola di tutti i campi in "
+"maiuscolo. Esempio, prima: 'testo IN una VOCE', dopo: 'Testo in una voce'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Converti la lettera iniziale di ogni parola di tutti i campi in maiuscolo. "
+"Esempio, prima: 'Testo in una VOCE', dopo: 'Testo In Una Voce'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Inserisci uno spazio prima di una lettera maiuscola"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Rimuovi i duplicati di spazi ed i trattini-bassi"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Rimuovi tutti gli spazi fra le parole. Esempio, prima: 'Testo In Una Voce', "
+"dopo: 'TestoInUnaVoce'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Viene inserito uno spazio prima di ogni lettera maiuscola. Esempio, prima: "
+"'TestoInUnaVoce', dopo: 'Testo In Una Voce'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Rimuovi spazi e trattini-bassi doppi. Esempio, prima: 'Testo__In__Una "
+"Voce', dopo: 'Testo_In_Una Voce'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Legenda"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : artista"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : commento"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : compositore"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : diritti d'autore"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d: numero disco"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : codificato da"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : genere"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ignorato"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : numero di tracce"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : artista originale"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : traccia"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : titolo"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : anno"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Modificatore Maschera"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Crea Nuova Maschera"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Sposta Su questa Maschera"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Sposta Giù questa Maschera"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Duplica Maschera"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Aggiungi Maschere Predefinite"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Rimuovi Maschera"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Salva Maschere"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Nuova_maschera"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Copia: nessuna riga selezionata!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Rimuovi: nessuna riga selezionata!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Sposta su: nessuna riga selezionata!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Sposta giù: nessuna riga selezionata!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "ERRORE: non riesco a scrivere il file di configurazione %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Non riesco ad aprire il file di configurazione '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Carico la configurazione predefinita..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Non riesco a creare o ad aprire il file '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "ERRORE: non riesco a scrivere la lista nel file %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Carico le maschere preimpostate di 'Riempi Etichetta'..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Carico le maschere preimpostate di 'Rinomina File'..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Carico le maschere preimpostate di 'Rinomina Cartella'..."
+
+#: src/setting.c:1589
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr "ERRORE: la variabile d'ambiente HOME non è definita!"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "ERRORE: non riesco a creare la cartella '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Input troncato o vuoto."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Input non è un flusso di dati Ogg."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr ""
+"Si è verificato un errore nella lettura della prima pagina del flusso di "
+"dati Ogg."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr ""
+"Si è verificato un errore nella lettura del pacchetto d'intestazione "
+"iniziale."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Il flusso di dati Ogg non contiene dati vorbis."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "L'intestazione secondaria è daneggiata."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF prima della fine delle intestazioni Vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Dati danneggiati o mancanti, continuo..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Si è verificato un errore nella scrittura del flusso sull'uscita. Il flusso "
+"d'uscita potrebbe risultare danneggiato o troncato."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr "DLL '%s' non trovata. Provo a caricarla..."
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr "Non è stato possibili caricare la DLL '%s'"
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr "Questa versione di '%s' contiene '%s'"
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr "La funzione '%s' non è stata trovata nella dll '%s'"
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, c-format
+msgid "Audio player: '%s'"
+msgstr "Riproduttore Audio: '%s'"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr "Cartella delle impostazioni EasyTAG: '%s'"
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "La versione dell'etichetta non è valida"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Usa riempimento"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Imposta il riempimento nelle etichette ID3v2 per una scrittura più veloce "
+#~ "durante le loro future modifiche."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Salva sempre le etichette nella codifica ISO-8859-1"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Usa la codifica ISO-8859-1 (codifica a singolo byte) per scrivere "
+#~ "l'etichetta. Questa codifica può essere usata per le etichette ID3v2 e "
+#~ "ID3v1 ma nota che i caratteri non ISO-8859-1 verranno persi.\n"
+#~ "\n"
+#~ "Se una codifica differente è selezionata con 'Usa codifica non standard "
+#~ "per scrivere le etichette ID3', verrà usata invece di ISO-8859-1.\n"
+#~ "Inoltre, possono venir definite alcune regole se dei caratteri non "
+#~ "possono essere convertiti."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Cerca di salvare le etichette nella codifica ISO-8859-1. Se non fosse "
+#~ "possibile usa la codifica UNICODE (raccomandato)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "La codifica UNICODE verrà usata se fallirà la codifica ISO-8859-1. La "
+#~ "codifica UNICODE può essere usata per ID3v2 ma non per quella ID3v1 che "
+#~ "usa solo un gruppo di caratteri a singolo byte (di default ISO-8859-1).\n"
+#~ "\n"
+#~ "Verrà usata una codifica diversa dalla ISO-8859-1 se selezionata con il "
+#~ "comando 'Usa codifica non standard per scrivere etichette ID3'.\n"
+#~ "Inoltre possono venire definite alcune regole se dei caratteri non "
+#~ "possono essere convertiti."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Salva sempre le etichette nella codifica UNICODE"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Usa la codifica UNICODE per le etichette. Le etichette ID3v2 sono sempre "
+#~ "salvate in una codifica di caratteri a singolo byte (di default ISO-8859-"
+#~ "1).\n"
+#~ "\n"
+#~ "Verrà usata una codifica diversa da ISO-8850-1 se selezionata con il "
+#~ "comando 'Usa codifica non standard per scrivere le etichette ID3'."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "Per i campi ISO-8859-1 sovrascrivi con la seguente codifica (per utenti "
+#~ "esperti solamente!):"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr ""
+#~ "Usa il gruppo di caratteri non standard per leggere le etichette ID3:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr ""
+#~ "Usa il gruppo di caratteri non standard ISO-8859-1 per scrivere le "
+#~ "etichette ID3:"
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Questa codifica sarà usata per scrivere i dati dell'etichetta, per "
+#~ "convertire ogni stringa salvata in un campo ISO-8859-1 nell'etichetta "
+#~ "(per ID3v2 e/o ID3v1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "Per i campi ISO-8859-1 applica anche queste regole se alcuni caratteri "
+#~ "non possono essere convertiti quando le etichette vengono scritte:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Non fare nulla"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr "Forza usando la codifica di sistema ed attiva la traslitterazione"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr ""
+#~ "Forza usando la codifica di sistema e rigetta silenziosamente alcuni "
+#~ "caratteri"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "La traduzione del gruppo di caratteri da '%s'\n"
+#~ "a '%s' non è supportata!"
+
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "Si è verificato un errore aprendo il file '%s' (%s)"
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Carica la cartella all'avvio"
diff --git a/po/ja.gmo b/po/ja.gmo
new file mode 100644
index 0000000..2e14d9f
--- /dev/null
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..6a66398
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,4975 @@
+# Japanese catalog for EasyTAG.
+# Copyright (C) 2000-2007 Free Software Foundation, Inc.
+# Takeshi Aihana <takeshi.aihana@gmail.com>, 2000-2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: easytag 1.99.13\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2007-01-08 14:44+0900\n"
+"Last-Translator: Takeshi AIHANA <takeshi.aihana@gmail.com>\n"
+"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG 㯠MP3, MP2, FLAC, Ogg Vorbis, MP4/AAC, MusePack 㨠Monkey's オー"
+"ディオ・ファイル㮠ID3 タグを表示ã—ãŸã‚Šã€ç·¨é›†ã™ã‚‹ãŸã‚ã®ãƒ„ールã§ã™ã€‚シンプルã§"
+"クール㪠GTK+ インタフェースを採用ã—ã¦ã„ã‚‹ã®ã§ã€GNU/Linux ã§ç°¡å˜ã«ã‚¿ã‚°ã®ç·¨é›†"
+"ãŒã§ãã¾ã™ã€‚"
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(ドイツ語)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(ロシア語)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(オランダ語)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(スウェーデン語)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(ãƒãƒ³ã‚¬ãƒªãƒ¼èªž)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(イタリア語)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(日本語)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(ウクライナ語)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(ãƒã‚§ã‚³èªž)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(スペイン語)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªž)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(ルーマニア語)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(デンマーク語)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(ギリシア語)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(ブラジル・ãƒãƒ«ãƒˆã‚¬ãƒ«èªž)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(ブルガリア語)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(中国語)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(ギリシア語)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "情報..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "情報"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(ビルドã—ãŸæ—¥ä»˜: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(ビルド環境: GTK+ %d.%d.%d 㨠id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(MP3 ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(MP3 ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(MP3 ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(MP3 ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Ogg Vorbis ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(MP3 ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(FLAC ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(MP4/AAC ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(MP3 ファイルã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "作者: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-メール: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "ウェブ・ページ: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "紹介:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "貢献者"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "翻訳:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "全般:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "変更点"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "ファイル '%s' (%s) ãŒé–‹ã‘ã¾ã›ã‚“"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "ファイルã®ã‚ªãƒ¼ãƒ—ン中ã«ã‚¨ãƒ©ãƒ¼: '%s' (%s)"
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "ファイル(_F)"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "ã‚¿ã‚°é †ã§ä¸¦ã³æ›¿ãˆ"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "プロパティ順ã§ä¸¦ã³æ›¿ãˆ"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "ファイルåã§æ˜‡é †"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "ファイルåã§é™é †"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "作æˆæ—¥ã§æ˜‡é †"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "作æˆæ—¥ã§é™é †"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "トラック番å·ã§æ˜‡é †"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "トラック番å·ã§é™é †"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "タイトルã§æ˜‡é †"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "タイトルã§é™é †"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "æ¼”å¥è€…ã§æ˜‡é †"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "æ¼”å¥è€…ã§é™é †"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "アルãƒãƒ åã§æ˜‡é †"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "アルãƒãƒ åã§é™é †"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "制作年ã§æ˜‡é †"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "制作年ã§é™é †"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "ジャンルã§æ˜‡é †"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "ジャンルã§é™é †"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "コメントã§æ˜‡é †"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "コメントã§é™é †"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "コンãƒãƒ¼ã‚¶ã§æ˜‡é †"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "コンãƒãƒ¼ã‚¶ã§é™é †"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "オリジナルã®æ¼”å¥è€…ã§æ˜‡é †"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "オリジナルã®æ¼”å¥è€…ã§é™é †"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "ライセンスã§æ˜‡é †"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "ライセンスã§é™é †"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "URLã§æ˜‡é †"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "URLã§é™é †"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "エンコーディングã§æ˜‡é †"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "エンコーディングã§é™é †"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "ファイルã®ç¨®é¡žã§æ˜‡é †"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "ファイルã®ç¨®é¡žã§é™é †"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "サイズã§æ˜‡é †"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "サイズã§é™é †"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "æ¼”å¥æ™‚é–“ã§æ˜‡é †"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "æ¼”å¥æ™‚é–“ã§é™é †"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "ビットレートã§æ˜‡é †"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "ビットレートã§é™é †"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "サンプリングレートã§æ˜‡é †"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "サンプリングレートã§é™é †"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "ä»–ã®ãƒ—ログラムã§é–‹ã..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "全ファイルã®é¸æŠž"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "全ファイルã®æœªé¸æŠž"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "ファイルé¸æŠžã®å転"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "ファイルã®å‰Šé™¤..."
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "先頭ã®ãƒ•ã‚¡ã‚¤ãƒ«(_F)"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "先頭ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ã¾ã™"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "å‰ã®ãƒ•ã‚¡ã‚¤ãƒ«(_P)"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "å‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ã¾ã™"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "次ã®ãƒ•ã‚¡ã‚¤ãƒ«(_N)"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "次ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ã¾ã™"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "最後ã®ãƒ•ã‚¡ã‚¤ãƒ«(_L)"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "最後ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ã¾ã™"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "ファイルã®ã‚¹ã‚­ãƒ£ãƒ³(_C)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "ファイルをスキャンã—ã¾ã™"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "ã‚¿ã‚°ã®å‰Šé™¤(_R)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "タグを削除ã—ã¾ã™"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "最後ã®å¤‰æ›´ã«æˆ»ã™(_U)"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "最後ã®ãƒ•ã‚¡ã‚¤ãƒ«å¤‰æ›´ã«æˆ»ã—ã¾ã™"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "最後ã®å¤‰æ›´ã‚’å–り消ã™(_E)"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "最後ã®ãƒ•ã‚¡ã‚¤ãƒ«å¤‰æ›´ã‚’å–り消ã—ã¾ã™"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "ファイルã®ä¿å­˜(_S)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "ファイルをä¿å­˜ã—ã¾ã™"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "ファイルã®å¼·åˆ¶ä¿å­˜(_F)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "ファイルを強制的ã«ä¿å­˜ã—ã¾ã™"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "最後ã®å¤‰æ›´ã«æˆ»ã™"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "最後ã®å¤‰æ›´ã‚’å–り消ã™"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "終了(_Q)"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "終了ã—ã¾ã™"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "å‚ç…§(_B)"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "ホームã¸(_H)"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "ホーム・フォルダã¸ç§»å‹•ã—ã¾ã™"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "デフォルトã¸(_D)"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "デフォルトã®ãƒ•ã‚©ãƒ«ãƒ€ã¸ç§»å‹•ã—ã¾ã™"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’デフォルトã«(_C)"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "ã“ã®ãƒ‘スをデフォルト・フォルダã«ã‚»ãƒƒãƒˆã—ã¾ã™"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "ツリー表示 | æ¼”å¥è€…・アルãƒãƒ è¡¨ç¤º"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "フォルダåã®å¤‰æ›´..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "フォルダã®å†èª­ã¿è¾¼ã¿"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "ä»–ã®ãƒ—ログラムã§å‚ç…§ ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "ツリーを折り畳む(_C)"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "ツリーã®æ›´æ–°(_R)"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "スキャナ(_C)"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "ã‚¿ã‚°ã®ä»˜ä¸Ž(_F)..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "タグを付与ã—ã¾ã™..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "ファイルåã¨ãƒ•ã‚©ãƒ«ãƒ€åã®å¤‰æ›´(_R)..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "ファイルåã¨ãƒ•ã‚©ãƒ«ãƒ€åを変更ã—ã¾ã™..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "フィールドã®ç·¨é›†(_P)..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "フィールドを編集ã—ã¾ã™..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "ãã®ä»–(_M)"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "ファイルã®æ¤œç´¢(_F)..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "ファイルを検索ã—ã¾ã™..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "CDデータベースã®æ¤œç´¢(_B)..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB ã‹ã‚‰æ¤œç´¢ã—ã¾ã™..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "TXT ã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«åã®èª­ã¿è¾¼ã¿..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "æ¼”å¥ä¸€è¦§ã®æ›¸ãè¾¼ã¿..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "オーディオ・プレイヤーã®èµ·å‹•"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "設定(_S)"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "設定(_P)..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "設定..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "ヘルプ(_H)"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "情報(_A)"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "ç¾åœ¨ã®å‡¦ç†ã‚’中止ã—ã¾ã™"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "ファイルæ“作(_F)"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "CDDB 検索..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "サブフォルダをå‚ç…§ã™ã‚‹(_S)"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "éš ã—フォルダを表示ã™ã‚‹"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "ツリー表示ã¾ãŸã¯æ¼”å¥è€…ã¨ã‚¢ãƒ«ãƒãƒ å表示を切り替ãˆã¾ã™"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "UI をマージã§ãã¾ã›ã‚“ã§ã—㟠(エラー: %s)\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "起動完了..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "æ–°ã—ã„デフォルトパスãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "確èª..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"ã„ãã¤ã‹ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’変更ã—ã¾ã—ãŸãŒã€ä¿å­˜ã—ã¦ã„ã¾ã›ã‚“...\n"
+"フォルダを移動ã™ã‚‹å‰ã«ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"指定ã—ãŸãƒ‘スåãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“ï¼:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "エラー..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<å…¨ã¦ã®ã‚¢ãƒ«ãƒãƒ >"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "エラー: %s ã®æ¤œç´¢ä¸­ã«ã€ãƒ„リーã®ãƒŽãƒ¼ãƒ‰ %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "æ¼”å¥è€…"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# アルãƒãƒ "
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# ファイル"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "アルãƒãƒ å"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "上ã®ãƒ•ã‚©ãƒ«ãƒ€ã¸ç§»å‹•ã—ã¾ã™"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "å‚ç…§ã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ã‚’入力ã—ã¦ä¸‹ã•ã„。"
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "ツリー"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "æ¼”å¥è€… / アルãƒãƒ "
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "フォルダåã®å¤‰æ›´"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "変更後ã®ãƒ•ã‚©ãƒ«ãƒ€ '%s' ã®åå‰ : "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "使用ã™ã‚‹ãƒžã‚¹ã‚¯ :"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "ã“れを有効ã«ã™ã‚‹ã¨ã€ãƒ•ã‚©ãƒ«ãƒ€åを変更ã™ã‚‹æ™‚ã®ãƒžã‚¹ã‚¯ã¨ã—ã¦ä½¿ç”¨ã—ã¾ã™"
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"タグフィールドã‹ã‚‰ãƒ•ã‚©ãƒ«ãƒ€åを変更ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ãƒžã‚¹ã‚¯ã®ã‚³ãƒ¼ãƒ‰(凡例をå‚ç…§"
+"ã®ã“ã¨)ã‚’é¸æŠžã¾ãŸã¯å…¥åŠ›ã—ã¦ä¸‹ã•ã„"
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "スキャナマスクãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "フォルダå変更ã®ãƒ—レビュー..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "フォルダåを入力ã—ã¦ä¸‹ã•ã„ï¼"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"'%s' をファイルåã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚別ã®åå‰ã‚’指定ã—ã¦"
+"下ã•ã„。"
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ«ãƒ€åãŒæ—¢ã«å­˜åœ¨ã—ã¦ã„ã‚‹ã®ã§ã€åå‰ã‚’変更ã§ãã¾ã›ã‚“ï¼\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"フォルダåを変更ã§ãã¾ã›ã‚“ï¼\n"
+"'%s'\n"
+" =>\n"
+"'%s'\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "フォルダåを変更ã—ã¾ã—ãŸ"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "実行ã™ã‚‹ãƒ—ログラム :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"実行ã™ã‚‹ãƒ—ログラムåを入力ã—ã¦ä¸‹ã•ã„。引数ã¯ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€åã«ãªã‚Šã¾ã™ã€‚"
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "ä»–ã®ãƒ—ログラムã§é–‹ã..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"実行ã™ã‚‹ãƒ—ログラムåを入力ã—ã¦ä¸‹ã•ã„。引数ã¯ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«åã«ãªã‚Šã¾ã™ã€‚"
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "プログラムåを入力ã—ã¦ä¸‹ã•ã„ï¼"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "プログラム '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ï¼"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "%sを実行ã§ãã¾ã›ã‚“ï¼ (エラー %d)\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "å­ãƒ—ロセスを作æˆã™ã§ãã¾ã›ã‚“ï¼\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "コマンドã¨å¼•æ•° : '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "æ¼”å¥è€… / アルãƒãƒ "
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "カテゴリ"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "トラックå"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "æ¼”å¥æ™‚é–“"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "CD データベースã®æ¤œç´¢"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "自動検索"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "CD データベースã¸ã®è¦æ±‚ :"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"指定ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’使ã£ã¦ CddbID を生æˆã™ã‚‹ã‚ˆã†CDDBã¸è‡ªå‹•çš„ã«è¦æ±‚ã—ã¾ã™ (順番"
+"も関係ã—ã¾ã™ï¼)"
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "検索ã®åœæ­¢..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’読ã¿è¾¼ã‚“ã å¾Œã«ã€ç¾åœ¨é¸æŠžã—ã¦ã„るスキャナãŒå®Ÿ"
+"è¡Œã•ã‚Œã¾ã™ (スキャナ・ウィンドウを開ã„ã¦ãŠãå¿…è¦ã‚ã‚Š)"
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "手動検索"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "å˜èªž :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "検索ã™ã‚‹å˜èªžã‚’入力ã—ã¦ä¸‹ã•ã„ (区切り記å·: スペース ' ' ã¾ãŸã¯ '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "検索対象 :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "å…¨ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "ãã®ä»–"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "å…¨ã¦ã®ã‚«ãƒ†ã‚´ãƒª"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "ブルース"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "クラッシック"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "カントリー"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "フォーク"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "ジャズ"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "ãã®ä»–"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "ニューエイジ"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "レゲ"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "ロック"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "サウンドトラック"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "ファンクã€ã‚½ã‚¦ãƒ«ã€ãƒ©ãƒƒãƒ—ã€ãƒãƒƒãƒ—ã€ã‚¤ãƒ³ãƒ€ã‚¹ãƒˆãƒªã‚¢ãƒ«ã€ãƒ¡ã‚¿ãƒ«ãªã©ã‚’å«ã‚€"
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "映画ã€ã‚·ãƒ§ãƒ¼"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "上記ã®ã‚«ãƒ†ã‚´ãƒªã«ä¸€è‡´ã—ãªã„ãã®ä»–ã®ã‚‚ã®"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " カテゴリ "
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "çµæžœ :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "検索 :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "次ã®ä¸€è¦§ã®ä¸­ã«æ¤œç´¢ã™ã‚‹å˜èªžã‚’入力ã—ã¦ä¸‹ã•ã„"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "次を検索ã—ã¾ã™"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "å‰ã‚’検索ã—ã¾ã™"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "赤線ã¾ãŸã¯å…¨ã¦ã®ç·šã‚’表示ã—ã¾ã™"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "å…¨ã¦ã®è¡Œã‚’未é¸æŠžã«ã™ã‚‹"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "é¸æŠžã—ãŸè¡Œã‚’未é¸æŠžã«å転ã—ã¾ã™"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "å…¨ã¦ã®è¡Œã‚’é¸æŠžã—ã¾ã™"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"ファイル一覧㫠'é©ç”¨' ã™ã‚‹è¡Œã‚’é¸æŠžã—ã¦ä¸‹ã•ã„。もã—何もé¸æŠžã—ãªã„ã¨ã€å…¨ã¦ã®è¡Œ"
+"ãŒå‡¦ç†ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ä¸‹ã•ã„。\n"
+"ã¾ãŸã€[é©ç”¨]ボタンを押下ã™ã‚‹å‰ã«å„è¡Œã®é †ç•ªã‚’変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "セット先 :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "å…¨ã¦"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "ファイルå"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "タイトル"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "制作年"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "トラック #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# トラック"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "ジャンル"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "å„ファイルã«ç¾åœ¨ã®ã‚¹ã‚­ãƒ£ãƒŠã‚’実行ã™ã‚‹"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ãƒ•ã‚©ãƒ«ãƒ€ã®ä¸­ã«ã‚ã‚‹å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—㦠CDDB "
+"ã®ã‚¿ã‚¤ãƒˆãƒ«ã«ä¸€è‡´ã™ã‚‹å ´åˆã« Levenshtein アルゴリズム (DLM : Damerau-"
+"Levenshtein Metric) ã‚’é©ç”¨ã—ã¾ã™ (ã“ã‚Œã¯æ¥½æ›²ãƒ•ã‚¡ã‚¤ãƒ«ã«ç›¸å½“ã™ã‚‹ã‚‚ã®ã‚’é¸æŠžã—ãŸ"
+"ã‚Šã€CDDB ã®çµæžœã‚’é©ç”¨ã™ã‚‹æ™‚ã«ä½¿ç”¨ã—ã¾ã™)"
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "指定ã—ãŸè¡Œã¾ãŸã¯ (ã‚‚ã—è¡ŒãŒæŒ‡å®šã•ã‚Œãªã‘ã‚Œã°) å…¨ã¦ã®è¡Œã‚’読ã¿è¾¼ã¿ã¾ã™"
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "検索ã®æº–備完了..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"アルãƒãƒ : '%s', æ¼”å¥è€…: '%s', 時間: '%s', 制作年: '%s', ジャンル: '%s', ID: "
+"'%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "é¸æŠžç¯„囲をå転ã™ã‚‹"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "トラック番å·ã§ä¸¦ã³æ›¿ãˆ"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "トラックåã§ä¸¦ã¹æ›¿ãˆ"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "ホスト '%s' ã®æ¤œç´¢ä¸­ ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "ホスト '%s' (%s) ã®åå‰è§£æ±ºãŒã§ãã¾ã›ã‚“ï¼"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "æ–°ã—ã„ソケット (%s) を生æˆã§ãã¾ã›ã‚“ï¼"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "ホスト '%s' (ãƒãƒ¼ãƒˆ '%d') ã«æŽ¥ç¶šä¸­ ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "ホスト '%s' (%s) ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ï¼"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "ホスト '%s' ã«æŽ¥ç¶šã—ã¾ã—ãŸ"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "データ (%s) ã®å—信中 ..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "cddb ã‹ã‚‰ã®å¿œç­” (%s) ã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ï¼"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "ファイル '%s' (%s) を生æˆã§ãã¾ã›ã‚“"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "ファイル '%s' (%s) ãŒé–‹ã‘ã¾ã›ã‚“"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "リクエストã®é€ä¿¡ä¸­ ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "リクエスト (%s) ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ï¼"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "データã®å—信中 ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "サーãƒãŒãŠã‹ã—ãªãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã—ã¦ãã¾ã—ãŸï¼"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "サーãƒãŒãŠã‹ã—ãªãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã—ã¦ãã¾ã—ãŸï¼ (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "ã™ã¿ã¾ã›ã‚“ã€ç¾åœ¨ã‚¦ã‚¨ãƒ–検索ã¯ãƒ€ã‚¦ãƒ³ã—ã¦ã„ã¾ã™ï¼"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "一致ã™ã‚‹ã‚¢ãƒ«ãƒãƒ ãŒ %d 個見ã¤ã‹ã‚Šã¾ã—ãŸ"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "%d ページã®ãƒ‡ãƒ¼ã‚¿ã®å—信中..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "%d ページã®ãƒ‡ãƒ¼ã‚¿ã®å—信中..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "ã•ã‚‰ã«èª­ã¿è¾¼ã‚“ã çµæžœ..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "ファイルãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¾ã—ãŸ"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "検索ã®æº–備完了..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "リクエストã®è¦æ±‚中 (CddbId: %s, トラック番å·: %d, サイズ: %d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "一致ã™ã‚‹ã‚¢ãƒ«ãƒãƒ ãŒ %d 個見ã¤ã‹ã‚Šã¾ã—ãŸ"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "ファイル '%s' (%s) ãŒé–‹ã‘ã¾ã›ã‚“"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "アルãƒãƒ ã®ãƒˆãƒ©ãƒƒã‚¯ä¸€è¦§ã®èª­ã¿è¾¼ã¿ä¸­ ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"[注æ„] å—ä¿¡ã—㟠CDDB çµæžœã® %d è¡Œ (ファイル一覧㮠%d è¡Œã«å¯¾ã—ã¦) ã‚’é©ç”¨ã—ã¦ã„"
+"ã¾ã™ï¼\n"
+"\n"
+"続行ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "CDDB ã‹ã‚‰ã‚¿ã‚°ã®æ›¸ãè¾¼ã¿ä¸­..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "アラビア語 (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "アラビア語 (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "アラビア語 (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "ãƒãƒ«ãƒˆèªž (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "ãƒãƒ«ãƒˆèªž (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "ãƒãƒ«ãƒˆèªž (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "ケルト語 (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "中央ヨーロッパ (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "中央ヨーロッパ (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "中央ヨーロッパ (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "中国語 簡体字 (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "中国語 簡体字 (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "中国語 ç¹ä½“å­— (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "中国語 ç¹ä½“å­— (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "キリル語 (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "キリル語 (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "キリル語 (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "キリル語 (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "キリル語 (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "キリル/ロシア語 (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "キリル/ウクライナ語 (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "英語 (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "ギリシア語 (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "ギリシア語 (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "ヘブライ語 (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "ヘブライ語 (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "日本語 (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "日本語 (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "日本語 (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "韓国語 (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "北欧語 (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "å—部ヨーロッパ語 (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "タイ語 (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "トルコ語 (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "トルコ語 (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "トルコ語 (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "ベトナム語 (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "ベトナム語 (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "視覚芸術å‘ã‘ヘブライ語 (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "西洋 (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "西洋 (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "西洋 (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "西洋 (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"ファイルå '%s' ã‚’ UTF-8 (%s) エンコーディングã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "ä¸æ­£ãª UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"UTF-8 ã®æ–‡å­—列 '%s' をファイルåã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° (%s) ã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—"
+"ãŸã€‚\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"'%s' ã¨ã„ã†æ–‡å­—列を UTF-8 (%s) エンコーディングã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "EasyTAG %s (PID: %d)ã®èµ·å‹•ä¸­...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "ç¾åœ¨ä½¿ç”¨ä¸­ã® id3lib ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "ç¾åœ¨ä½¿ç”¨ä¸­ã® id3lib ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "ファイルåã®å¤‰æ›´ä¸­ (%s)"
+
+#: src/easytag.c:195
+#, fuzzy, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "ç¾åœ¨ä½¿ç”¨ã—ã¦ã„るロケール㯠'%s' (最終的ã«ã¯ '%s')...\n"
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s - 開発者 %s (ビルド日時 %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "ウェブページ: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "å‚ç…§"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "ファイル"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "読ã¿è¾¼ã¿å°‚用ã®ãƒ•ã‚¡ã‚¤ãƒ«ã§ã™"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "ファイルã®ãƒªãƒ³ã‚¯ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, レイヤー ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "ビットレート:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? KB/秒"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "周波数:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "モード:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "サイズ:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? KB"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "æ¼”å¥æ™‚é–“:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "ã‚¿ã‚°"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "共通"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "タイトル:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "ã“ã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "æ¼”å¥è€…:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "ã“ã®æ¼”å¥è€…ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "アルãƒãƒ :"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "ã“ã®ã‚¢ãƒ«ãƒãƒ åã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "ã“ã®ãƒ‡ã‚£ã‚¹ã‚¯ç•ªå·ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "制作年:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "ã“ã®åˆ¶ä½œå¹´ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"é¸æŠžã—ãŸãƒˆãƒ©ãƒƒã‚¯ç•ªå·ã‚’順番ã«ä»˜ä¸Žã—ã¾ã™ (å„サブフォルダ㯠01 ã‹ã‚‰é–‹å§‹ã—ã¾ã™)"
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "トラック #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"表示ã•ã‚Œã¦ã„るファイルã¨åŒã˜ãƒ•ã‚©ãƒ«ãƒ€ã§ã€é¸æŠžã—ãŸãƒˆãƒ©ãƒƒã‚¯æ•°ã«å¯¾ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«æ•°"
+"をセットã—ã¾ã™"
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "ã“ã®ãƒˆãƒ©ãƒƒã‚¯ç•ªå·ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "ジャンル:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "ã“ã®ã‚¸ãƒ£ãƒ³ãƒ«ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "コメント:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "コンãƒãƒ¼ã‚¶:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "ã“ã®ã‚³ãƒ³ãƒãƒ¼ã‚¶ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "æ¼”å¥è€…:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "ã“ã®æ¼”å¥è€…ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "ライセンス:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "ã“ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "ã“ã®URLã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "エンコーダ:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "ã“ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ€ã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "ç”»åƒ"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "ç”»åƒ:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "ç”»åƒã‚’ドラッグ&ドロップã—ã¦è¿½åŠ ã§ãã¾ã™"
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "ã“れらã®ç”»åƒã‚’é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚°ä»˜ã‘ã—ã¾ã™"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "é¸æŠžã—ãŸç”»åƒã¾ãŸã¯å…¨ã¦ã®ç”»åƒã‚’削除ã—ã¾ã™"
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "ç”»åƒã‚’ã‚¿ã‚°ã«è¿½åŠ ã—ã¾ã™ (ドラッグ&ドロップもå¯èƒ½)"
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "é¸æŠžã—ãŸç”»åƒã‚’ä¿å­˜ã—ã¾ã™"
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "é¸æŠžã—ãŸç”»åƒã®ãƒ—ロパティを設定ã—ã¾ã™"
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¿ã‚¤ãƒˆãƒ« '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã‚¿ã‚¤ãƒˆãƒ«ã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«æ¼”å¥è€… '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰æ¼”å¥è€…を削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¢ãƒ«ãƒãƒ å '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã‚¢ãƒ«ãƒãƒ åを削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒ‡ã‚£ã‚¹ã‚¯ç•ªå· '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ãƒ‡ã‚£ã‚¹ã‚¯ç•ªå·ã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«åˆ¶ä½œå¹´ '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰åˆ¶ä½œå¹´ã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒˆãƒ©ãƒƒã‚¯ç•ªå· 'xx/%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒˆãƒ©ãƒƒã‚¯ç•ªå· 'xx' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ãƒˆãƒ©ãƒƒã‚¯ç•ªå·ã‚’削除ã—ã¾ã—ãŸ"
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "é¸æŠžã—ãŸãƒˆãƒ©ãƒƒã‚¯ç•ªå·ã‚’順番ã«ä»˜ä¸Žã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¸ãƒ£ãƒ³ãƒ« '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã‚¸ãƒ£ãƒ³ãƒ«ã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚³ãƒ¡ãƒ³ãƒˆ '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã‚³ãƒ¡ãƒ³ãƒˆã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚³ãƒ³ãƒãƒ¼ã‚¶ '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã‚³ãƒ³ãƒãƒ¼ã‚¶ã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚ªãƒªã‚¸ãƒŠãƒ«ã®æ¼”å¥è€… '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã‚ªãƒªã‚¸ãƒŠãƒ«æ¼”å¥è€…を削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã« URL '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ URL を削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ç”»åƒ '%s' をタグ付ã‘ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ç”»åƒã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "モードã¨ãƒžã‚¹ã‚¯ã‚’指定ã—ã¦ã€åŒæ§˜ã®æ“作を繰り返ã—ã¦ä¸‹ã•ã„"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "å…¨ã¦ã®ã‚¿ã‚°ã¯ã‚¹ã‚­ãƒ£ãƒ³æ¸ˆã¿ã§ã™"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "å…¨ã¦ã®ã‚¿ã‚°ãŒå‰Šé™¤ã•ã‚Œã¦ã„ã¾ã™"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "ファイルã®ä¸€éƒ¨ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "ファイルã®ä¸€éƒ¨ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"次ã®ãƒ•ã‚¡ã‚¤ãƒ« ã«ã‚¿ã‚°ã‚’書ãè¾¼ã¿ã¾ã™ã‹ï¼Ÿ\n"
+"%s"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "ã‚¿ã‚°ã®æ›¸ãè¾¼ã¿ä¸­..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "ファイルåã¨ãƒ•ã‚©ãƒ«ãƒ€åã®å¤‰æ›´..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"ファイルåã¨ãƒ•ã‚©ãƒ«ãƒ€åを変更ã—ã¾ã™ã‹ï¼Ÿ\n"
+"'%s'\n"
+"=>\n"
+"'%s'"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "フォルダåã®å¤‰æ›´..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"フォルダåを変更ã—ã¾ã™ã‹ï¼Ÿ\n"
+"'%s'\n"
+"=>\n"
+"'%s'"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "ファイルåã®å¤‰æ›´ä¸­..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"ファイルåを変更ã—ã¾ã™ã‹ï¼Ÿ\n"
+"'%s'\n"
+"=>\n"
+"'%s'"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "'%s' ã®ã‚¿ã‚°ãŒæ›¸ãè¾¼ã¾ã‚Œã¾ã—ãŸ"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "ã‚¿ã‚°ãŒæ›¸ãè¾¼ã¾ã‚Œã¾ã—ãŸ"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"ファイル '%s' ã«ã‚¿ã‚°ã‚’書ãè¾¼ã‚ã¾ã›ã‚“ï¼\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "ファイルåã®å¤‰æ›´ä¸­ (%s)"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"ファイル '%s' ã®åå‰ã‚’変更ã§ãã¾ã›ã‚“\n"
+"=>\n"
+"'%s'\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "ファイルåã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"ファイルåを変更ã§ãã¾ã›ã‚“:\n"
+"'%s'\n"
+"次ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã‹ã‚‰ã§ã™:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"変更ã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ã‚’生æˆã§ãã¾ã›ã‚“\n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "ファイルå '%s' => '%s' ã¸å¤‰æ›´ã•ã‚Œã¾ã—ãŸ"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "ファイルåãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"å¤ã„フォルダを削除ã§ãã¾ã›ã‚“\n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "ファイル '%s' => '%s' ã¸ç§»å‹•ã—ã¾ã—ãŸ"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "ファイルを移動ã—ã¾ã—ãŸ..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"ファイル '%s' を移動ã§ãã¾ã›ã‚“\n"
+"=>\n"
+"'%s'\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "ファイルã¯ç§»å‹•ã—ã¾ã›ã‚“ã§ã—ãŸ..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"次ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’完全ã«å‰Šé™¤ã—ã¦ã‚‚宜ã—ã„ã§ã™ã‹ï¼Ÿ\n"
+"'%s'"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "ファイルã®å‰Šé™¤..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "ファイル '%s' ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"フォルダを読ã¿è¾¼ã‚ã¾ã›ã‚“:\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "検索中..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "ファイル: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€é…下㫠%d 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ"
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã®ä¸­ã« %d 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ"
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u 個ã®ãƒ•ã‚¡ã‚¤ãƒ«"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€é…下ã«ã¯ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸï¼"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã®ä¸­ã«ã¯ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸï¼"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "検索中..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " 検索ã®åœæ­¢... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "å‚ç…§ã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„ï¼"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã«ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’タグ付ã‘ã—ã¾ã™"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "'_' 㨠'%20' をスペースã«å¤‰æ›ã™ã‚‹"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "' ' ã‚’ '_' ã«å¤‰æ›ã™ã‚‹"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "å…¨ã¦å¤§æ–‡å­—ã«ã™ã‚‹"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "å…¨ã¦å°æ–‡å­—ã«ã™ã‚‹"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "最åˆã®æ–‡å­—ã ã‘大文字ã«ã™ã‚‹"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "å˜èªžã®æœ€åˆã®æ–‡å­—ã ã‘大文字ã«ã™ã‚‹"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "スペースを削除ã™ã‚‹"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "大文字ã®å‰ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’挿入ã™ã‚‹"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "é‡è¤‡ã—ãŸã‚¹ãƒšãƒ¼ã‚¹ã¾ãŸã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã‚’削除ã™ã‚‹"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: 異常終了ã—ã¾ã—ãŸï¼ (PID: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "シグナル %s (%d) ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"EasyTAG ã§ãƒã‚°ã¨æ€ã‚れるもã®ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚gdb ã«ã‚ˆã‚‹ãƒãƒƒã‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã®ãƒ­ã‚° "
+"(`gdb easytag core` ã—㦠'bt' 㨠'l' コマンドã®çµæžœ) ã‚’ easytag@gmail.com ã¾"
+"ã§ãƒ¡ãƒ¼ãƒ«ã—ã¦ä¸‹ã•ã„。"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "ä¸æ˜Žãªã‚·ã‚°ãƒŠãƒ«"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"用法: easytag [オプション] ã¾ãŸã¯\n"
+" easytag [フォルダ]\n"
+"\n"
+"オプション:\n"
+"-------\n"
+"-h, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã¦çµ‚了ã™ã‚‹\n"
+"-v, --version 基本情報を表示ã—ã¦çµ‚了ã™ã‚‹\n"
+"\n"
+"フォルダ:\n"
+"----------\n"
+"c:/path_to/files 読ã¿è¾¼ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ã®çµ¶å¯¾ãƒ‘スåを指定ã™ã‚‹ (Windows)\n"
+"/path_to/files 読ã¿è¾¼ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ã®çµ¶å¯¾ãƒ‘スåを指定ã™ã‚‹ (GNU/Linux)\n"
+"path_to/files ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿è¾¼ã‚€\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: 正常ã«çµ‚了ã—ã¾ã—ãŸã€‚"
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"ã„ãã¤ã‹ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’変更ã—ã¾ã—ãŸãŒã€ä¿å­˜ã—ã¦ã„ã¾ã›ã‚“...\n"
+"プログラムを終了ã™ã‚‹å‰ã«ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " 本当ã«ãƒ—ログラムを終了ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3 ã‚¿ã‚°"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis ã‚¿ã‚°"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis ã‚¿ã‚°"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE ã‚¿ã‚°"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "MP4/M4A/AAC ã‚¿ã‚°"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3 ファイル"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2 ファイル"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis ファイル"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "次ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã‚¸ãƒ£ãƒ³ãƒ—ã—ã¾ã™"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC ファイル"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MusePack ファイル"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey's オーディオ・ファイル"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "MP4/AAC ファイル"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "MusePack ファイル"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "ç”»åƒ"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d KB/秒"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"ファイルåをシステムã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«\n"
+"変æ›ã§ãã¾ã›ã‚“ã§ã—㟠: '%s'\n"
+"(環境変数 G_FILENAME_ENCODING を設定ã—ã¦ã¿ã¦ä¸‹ã•ã„)"
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "ファイルåã®ç¿»è¨³"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "ファイルå '%s' ㌠%d 文字ã ã‘多ã™ãŽã‚‹ã®ã§åˆ‡ã‚Šã¤ã‚ã¾ã™ï¼\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "エンコーダ:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "ãƒãƒ£ãƒ³ãƒãƒ«æ•°:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"ファイルã®ã‚ªãƒ¼ãƒ—ン中ã«ã‚¨ãƒ©ãƒ¼: '%s' (%s)\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ERROR: ファイル '%s' (%s) ã«ã‚³ãƒ¡ãƒ³ãƒˆã‚’書ã込むã®ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "'%s' ã®ã‚¿ã‚°ãŒæ›¸ãè¾¼ã¾ã‚Œã¾ã—ãŸ"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "'%s' ã®ã‚¿ã‚°ã‚’削除ã—ã¾ã—ãŸ"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "'%s' (%s) ã® ID3v1 ã‚¿ã‚°ã®å‰Šé™¤ä¸­ã«ã‚¨ãƒ©ãƒ¼"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "'%s' (%s) ã® ID3v2 ã‚¿ã‚°ã®å‰Šé™¤ä¸­ã«ã‚¨ãƒ©ãƒ¼"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "'%s' (%s) ã® ID3v2 ã‚¿ã‚°ã®æ›´æ–°ä¸­ã«ã‚¨ãƒ©ãƒ¼"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"ã“ã®ã‚¿ã‚°ã‚’ Unicode ã§ä¿å­˜ã—よã†ã¨ã—ã¾ã—ãŸãŒã€ãŠä½¿ã„ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® id3lib ã«ã¯"
+"ãƒã‚°ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã¨æ€ã‚ã‚Œã¾ã™ã€‚\n"
+"ã‚‚ã—ã“ã®ã‚¿ã‚°ãƒ»ãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿è¾¼ã‚‚ã†ã¨ã™ã‚‹ã¨ã€ã‚¿ã‚°ã®ä¸­ã«ã‚ã‚‹ã„ãã¤ã‹ã®æ–‡å­—ãŒæ­£"
+"ã—ã表示ã•ã‚Œãªã„å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™...\n"
+"EasyTAG ã®ã‚½ãƒ¼ã‚¹ãƒ»ãƒ‘ッケージã«åŒæ¢±ã•ã‚Œã¦ã„るパッム(src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff) ã‚’\n"
+"ãŠä½¿ã„ã® id3lib ã«é©ç”¨ã—ã¦ã¿ã¦ä¸‹ã•ã„。\n"
+"注æ„: ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ä¸€å›žã ã‘表示ã•ã‚Œã¾ã™ã€‚\n"
+"\n"
+"ファイル : %s"
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "'%s' (%s) ã® ID3v1 ã‚¿ã‚°ã®æ›´æ–°ä¸­ã«ã‚¨ãƒ©ãƒ¼"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "'%s' ã®ã‚¿ã‚°ã‚’æ›´æ–°ã—ã¾ã—ãŸ"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "エラーã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "有効ãªãƒ¡ãƒ¢ãƒªãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "解æžã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "データã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆãŒä¸é©åˆ‡ã§ã™"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "書ã込むãƒãƒƒãƒ•ã‚¡ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "ãƒãƒƒãƒ•ã‚¡ãŒå°ã•ã™ãŽã¾ã™"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "フレーム ID ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "指定ã—ãŸãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "フィールドã®ç¨®é¡žãŒä¸æ˜Žã§ã™"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "æ—¢ã«ã‚¿ã‚°ãŒãƒ•ã‚¡ã‚¤ãƒ«ã«ã¤ã„ã¦ã„ã¾ã™"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "ã‚¿ã‚°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "解æžã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "読ã¿è¾¼ã¿å°‚用ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã込もã†ã¨ã—ã¦ã„ã¾ã™"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "圧縮/éžåœ§ç¸®ã‚¨ãƒ©ãƒ¼ã§ã™"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ã§ã™ï¼"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"次ã«ç¤ºã™ã‚ˆã†ãªå£Šã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ« '%s' ã¯\n"
+"id3lib ã®ä¸­ã§ã‚¨ãƒ©ãƒ¼ã‚’引ãèµ·ã“ã™ãŸã‚プログラムãŒæ­£å¸¸ã«å‡¦ç†ã—ã¾ã›ã‚“。"
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "壊れãŸãƒ•ã‚¡ã‚¤ãƒ«..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " ç¢ºèª "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " ã¯ã„ "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " ã„ã„㈠"
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " é©ç”¨ "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " ä¿å­˜ "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " キャンセル "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " é–‰ã˜ã‚‹ "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " 書ã込㿠"
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " 実行 "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr "検索"
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " å‚ç…§... "
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "フォルダã®é¸æŠž..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "ファイルã®é¸æŠž..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "検索中..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "'%s' (%s) を実行ã§ãã¾ã›ã‚“ï¼\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "æ¼”å¥ä¸€è¦§ã®ç”Ÿæˆ"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "M3U æ¼”å¥ä¸€è¦§ã®åå‰"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "フォルダåを使用ã™ã‚‹"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "マスクã®ç·¨é›†"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "æ¼”å¥ä¸€è¦§ã®ã‚ªãƒ—ション"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "指定ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ã¿å«ã‚ã‚‹"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ã¿æ¼”å¥ä¸€è¦§ã¸æ›¸ãè¾¼ã¾ã‚Œã¾ã™ (無効ã«ã™ã‚‹"
+"ã¨ã€å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ›¸ãè¾¼ã¾ã‚Œã¾ã™)"
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "æ¼”å¥ä¸€è¦§ã®ä¸­ã§ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ•ãƒ«ãƒ‘スåを使用ã™ã‚‹"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "æ¼”å¥ä¸€è¦§ã®ä¸­ã§ãƒ•ã‚¡ã‚¤ãƒ«ã«é–¢é€£ã™ã‚‹ãƒ‘スåを使用ã™ã‚‹"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "æ¼”å¥ä¸€è¦§ã‚’親フォルダã«ç”Ÿæˆã™ã‚‹"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr "ã“れを有効ã«ã™ã‚‹ã¨ã€æ¼”å¥ä¸€è¦§ã‚’親フォルダã«ç”Ÿæˆã—ã¾ã™"
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "DOS フォルダã®åŒºåˆ‡ã‚Šã‚’使用ã™ã‚‹"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"ã“れ㯠UNIX フォルダã®åŒºåˆ‡ã‚Š '/' ã‚’ DOS ã®åŒºåˆ‡ã‚Š '\\' ã¸ç½®ãæ›ãˆã‚‹ã‚ªãƒ—ション"
+"ã§ã™"
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "æ¼”å¥ä¸€è¦§ã®å†…容"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "æ¼”å¥ä¸€è¦§ãƒ•ã‚¡ã‚¤ãƒ«ã®ä¿å­˜ã®ã¿"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "ファイルåã§ä½¿ç”¨ã™ã‚‹æƒ…å ±ã®ä¿å­˜ã®ã¿"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "書ã込む情報 :"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"æ¼”å¥ä¸€è¦§ãƒ•ã‚¡ã‚¤ãƒ« '%s' ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ï¼\n"
+"上書ãã—ã¾ã™ã‹ï¼Ÿ"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "æ¼”å¥ä¸€è¦§ã®æ›¸ãè¾¼ã¿ä¸­..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"æ¼”å¥ä¸€è¦§ãƒ•ã‚¡ã‚¤ãƒ« '%s' を書ãè¾¼ã‚ã¾ã›ã‚“ï¼\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "æ¼”å¥ä¸€è¦§ãƒ•ã‚¡ã‚¤ãƒ« '%s' ãŒæ›¸ãè¾¼ã¾ã‚Œã¾ã—ãŸ"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "トラック"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "コメント"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "コンãƒãƒ¼ã‚¶"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "æ¼”å¥è€…:"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "ライセンス"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "エンコーダ"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "ファイルã®æ¤œç´¢"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"ファイルã‹ã‚‰æ¤œç´¢ã™ã‚‹å˜èªžã‚’入力ã—ã¦ä¸‹ã•ã„ (何も入力ã—ãªã„ã¨å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’表"
+"示ã—ã¾ã™)"
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "対象 :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "ファイルå"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "ã‚¿ã‚°"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "大å°æ–‡å­—を無視ã™ã‚‹"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "一致ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«: %d 個"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "TEXT ファイルã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«åを読ã¿è¾¼ã‚€"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "TEXT ファイル :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " 読ã¿è¾¼ã‚€ "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "読ã¿è¾¼ã‚“ã ãƒ•ã‚¡ã‚¤ãƒ«ã®å†…容 :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "ファイルåã®ä¸€è¦§ :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr "ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨"
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "空行を挿入ã™ã‚‹"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "ã“ã®è¡Œã‚’削除ã™ã‚‹"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "空行を全ã¦å‰Šé™¤ã™ã‚‹"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "å†èª­è¾¼"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "プロファイル:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "オーディオ"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "ä¸æ˜Ž"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "MP4 フォーマットãŒä¸æ­£ã§ã™"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "〜%d KB/秒"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "残りã®ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦å‡¦ç†ã‚’ç¹°ã‚Šè¿”ã—ã¾ã™"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Ogg ビットストリームã«ã¯ Vorbis データãŒã‚ã‚Šã¾ã›ã‚“。"
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "ERROR: ファイル '%s' ã‚’ vorbis (%s) ã¨ã—ã¦é–‹ãã®ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "警告: Ogg Vorbis ファイル '%s' ã«ã¯ ID3v2 ã‚¿ã‚°ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "ç”»åƒã®è¿½åŠ "
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG 㨠JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "ç”»åƒ %d/%d ã®ãƒ—ロパティ "
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "種類:"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "説明:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "ç”»åƒ %d/%d ã®ä¿å­˜"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"次ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ—¢ã«ã‚ã‚Šã¾ã™ :\n"
+"'%s'\n"
+"上書ãã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "ファイルã®ä¿å­˜..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "JPEG ç”»åƒ"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "PNG ç”»åƒ"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "ä¸æ˜Ž"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "PNG å½¢å¼ã®ã‚¢ã‚¤ã‚³ãƒ³"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "別ã®ç¨®é¡žã®ã‚¢ã‚¤ã‚³ãƒ³"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "ジャケット (表)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "ジャケット (è£)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "ãƒãƒ©ã‚·"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "メディア (例: CDã®ãƒ©ãƒ™ãƒ«)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "メインã®æ¼”å¥è€…/出演者/ソロ"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "æ¼”å¥è€…/出演者"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "指æ®è€…"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "ãƒãƒ³ãƒ‰/オーケストラ"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "作詞"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "録音場所"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "録音時間"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "æ¼”å¥æ™‚é–“"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "映画/ビデオã®ã‚­ãƒ£ãƒ—ãƒãƒ£"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "A bright coloured fish"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "イラスト"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "ãƒãƒ³ãƒ‰/æ¼”å¥è€…ã®ãƒ­ã‚´"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "販売元/スタジオã®ãƒ­ã‚´"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "ä¸æ˜Ž"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "ピクセル"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "種類"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "説明"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"ç”»åƒç”¨ã®ãƒãƒƒãƒ•ã‚¡ã‚’生æˆã™ã‚‹ãŸã‚ã«å¿…è¦ãªãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã‚€ã“ã¨ãŒã§ããªã‹ã£ãŸãŸ"
+"ã‚ã€ç”»åƒã‚’表示ã§ãã¾ã›ã‚“。"
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã®èª­ã¿è¾¼ã¿ä¸­..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"ファイルを開ã‘ã¾ã›ã‚“:\n"
+"'%s'\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã›ã‚“..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "設定..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "ファイルã®å‚ç…§"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "デフォルトã®ãƒ•ã‚©ãƒ«ãƒ€ã¸ç§»å‹•ã—ã¾ã™"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"ファイルãŒæ ¼ç´ã•ã‚Œã¦ã„るフォルダを指定ã—ã¦ä¸‹ã•ã„ (ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã¯ EasyTAG を引"
+"æ•°ãªã—ã§èµ·å‹•ã—ãŸæ™‚ã«èª­ã¿è¾¼ã¾ã‚Œã¾ã™)"
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"EasyTAG ã‚’èµ·å‹•ã—ãŸã‚‰ã€æ¬¡ã®ãƒ•ã‚©ãƒ«ãƒ€ã«ã‚るファイルを自動的ã«æ¤œç´¢ã—ã¾ã™: フォル"
+"ダ㯠easytag ã®å¼•æ•° (easytag /path_to/mp3_files) ã§ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™"
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "サブフォルダもå‚ç…§ã™ã‚‹"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "ツリーã®ä¸­ã«ã‚るフォルダを読ã¿è¾¼ã‚“ã ã‚‰ã€ã‚µãƒ–フォルダもåŒæ™‚ã«æ¤œç´¢ã—ã¾ã™"
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "フォルダãŒæŒ‡å®šã•ã‚ŒãŸã‚‰ã€ã‚µãƒ–フォルダも表示ã™ã‚‹"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"ã“ã‚Œã¯ãƒ•ã‚¡ã‚¤ãƒ«ãƒ–ラウザã®ä¸­ã«ã‚るサブフォルダを表示ã™ã‚‹ãŸã‚ã«ã€æŒ‡å®šã—ãŸãƒŽãƒ¼ãƒ‰"
+"を展開ã—ã¾ã™"
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "éš ã—フォルダもå‚ç…§ã™ã‚‹"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "éš ã—フォルダ ('.' ã§å§‹ã¾ã‚‹ãƒ•ã‚©ãƒ«ãƒ€) ã‚‚åŒæ™‚ã«æ¤œç´¢ã—ã¾ã™"
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "ユーザ・インタフェース"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "ファイルã®ãƒ˜ãƒƒãƒ€æƒ…報を表示ã™ã‚‹"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…å ± (ビットレートã€æ¼”å¥æ™‚é–“ã€ã‚µã‚¤ã‚º) ãŒãƒ•ã‚¡ã‚¤"
+"ルåã®ä¸‹ã«è¡¨ç¤ºã•ã‚Œã¾ã™"
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "変更ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’表示ã™ã‚‹ã‚¹ã‚¿ã‚¤ãƒ«:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "赤色"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "太字"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "ファイル一覧ã®ä¸¦ã¹æ›¿ãˆã‚ªãƒ—ション"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "ファイル一覧ã®ä¸¦ã³ :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "ファイルåã§æ˜‡é †"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "ファイルåã§é™é †"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "トラック番å·ã§æ˜‡é †"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "トラック番å·ã§é™é †"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "作æˆæ—¥ã§æ˜‡é †"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "作æˆæ—¥ã§é™é †"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "タイトルã§æ˜‡é †"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "タイトルã§é™é †"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "æ¼”å¥è€…ã§æ˜‡é †"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "æ¼”å¥è€…ã§é™é †"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "アルãƒãƒ åã§æ˜‡é †"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "アルãƒãƒ åã§é™é †"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "制作年ã§æ˜‡é †"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "制作年ã§é™é †"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "ジャンルã§æ˜‡é †"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "ジャンルã§é™é †"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "コメントã§æ˜‡é †"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "コメントã§é™é †"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "フォルダを読ã¿è¾¼ã‚“ã æ™‚ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’並ã¹æ›¿ãˆã‚‹æ–¹å¼ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„"
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "ã“れを有効ã«ã™ã‚‹ã¨ã€å¤§ï¼å°æ–‡å­—ã«ã‚ã‚ã›ã¦ä¸€è¦§ã‚’並ã¹æ›¿ãˆã¾ã™"
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "メッセージ・ボックスã®ä½ç½®"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "ä½ç½®ã‚’指定ã—ãªã„"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "ウィンドウマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã«å§”ã­ã¾ã™"
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "メイン・ウィンドウã®ä¸­å¤®"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "メイン・ウィンドウã®ä¸­å¤®ã«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’表示ã—ã¾ã™"
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "ç”»é¢ã®ä¸­å¤®"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "ç”»é¢ã®ä¸­å¤®ã«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’表示ã—ã¾ã™"
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "マウスã®ä½ç½®"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "ç¾åœ¨ã®ãƒžã‚¦ã‚¹ã‚«ãƒ¼ã‚½ãƒ«ã®ä½ç½®ã«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒè¡¨ç¤ºã•ã‚Œã¾ã™"
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "オーディオ・プレイヤー"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "実行ã™ã‚‹ãƒ—レイヤー :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"サウンド・ファイルを演å¥ã™ã‚‹ãƒ—ログラムを入力ã—ã¦ä¸‹ã•ã„: 引数ã¨ã—㦠(`xmms -"
+"p` ã®ã‚ˆã†ã«)ã€æ¼”å¥ä¸€è¦§ã®ãƒ•ã‚¡ã‚¤ãƒ«åを指定ã™ã‚‹å¼•æ•°ã‚’プログラムã«å¼•ã渡ã™ã“ã¨ãŒ"
+"å¯èƒ½ã§ã™"
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "ファイルã®è¨­å®š"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "ファイルã®ã‚ªãƒ—ション"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "ファイルåã«ã‚ã‚‹ä¸æ­£ãªæ–‡å­—ã‚’ç½®ãæ›ãˆã‚‹ (Windows 㨠CD-ROM å‘ã‘)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"ファイルåを変更ã™ã‚‹å ´åˆã«ç™ºç”Ÿã™ã‚‹å•é¡Œã‚’回é¿ã™ã‚‹ãŸã‚ã«ã€ãƒ•ã‚¡ã‚¤ãƒ«åã«ã‚ã‚‹ "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|' ã¨ã„ã£ãŸ) ä¸æ­£ãªæ–‡å­—ã‚’ã€"
+"Windows ファイルシステムå‘ã‘ã«å¤‰æ›ã—ã¾ã™ (ã“ã‚Œã¯ã‚¹ã‚­ãƒ£ãƒŠã§ã‚¿ã‚°ã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«å"
+"を変更ã™ã‚‹æ™‚ã«ä¾¿åˆ©ã§ã™)"
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "変æ›å¾Œã®æ‹¡å¼µå­ :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "å°æ–‡å­—"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "ãŸã¨ãˆã°ã€å¤‰æ›å¾Œã®æ‹¡å¼µå­ã¯ '.mp3' ã«ãªã‚Šã¾ã™"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "大文字"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "ãŸã¨ãˆã°ã€å¤‰æ›å¾Œã®æ‹¡å¼µå­ã¯ '.MP3' ã«ãªã‚Šã¾ã™"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "変更ã—ãªã„"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "æ‹¡å¼µå­ã¯å¤‰æ›´ã—ã¾ã›ã‚“"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "ファイルã®å¤‰æ›´æ—¥æ™‚ã‚’ä¿å­˜ã™ã‚‹"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr "ファイルをä¿å­˜ã™ã‚‹æ™‚ã«ãƒ—ロパティã®ä¸­ã«ã‚る変更日時をä¿å­˜ã—ã¾ã™"
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "ファイルåã«ä½¿ç”¨ã™ã‚‹ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"ファイルåを書ã込む時ã«ã‚·ã‚¹ãƒ†ãƒ ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«å¤‰æ›ã§ããªã„文字ãŒã‚ã‚‹å ´"
+"åˆã«é©ç”¨ã™ã‚‹ãƒ«ãƒ¼ãƒ«ã§ã™"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "別ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’試ã™"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"ã“れを指定ã™ã‚‹ã¨ã€ãŠä½¿ã„ã®ãƒ­ã‚±ãƒ¼ãƒ«ã«é–¢é€£ã—ãŸã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã¸ã®å¤‰æ›ã‚’試㿠"
+"(例: 'fr' ãªã‚‰ã° ISO-8859-1ã€'ru' ãªã‚‰ã° KOI8-Rã€'ro' ãªã‚‰ã° ISO-8859-2)ã€å¤±"
+"æ•—ã—ãŸå ´åˆã¯ ISO-8859-1 ã¸ã®å¤‰æ›ã‚’試ã¿ã¾ã™"
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr "システムã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«å¼·åˆ¶çš„ã«å¤‰æ›ã—ã¦éŸ³è¨³ã—ã¦ã¿ã‚‹"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションを指定ã™ã‚‹ã¨ã€æ–‡å­—ãŒå¯¾è±¡ã¨ãªã‚‹æ–‡å­—セットã§è¡¨ç¾ã§ããªã„時ã¯ã€ã"
+"ã®æ–‡å­—ã«ä¼¼ãŸä¸€å€‹ä»¥ä¸Šã®æ–‡å­—ã«è¿‘ä¼¼ã—ã¾ã™"
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr "システムã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«å¼·åˆ¶çš„ã«å¤‰æ›ã—ã¦å¤‰æ›ã§ããªã„文字ã¯ç„¡è¦–ã™ã‚‹"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションを指定ã™ã‚‹ã¨ã€æ–‡å­—ãŒå¯¾è±¡ã¨ãªã‚‹æ–‡å­—セットã§è¡¨ç¾ã§ããªã„時ã¯ç„¡è¦–"
+"ã—ã¦è¡¨ç¤ºã—ã¾ã›ã‚“"
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "ã‚¿ã‚°ã®è¨­å®š"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "ã‚¿ã‚°ã®ã‚ªãƒ—ション"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "日付を自動的ã«è£œå®Œã™ã‚‹"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"入力ã—ãŸæ—¥ä»˜ã®æœ€å¾ŒãŒæ•°å­—ã®å ´åˆã€å¹´ã‚’自動的ã«è£œå®Œã—ã¦ã¿ã¾ã™ (例: ç¾åœ¨ã®å¹´ãŒ "
+"2005 å¹´ã®å ´åˆã€5 => 2005ã€4 => 2004ã€6 => 1996ã€95 => 1995)"
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "トラック番å·ã«æ›¸ã込む二æ¡ã®æ•°å€¤:"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ãƒˆãƒ©ãƒƒã‚¯ç•ªå·ã« '0' ã§ãƒ‘ディングã•ã‚ŒãŸæ•°å€¤ 'n' (例: 二æ¡ã®"
+"数値ã§æŒ‡å®š: '05'ã€'09'ã€'10'...) ãŒä»˜ä¸Žã•ã‚Œã¾ã™ (ãれ以外ã¯å®Ÿéš›ã®ãƒˆãƒ©ãƒƒã‚¯ãƒ»"
+"フィールドã®ã¾ã¾ã«ã—ã¾ã™)"
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Ogg Vorbis ファイル : コメントを XMMS å½¢å¼ã§æ›¸ã込む"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"ä»–ã®ã‚¢ãƒ—リã¨ã¯ç•°ãªã‚Šã€XMMS ã§ã¯ Ogg Vorbis ファイルã«æ¨™æº–çš„ãªæ–¹æ³•ã§ã‚³ãƒ¡ãƒ³ãƒˆã‚’"
+"書ã込んã§ã„ã¾ã›ã‚“。標準的ãªæ–¹æ³•ã§ã¯ 'comment=' ã¨ã„ã†æ–‡å­—列を使ã£ã¦æ›¸ãè¾¼ã¿"
+"ã¾ã™ãŒã€XMMS ã§ã¯ '=' ã¨ã„ã†æ–‡å­—列ã§ã—ã‹è­˜åˆ¥ã—ã¦ã„ã¾ã›ã‚“。ãã®ãŸã‚ã€ä»–ã®ã‚¢ãƒ—"
+"リã§ä¸æ˜Žãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¤ã„ã¦æ–‡å¥ã‚’ã„ã‚ã‚ŒãŸããªã„å ´åˆã¯ã€ã“ã®ã‚ªãƒ—ションを無効"
+"ã«ã—ã¦ä¸‹ã•ã„。ãã®ã‹ã‚ã‚Š XMMS ã§ã‚³ãƒ¡ãƒ³ãƒˆã‚’表示ã§ãã¾ã›ã‚“。"
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr "一覧ã§ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã—ãŸæ™‚ã«ãƒ•ã‚©ãƒ¼ã‚«ã‚¹ã‚’与ãˆã‚‹ã‚¿ã‚°ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "åŒã˜ã‚¿ã‚°ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ãƒ•ã‚©ãƒ¼ã‚«ã‚¹ã‚’当ã¦ãŸã¾ã¾ã«ã™ã‚‹"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "先頭ã®ã‚¿ã‚°ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ (タイトル) ã«ãƒ•ã‚©ãƒ¼ã‚«ã‚¹ã‚’戻ã™"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "ID3 ã‚¿ã‚°ã®è¨­å®š"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "ID3 タグ付ã‘ã®ãƒ«ãƒ¼ãƒ«"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "FLAC ファイル㮠ID3 ã‚¿ã‚°ã‚’ FLAC ã‚¿ã‚°ã§æ›¸ã込む"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€FLAC ファイルã®ä¸­ã« ID3 タグも追加ã—ã¾ã™ (ãれ以外ã¯å‰Šé™¤"
+"ã—ã¾ã™)"
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "ã‚¿ã‚°ã®å…¨ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒç©ºç™½ã®å ´åˆã¯å‰Šé™¤ã™ã‚‹"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"ID3 Ver2 ã‚¿ã‚°ãŒã‚¿ã‚¤ãƒˆãƒ«ã€æ¼”å¥è€…ã€ã‚¢ãƒ«ãƒãƒ åã€åˆ¶ä½œå¹´ã€ãƒˆãƒ©ãƒƒã‚¯ã€ã‚¸ãƒ£ãƒ³ãƒ«ã€ã‚³ãƒ¡"
+"ント (ジャケットã®ç”»åƒã‚„歌詞ãªã©) 以外ã®ãƒ‡ãƒ¼ã‚¿ã‚’å«ã‚“ã§ã„ã‚‹ãŸã‚ã€ã“ã®ã‚ªãƒ—ショ"
+"ンã§ã€ã“れらã®ï¼—ã¤ã®æ¨™æº–データãŒç©ºç™½ã®å ´åˆã«ã‚¿ã‚°ã®å…¨ã¦ã‚’削除ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã«"
+"ãªã‚Šã¾ã™"
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ ID3v2 タグを自動的ã«å¤‰æ›ã™ã‚‹"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ID3v2.2 よりå¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ ID3v2 ã®ã‚¿ã‚°ã‚’自動的㫠"
+"ID3v2.2 ã«æ›´æ–°ã—ã¾ã™"
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "ID3 Ver2 ã§ã‚¿ã‚°ã‚’書ã込む"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "ID3 ã‚¿ã‚°ã®æ–‡å­—セット"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "ID3 Ver2 ã§ã‚¿ã‚°ã‚’書ã込む"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "ID3 Ver2 ã§ã‚¿ã‚°ã‚’書ã込む"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€MP3 ファイルã®æœ€åˆã« ID3 Ver2 ã‚¿ã‚°ãŒè¿½åŠ /æ›´æ–°ã•ã‚Œã¾ã™ (ã"
+"れ以外ã¯å‰Šé™¤ã—ã¾ã™)"
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "紹介:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "エンコーダ"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "ファイルã®ã‚¿ã‚°æƒ…報を書ã込む際ã«ä½¿ç”¨ã™ã‚‹æ–‡å­—セットã§ã™"
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " ã„ã„㈠"
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3 ã‚¿ã‚°"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "ID3 Ver1.x ã§ã‚¿ã‚°ã‚’書ã込む"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€MP3 ファイルã®æœ€å¾Œã« ID3 Ver1 ã‚¿ã‚°ãŒè¿½åŠ /æ›´æ–°ã•ã‚Œã¾ã™ (ã"
+"れ以外ã¯å‰Šé™¤ã—ã¾ã™)"
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "ファイルã®ã‚¿ã‚°æƒ…報を書ã込む際ã«ä½¿ç”¨ã™ã‚‹æ–‡å­—セットã§ã™"
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "ID3 ã‚¿ã‚°ã®æ–‡å­—セット"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"ã“ã®æ–‡å­—集åˆã¯ã‚¿ã‚°ã‚’読ã¿è¾¼ã‚€éš›ã«ã€ISO-8859-1 ã®æ–‡å­—を変æ›ã™ã‚‹å ´åˆã«ä½¿ç”¨ã—ã¾"
+"ã™ (ID3v2 / ID3v1 ã‚¿ã‚°å‘ã‘)\n"
+"\n"
+"例:\n"
+" - EasyTAG ã®ä»¥å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã€ISO-8859-1 ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’ UTF-8 ã§ä¿å­˜ã—ãŸ"
+"å ´åˆ (ã“ã‚Œã¯æ­£ã—ãã‚ã‚Šã¾ã›ã‚“ï¼ ã“れらã®ã‚¿ã‚°ã‚’ Unicode ã«å¤‰æ›ã™ã‚‹å ´åˆã¯: ã“ã®"
+"オプションを有効ã«ã—㦠UTF-8 ã‚’é¸æŠžã—ã¾ã™ã€‚ã•ã‚‰ã« \"ã‚¿ã‚°ã‚’ ISO-8859-1 エン"
+"コーディングã§ä¿å­˜ã—ã€å¤±æ•—ã—ãŸå ´åˆã¯ Unicode を使用ã™ã‚‹ (推奨)\" ã¾ãŸã¯ \"常"
+"ã« Unicode 文字セットを使用ã™ã‚‹\" ã®ã©ã¡ã‚‰ã‹ã‚‚有効ã«ã—ã¦ãŠã„ã¦ä¸‹ã•ã„)\n"
+" - Unicode を使用ã—ãªã„å ´åˆã€ä¾‹ãˆã°ãƒ­ã‚·ã‚¢èªžã‚’使用ã™ã‚‹å ´åˆã¯ Windows 上ã§æ›¸ã"
+"è¾¼ã¾ã‚ŒãŸã‚¿ã‚°ã‚’読ã¿è¾¼ã‚€ãŸã‚ã« 'Windows-1251' ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„ (Unix ã®å ´åˆã¯ "
+"'KOI8-R')"
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "ファイルã®ã‚¿ã‚°æƒ…報を読ã¿è¾¼ã‚€éš›ã«ä½¿ç”¨ã™ã‚‹æ–‡å­—セットã§ã™"
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "スキャナ"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "タグ付与スキャナ - 文字セットã®å¤‰æ›"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "アンダースコア '_' ã¨æ–‡å­—列 '%20' をスペース ' ' ã«å¤‰æ›ã™ã‚‹"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "スペース ' ' をアンダースコア '_' ã«å¤‰æ›ã™ã‚‹"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ã‚¿ã‚°ã®ã‚¹ã‚­ãƒ£ãƒŠã§ãƒžã‚¹ã‚¯ã‚’é©ç”¨ã—ãŸéš›ã«ã“ã®å¤‰æ›ã‚’使用ã—ã¾ã™"
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "ファイルå変更ã®ã‚¹ã‚­ãƒ£ãƒŠ - 文字セットã®å¤‰æ›"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ãƒ•ã‚¡ã‚¤ãƒ«åã®ã‚¹ã‚­ãƒ£ãƒŠã§ãƒžã‚¹ã‚¯ã‚’é©ç”¨ã—ãŸéš›ã«ã“ã®å¤‰æ›ã‚’使用"
+"ã—ã¾ã™"
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "PFS - 文字セットã®å¤‰æ›"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr "å‰ç½®è©žã‚„箇æ¡æ›¸ãã®å ´åˆã¯å…ˆé ­ã«ã‚る文字を大文字ã«ã—ãªã„"
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"\"å˜èªžã®æœ€åˆã®æ–‡å­—ã ã‘大文字ã«ã™ã‚‹\" ãŒæœ‰åŠ¹ã«ãªã£ã¦ã„る時ã«ã‚¹ã‚­ãƒ£ãƒ³ã—ãŸå ´åˆã€"
+"å‰ç½®è©žã‚„箇æ¡æ›¸ãã®ã‚ˆã†ãªå˜èªžã®å…ˆé ­æ–‡å­—を大文字ã«ã—ã¾ã›ã‚“ (例: 'Text In An "
+"Entry' ã§ã¯ãªã 'Text in an Entry')"
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "スキャナ・ウィンドウ"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "起動時ã«ã‚¹ã‚­ãƒ£ãƒŠãƒ»ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‹ã"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€EasyTAG ãŒèµ·å‹•ã•ã‚ŒãŸã‚‰è‡ªå‹•çš„ã«ã‚¹ã‚­ãƒ£ãƒŠãƒ»ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒé–‹ã"
+"ã¾ã™"
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "スキャナ・ウィンドウを常ã«ä¸Šã«é…ç½®ã™ã‚‹"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ãƒžã‚¹ã‚¯è¨­å®šã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã¯å¸¸ã«ãƒ¡ã‚¤ãƒ³ãƒ»ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ä¸Šã«è¡¨ç¤ºã•"
+"ã‚Œã¾ã™"
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "フィールド"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "ã‚¿ã‚°ã®ã‚¹ã‚­ãƒ£ãƒ³æ™‚ã«ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’上書ãã™ã‚‹"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ã‚¹ã‚­ãƒ£ãƒŠã¯ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®ä¸­ã®ãƒ†ã‚­ã‚¹ãƒˆã‚’æ–°ã—ã„テキストã«ç½®ã"
+"æ›ãˆã¾ã™ (無効ã«ã™ã‚‹ã¨ã€ç©ºã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®ã¿åŸ‹ã‚られã¾ã™)"
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "ã“ã®ãƒ†ã‚­ã‚¹ãƒˆã‚’デフォルトã®ã‚³ãƒ¡ãƒ³ãƒˆã«ã™ã‚‹ :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"\"タグを埋ã‚ã‚‹\" スキャナ使用時ã«ã€æ¬¡ã®æ–‡å­—列をコメントフィールドã«æŒ¿å…¥ã™ã‚‹å ´"
+"åˆã«ã“ã®ã‚ªãƒ—ションを有効ã«ã—ã¦ä¸‹ã•ã„"
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+"デフォルトã®ã‚³ãƒ¡ãƒ³ãƒˆã« CRC32 を使用ã—ã¾ã™ (ID3 ã‚¿ã‚°ãŒä»˜ã„ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ã¿)"
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"\"タグを埋ã‚ã‚‹\" スキャナ使用時ã«ã€ãƒ•ã‚¡ã‚¤ãƒ«ã® CRC-32 値を計算ã—ã¦ã‚³ãƒ¡ãƒ³ãƒˆãƒ»"
+"フィールドã«æ›¸ãè¾¼ã¿ã¾ã™"
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "CD データベース"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "自動検索ã®ã‚µãƒ¼ãƒå´ã®è¨­å®š"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "åå‰ :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "ãƒãƒ¼ãƒˆç•ªå· :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI パスå :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "手動検索ã®ã‚µãƒ¼ãƒå´ã®è¨­å®š"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "CD データベース"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "CGI パスå :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "プロキシã®è¨­å®š"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "プロキシを使ã†"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "利用ã™ã‚‹ãƒ—ロキシ・サーãƒã‚’入力ã—ã¦ä¸‹ã•ã„"
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "ホストå :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "プロキシ・サーãƒã®åå‰"
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "プロキシ・サーãƒã®ãƒãƒ¼ãƒˆç•ªå·"
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "ユーザå :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "プロキシ・サーãƒã«å¯¾ã™ã‚‹ãƒ¦ãƒ¼ã‚¶åã§ã™"
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "ユーザ・パスワード :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "プロキシ・サーãƒã«å¯¾ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã®ãƒ‘スワードã§ã™"
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "トラックåã®ä¸€è¦§"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr "関連ã™ã‚‹æ¥½æ›²ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã™ã‚‹ (ä½ç½®ã¾ãŸã¯ DLM ã«ç›¸å½“ã™ã‚‹ã‚‚ã®)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"ã“れを有効ã«ã™ã‚‹ã¨ã€ãƒˆãƒ©ãƒƒã‚¯åã®ä¸€è¦§ã§ä½•ã‹é¸æŠžã™ã‚‹ã¨ã€ä»–ã®ä¸€è¦§ã«ã‚る関連ã™ã‚‹"
+"ファイルも自動的ã«é¸æŠžã—ã¾ã™"
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr "楽曲ファイルã®åå‰ã«ä¸€è‡´ã™ã‚‹ã‚¿ã‚¤ãƒˆãƒ«ã« DLM ã‚’é©ç”¨ã™ã‚‹"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "確èªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "プログラムã®çµ‚了を確èªã™ã‚‹"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr "ã“れを有効ã«ã™ã‚‹ã¨ã€ãƒ—ログラム終了時ã«ç¢ºèªãƒ€ã‚¤ã‚¢ãƒ­ã‚°ãŒè¡¨ç¤ºã•ã‚Œã¾ã™"
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "ã‚¿ã‚°ã®æ›¸ãè¾¼ã¿ã‚’確èªã™ã‚‹"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "ファイルåã®å¤‰æ›´ã‚’確èªã™ã‚‹"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "ファイルã®å‰Šé™¤ã‚’確èªã™ã‚‹"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "æ¼”å¥ä¸€è¦§ã®æ›¸ãè¾¼ã¿ã‚’確èªã™ã‚‹"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "設定をé©ç”¨ã—ã¦(ä¿å­˜ã¯ã—ã¾ã›ã‚“)ã€ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’é–‰ã˜ã¾ã™"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "設定をä¿å­˜ã›ãšã«ã€ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’é–‰ã˜ã¾ã™"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "設定をä¿å­˜ã—ã¦ã€ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’é–‰ã˜ã¾ã™"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(例 : %.*d_-_Track_name_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "設定ãŒé©ç”¨ã•ã‚Œã¾ã—ãŸ"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "設定ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "設定ãŒå¤‰æ›´ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" 'デフォルトパスå' ã«æŒ‡å®šã—ãŸãƒ‘スåãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“ï¼\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "フォルダã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "オーディオ・プレイヤー '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ï¼"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "タグを付与ã™ã‚‹"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "ファイルåã¨ãƒ•ã‚©ãƒ«ãƒ€åã®å¤‰æ›´"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "フィールドを編集ã™ã‚‹"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "ã‚¿ã‚°ã®ã‚¹ã‚­ãƒ£ãƒ³ãŒå®Œäº†ã—ã¾ã—ãŸ..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "ã‚¿ã‚°ã®ã‚¹ã‚­ãƒ£ãƒ³ãŒå®Œäº†ã—ã¾ã—ãŸ...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "スキャンエラー: セパレータ '%s' ('%s' ã®ä¸­ã«ã‚ã‚‹) ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "ファイル '%s' をシステムã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«å¤‰æ›ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "æ–°ã—ã„ファイルåã®ã‚¹ã‚­ãƒ£ãƒ³ãŒå®Œäº†ã—ã¾ã—ãŸ..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "æ–°ã—ã„ファイルåã®ã‚¹ã‚­ãƒ£ãƒ³ãŒå®Œäº†ã—ã¾ã—ãŸ...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "ã‚¿ã‚°ã¨ãƒ•ã‚¡ã‚¤ãƒ«åã®ã‚¹ã‚­ãƒ£ãƒ³"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "スキャナ :"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "使用ã™ã‚‹ã‚¹ã‚­ãƒ£ãƒŠã®ã‚¿ã‚¤ãƒ—ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "スキャナ・ウィンドを開ãã‹ã€æŒ‡å®šã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’スキャンã—ã¾ã™"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "スキャナã«é–¢é€£ã™ã‚‹ã‚ªãƒ—ションã§ã™"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "マスクエディタã®è¡¨ç¤ºã‚’ ON/OFF ã—ã¾ã™"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "凡例ã®è¡¨ç¤ºã‚’ ON/OFF ã—ã¾ã™"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¾ã™"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"ファイルåã¨ãƒ‘スåを解æžã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ãƒžã‚¹ã‚¯ã®ã‚³ãƒ¼ãƒ‰(凡例をå‚ç…§ã®ã“ã¨)ã‚’"
+"é¸æŠžã¾ãŸã¯å…¥åŠ›ã—ã¦ä¸‹ã•ã„ (タグフィールドを埋ã‚ã‚‹ã¨ãã«ä½¿ç”¨ã—ã¾ã™)"
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "ã‚¿ã‚°ã®åŸ‹ã‚è¾¼ã¿ã®ãƒ—レビュー..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "ã“ã®ãƒ‘スをマスクã™ã‚‹æŽ¥é ­å­"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"タグを解æžã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã‚³ãƒ¼ãƒ‰ (凡例をå‚ç…§ã®ã“ã¨) ã‚’é¸æŠžã™ã‚‹ã‹å…¥åŠ›ã—ã¦ä¸‹"
+"ã•ã„ (ファイルåã®å¤‰æ›´ã§ä½¿ç”¨ã—ã¾ã™)\n"
+"フォルダを作æˆã™ã‚‹ã«ã¯ '/' を使ã„ã€ã‚‚ã—先頭㫠'/' ãŒä»˜ã„ã¦ã„ã‚‹ã¨çµ¶å¯¾ãƒ‘スã¨ã—"
+"ã¦æ‰±ã„ã€ãれ以外ã¯ç›¸å¯¾ãƒ‘スã¨ã—ã¦æ‰±ã„ã¾ã™"
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "ファイルå変更ã®ãƒ—レビュー..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "フィールドã®é¸æŠž:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"処ç†å¯èƒ½ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å³å´ã«è¡¨ç¤ºã•ã‚Œã‚‹ãƒœã‚¿ãƒ³ç¾¤ã§ã™ã€‚興味ã‚るボタンをé¸æŠžã—ã¦"
+"下ã•ã„。"
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "プロセスファイルå・フィールド"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "プロセスタイトル・フィールド"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "プロセスファイル・演å¥è€…フィールド"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "プロセスアルãƒãƒ ãƒ»ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "プロセス・ジャンル・フィールド"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "プロセスコメント・フィールド"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "プロセス・コンãƒãƒ¼ã‚¶ãƒ»ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "プロセス・オリジナルã®æ¼”å¥è€…フィールド"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "プロセス・ライセンス・フィールド"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "プロセス URL フィールド"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "プロセス・エンコーディング・フィールド"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "é¸æŠžç¯„囲ã®å転"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "å…¨ã¦é¸æŠž/é¸æŠžè§£é™¤"
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "'_' 㨠'%20' ã‚’ ' ' ã«å¤‰æ›ã™ã‚‹"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "å¤‰æ› :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "→"
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"アンダースコアã¾ãŸã¯æ–‡å­—列 %20 を一ã¤ã®ã‚¹ãƒšãƒ¼ã‚¹ã«ç½®ãæ›ãˆã¾ã™ (例: 変æ›å‰"
+"='Text%20In%20An_Entry' 変æ›å¾Œ='Text In An Entry')"
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"スペースを一ã¤ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã«ç½®ãæ›ãˆã¾ã™ (例: 変æ›å‰='Text In An Entry' "
+"変æ›å¾Œ='Text_In_An_Entry')"
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "別ã®æ–‡å­—ã§ç½®ãæ›ãˆã¾ã™"
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"å…¨ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å…¨ã¦ã®æ–‡å­—を大文字ã«å¤‰æ›ã—ã¾ã™ (例: 変æ›å‰='Text IN AN "
+"entry' 変æ›å¾Œ='TEXT IN AN ENTRY')"
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"å…¨ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å…¨ã¦ã®æ–‡å­—ã‚’å°æ–‡å­—ã«å¤‰æ›ã—ã¾ã™ (例: 変æ›å‰='TEXT IN an "
+"entry' 変æ›å¾Œ='text in an entry')"
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"å…¨ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®æœ€åˆã®æ–‡å­—を大文字ã«ã€ãã®ä»–ã®æ–‡å­—ã‚’å°æ–‡å­—ç½®ãæ›ãˆã¾ã™ "
+"(例: 変æ›å‰='text IN An ENTRY' 変æ›å¾Œ='Text in an entry')"
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"å…¨ã¦ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å„å˜èªžã®æœ€åˆã®æ–‡å­—を大文字ã«ã€ãã®ä»–ã®æ–‡å­—ã‚’å°æ–‡å­—ã«ç½®ãæ›"
+"ãˆã¾ã™ (例: 変æ›å‰='Text in an ENTRY' 変æ›å¾Œ='Text In An Entry')"
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "大文字ã®å‰ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’挿入ã™ã‚‹"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "é‡è¤‡ã™ã‚‹ã‚¹ãƒšãƒ¼ã‚¹ã¾ãŸã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã‚’削除ã™ã‚‹"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"å˜èªžé–“ã«ã‚るスペースを全ã¦å‰Šé™¤ã—ã¾ã™ (例: 変æ›å‰='Text In An Entry' 変æ›å¾Œ"
+"='TextInAnEntry')"
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"å„大文字ã®å‰ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’挿入ã—ã¾ã™ (例: 変æ›å‰='TextInAnEntry' 変æ›å¾Œ='Text "
+"In An Entry')"
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"é‡è¤‡ã—ãŸã‚¹ãƒšãƒ¼ã‚¹ã¾ãŸã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã‚’削除ã—ã¾ã™ (例: 変æ›å‰='Text__In__An "
+"Entry' 変æ›å¾Œ='Text_In_An Entry')"
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "凡例"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : æ¼”å¥è€…"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : アルãƒãƒ "
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : コメント"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : コンãƒãƒ¼ã‚¶"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : ライセンス"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : ディスクã®ç•ªå·"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : エンコーディング"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : ジャンル"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : 無視"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : トラック番å·"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : æ¼”å¥è€…"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : トラック"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : タイトル"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : 制作年"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "マスク・エディタ"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "æ–°ã—ã„マスクを作æˆã—ã¾ã™"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "ã“ã®ãƒžã‚¹ã‚¯ã‚’上ã«ç§»å‹•ã—ã¾ã™"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "ã“ã®ãƒžã‚¹ã‚¯ã‚’下ã«ç§»å‹•ã—ã¾ã™"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "マスクã®è¤‡è£½ã‚’作æˆã—ã¾ã™"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "デフォルト・マスクを追加ã—ã¾ã™"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "マスクを削除ã—ã¾ã™"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "マスクをä¿å­˜ã—ã¾ã™"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "æ–°ã—ã„マスク"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "複製: マスクãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "削除: マスクãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "上ã«ç§»å‹•: マスクãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "下ã«ç§»å‹•: マスクãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr ""
+"ERROR: 設定ファイルをä¿å­˜ã§ãã¾ã›ã‚“: %s (%s)\n"
+""
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "設定ファイル '%s' ã‚’é–‹ã‘ã¾ã›ã‚“ (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "デフォルトã®è¨­å®šã‚’ロード中..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "ファイル '%s' (%s) を生æˆã¾ãŸã¯é–‹ã‘ã¾ã›ã‚“"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+"ERROR: 一覧をファイルã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“: %s (%s)\n"
+""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "デフォルト㮠'タグを埋ã‚ã‚‹' マスクをロード中..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "デフォルト㮠'ファイルå変更' マスクをロード中..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "デフォルト㮠'フォルダå変更' マスクをロード中..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"エラー: 環境変数 $HOME ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "エラー: フォルダ '%s' を生æˆã§ãã¾ã›ã‚“ï¼ (%s)"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "入力ãŒåˆ‡ã‚Šè©°ã‚られãŸã‹ã€ç©ºã§ã™ã€‚"
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "入力㌠Ogg ビットストリームã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Ogg ビットストリームã®æœ€åˆã®ãƒšãƒ¼ã‚¸ã‚’読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚"
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "åˆæœŸãƒ˜ãƒƒãƒ€ãƒ»ãƒ‘ケットã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚"
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Ogg ビットストリームã«ã¯ Vorbis データãŒã‚ã‚Šã¾ã›ã‚“。"
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "二番目ã®ãƒ˜ãƒƒãƒ€ãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚"
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "Vorbis ヘッダãŒçµ‚了ã™ã‚‹å‰ã« EOF ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "データãŒãŠã‹ã—ã„ã‹å­˜åœ¨ã—ã¾ã›ã‚“。続行ã—ã¾ã™..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"出力ストリームã«æ›¸ãè¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚出力ストリームãŒãŠã‹ã—ã„ã¾ãŸã¯åˆ‡ã‚Šè©°"
+"ã‚られã¦ã„ã¾ã™ã€‚"
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "オーディオ・プレイヤーã®èµ·å‹•"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "ã‚¿ã‚°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "パディングを使ã†"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "ã‚¿ã‚°ã®å¤‰æ›´ã‚’高速ã§æ›¸ã込む場åˆã¯ ID3v2 ã‚¿ã‚°ã§ãƒ‘ディングを有効ã«ã—ã¦ä¸‹ã•ã„"
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "常ã«ã‚¿ã‚°ã‚’ ISO-8859-1 エンコーディングã§ä¿å­˜ã™ã‚‹"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "タグを書ã込む際㫠ISO-8859-1 ã®æ–‡å­—セットを使用ã—ã¾ã™ (ã“ã®æ–‡å­—セット㯠"
+#~ "ID3v2 㨠ID3v1 ã‚¿ã‚°ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ãŒã€ISO-8859-1 ã§ã¯ãªã„文字ã¯è¡¨"
+#~ "示ã•ã‚Œã¾ã›ã‚“)\n"
+#~ "\n"
+#~ "\"ID3 タグを書ã込む際ã«éžæ¨™æº–ã®æ–‡å­—セットを使用ã™ã‚‹\" ã§åˆ¥ã®æ–‡å­—セットを"
+#~ "é¸æŠžã—ãŸå ´åˆã€ISO-8859-1 ã®ä»£ã‚ã‚Šã«ãれを使用ã—ã¾ã™\n"
+#~ "ã•ã‚‰ã«ã€å¤‰æ›ã§ããªã„文字ãŒã„ãã¤ã‹ã‚ã‚‹å ´åˆã¯ç‰¹åˆ¥ãªãƒ«ãƒ¼ãƒ«ã‚’定義ã§ãã¾ã™"
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "ã‚¿ã‚°ã‚’ ISO-8859-1 エンコーディングã§ä¿å­˜ã—ã€å¤±æ•—ã—ãŸå ´åˆã¯ Unicode を使用"
+#~ "ã™ã‚‹ (推奨)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "ISO-8859-1 ã§å¤‰æ›ãŒå¤±æ•—ã—ãŸã‚‰ Unicode 文字セットを使用ã—ã¾ã™ (Unicode 㯠"
+#~ "ID3v2 ã§ä½¿ç”¨ã§ãã¾ã™ãŒã€ID3v1 ã‚¿ã‚°ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ ISO-8859-1 ã—ã‹ä½¿ç”¨ã§ãã¾"
+#~ "ã›ã‚“)\n"
+#~ "\n"
+#~ "\"ID3 タグを書ã込む際ã«éžæ¨™æº–ã®æ–‡å­—セットを使用ã™ã‚‹:\" ã§åˆ¥ã®æ–‡å­—セットを"
+#~ "é¸æŠžã—ãŸå ´åˆã€ISO-8859-1 ã®ä»£ã‚ã‚Šã«ãれを使用ã—ã¾ã™\n"
+#~ "ã•ã‚‰ã«ã€å¤‰æ›ã§ããªã„文字ãŒã„ãã¤ã‹ã‚ã‚‹å ´åˆã¯ç‰¹åˆ¥ãªãƒ«ãƒ¼ãƒ«ã‚’定義ã§ãã¾ã™"
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "常㫠Unicode 文字セットを使用ã™ã‚‹"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "ID3v2 ã‚¿ã‚°ã« Unicode 文字セットを使用ã—ã¾ã™ (ID3v1 ã¯å¸¸ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã® ISO-"
+#~ "8859-1 ã§ä¿å­˜ã•ã‚Œã¾ã™)\n"
+#~ "\n"
+#~ "\"ID3 タグを書ã込む際ã«éžæ¨™æº–ã®æ–‡å­—セットを使用ã™ã‚‹:\" ã§åˆ¥ã®æ–‡å­—セットを"
+#~ "é¸æŠžã—ãŸå ´åˆã€ISO-8859-1 ã®ä»£ã‚ã‚Šã«ãれを使用ã—ã¾ã™"
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "ISO-8859-1 フィールドã«å¯¾ã—ã¦ã€æ¬¡ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã§ä¸Šæ›¸ãã™ã‚‹ (上級者å‘"
+#~ "ã‘ï¼): "
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "ID3 タグを読ã¿è¾¼ã‚€éš›ã«éžæ¨™æº–ã®æ–‡å­—セットを使用ã™ã‚‹:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "ID3 タグを書ã込む際ã«éžæ¨™æº–ã®æ–‡å­—セットを使用ã™ã‚‹:"
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "ã“ã®æ–‡å­—セットã¯ã€ã‚¿ã‚°ã‚’書ã込む際㫠ISO-8859-1 ã§ä¿å­˜ã•ã‚ŒãŸæ–‡å­—列を変æ›ã™"
+#~ "ã‚‹éš›ã«ä½¿ç”¨ã—ã¾ã™ (ID3v2 / ID3v1 ã‚¿ã‚°å‘ã‘)"
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "ISO-8859-1 フィールドã«å¯¾ã—ã¦ã€ã‚¿ã‚°ã‚’書ã込む時ã«å¤‰æ›ã§ããªã„文字ã¯ã“れら"
+#~ "ã®ãƒ«ãƒ¼ãƒ«ã‚‚é©ç”¨ã™ã‚‹"
+
+#~ msgid "Do nothing"
+#~ msgstr "何もã—ãªã„"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr "強制的ã«ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’é©ç”¨ã—音訳ã™ã‚‹"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr "強制的ã«ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’é©ç”¨ã—ã¦ã¦å¤‰æ›ã§ããªã„文字ã¯ç„¡è¦–ã™ã‚‹"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "'%s' ã‹ã‚‰ '%s' ã¸ã®\n"
+#~ "文字コード変æ›ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ï¼"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "ファイルã®ã‚ªãƒ¼ãƒ—ン中ã«ã‚¨ãƒ©ãƒ¼: '%s' (%s)\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "起動時ã«ãƒ•ã‚©ãƒ«ãƒ€ã‚’読ã¿è¾¼ã‚€"
diff --git a/po/nl.gmo b/po/nl.gmo
new file mode 100644
index 0000000..ee1abd9
--- /dev/null
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..ee87442
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,5165 @@
+# translation of easytag.HEAD.po to Dutch
+# Dutch catalog for EasyTAG.
+# Copyright (C) 2000-2004 Free Software Foundation, Inc.
+# Vincent van Adrighem <V.vanAdrighem@ITS.TUDelft.nl>, 2000, 2001.
+# Björn Olievier <sprudl@users.sourceforge.net>, 2002, 2003, 2004.
+# Vincent van Adrighem <adrighem@gnome.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 1.99.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2004-11-21 19:20+0100\n"
+"Last-Translator: Vincent van Adrighem <adrighem@gnome.org>\n"
+"Language-Team: Dutch <nl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: src/about.c:122
+#, fuzzy
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG is een programma voor het bewerken van tags van MP2-, MP3-, "
+"FLAC-, Ogg Vorbis, MusePack en Monkeys Audio-bestanden. De handige GTK+-"
+"interface maakt het taggen erg eenvoudig."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Duitse vertaling)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Russische vertaling)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Nederlandse vertaling)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Zweedse vertaling)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Hongaarse vertaling)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Italiaanse vertaling)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Japanse vertaling)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Oekraïnse vertaling)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Tsjechische vertaling)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Spaanse vertaling)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Poolse vertaling)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Roemeense vertaling)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Deense vertaling)"
+
+#: src/about.c:157
+#, fuzzy
+msgid "(Greek translation)"
+msgstr "(Duitse vertaling)"
+
+#: src/about.c:158
+#, fuzzy
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Japanse vertaling)"
+
+#: src/about.c:159
+#, fuzzy
+msgid "(Bulgarian translation)"
+msgstr "(Hongaarse vertaling)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(Japanse vertaling)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Duitse vertaling)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Info..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Info"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(gecompileerd: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(gebruikt: GTK+ %d.%d.%d en id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(Ondersteuning voor FLAC-bestanden uitgeschakeld)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(Ondersteuning voor FLAC-bestanden uitgeschakeld)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(Ondersteuning voor FLAC-bestanden uitgeschakeld)"
+
+#: src/about.c:296
+#, fuzzy, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(Ondersteuning voor FLAC-bestanden uitgeschakeld)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Ondersteuning voor Ogg Vorbis-bestanden uitgeschakeld)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(Ondersteuning voor FLAC-bestanden uitgeschakeld)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(Ondersteuning voor FLAC-bestanden uitgeschakeld)"
+
+#: src/about.c:317
+#, fuzzy
+msgid "(MP4/AAC file support disabled)"
+msgstr "(Ondersteuning voor FLAC-bestanden uitgeschakeld)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(Ondersteuning voor FLAC-bestanden uitgeschakeld)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Auteur: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Homepage: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Beschrijving:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Met dank aan"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Vertalingen:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Algemeen:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Wijzigingen"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Kan bestand '%s' (%s) niet openen"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr ""
+"FOUT tijdens het openen van bestand: '%s' (%s).\n"
+""
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Bestand"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Sorteren op tag"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Sorteren op eigenschap"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Oplopend op bestandsnaam"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Aflopend op bestandsnaam"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Oplopend op aanmaakdatum"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Aflopend op aanmaakdatum"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Oplopend op tracknummer"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Aflopend op tracknummer"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Oplopend op titel"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Aflopend op titel"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Oplopend op artiest"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Aflopend op artiest"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Oplopend op album"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Aflopend op album"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Oplopend op jaar"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Aflopend op jaar"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Oplopend op genre"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Aflopend op genre"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Oplopend op commentaar"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Aflopend op commentaar"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Oplopend op componist"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Aflopend op componist"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Oplopend op originele artiest"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Aflopend op originele artiest"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Oplopend op copyright"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Aflopend op copyright"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Oplopend op URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Aflopend op URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Oplopend op encoder-naam"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Aflopend op encoder-naam"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Oplopend op bestandstype"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Aflopend op bestandstype"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Oplopend op bestandsgrootte"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Aflopend op bestandsgrootte"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Oplopend op duratie"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Aflopend op duratie"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Oplopend op bitrate"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Aflopend op bitrate"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Oplopend op sample-frequentie"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Aflopend op sample-frequentie"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Openen met..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Alles selecteren"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Niets selecteren"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Bestandsselectie omkeren"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Verwijderen"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Eerste bestand"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Eerste bestand"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "Vo_rige bestand"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Vorige bestand"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "Vo_lgende bestand"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Volgende bestand"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "_Laatste bestand"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Laatste bestand"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "Bestanden _verwerken"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Bestanden verwerken"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "Tags ver_wijderen"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Tags verwijderen"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "_Ongedaan maken"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Ongedaan maken"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "_Opnieuw"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Opnieuw"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "Bestanden op_slaan"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Bestanden opslaan"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "_Force Saving File(s)"
+msgstr "Bestanden _verwerken"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "Force Saving File(s)"
+msgstr "Bestanden verwerken"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Ongedaan maken"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Opnieuw"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "A_fsluiten"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Afsluiten"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "Bestandsbe_heer"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Ga naar _persoonlijke map"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Ga naar homedirectory"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Ga naar _standaardmap"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Ga naar standaardmap"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Stel huidige _map in als standaardmap"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Stel huidige map in als standaardmap"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Boomstructuur | Artiest-Album"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Map hernoemen..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Map herladen"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Bladeren door map met ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "Boom in_vouwen"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Opnieuw inlezen"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "_Verwerkingsvenster"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "Tags _vullen..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Tags vullen..."
+
+#: src/bar.c:222
+#, fuzzy
+msgid "_Rename File(s) and Directory ..."
+msgstr "Map hernoemen"
+
+#: src/bar.c:222
+#, fuzzy
+msgid "Rename File(s) and Directory ..."
+msgstr "Map hernoemen"
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Cosmetisch..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Velden verwerken..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "E_xtra"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Bestanden _zoeken..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Bestanden zoeken..."
+
+#: src/bar.c:227
+#, fuzzy
+msgid "CD Data _Base Search ..."
+msgstr "CDDB doorzoeken..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB doorzoeken..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Bestandsnamen uit TXT lezen..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Afspeellijst opslaan..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Beluister nummers"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Instellingen"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Voorkeuren..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Voorkeuren..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Hulp"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Info"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Huidige actie afbreken"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "Bestandsopdrachten"
+
+#: src/bar.c:253
+#, fuzzy
+msgid "CDDB Search File(s)..."
+msgstr "Bestanden zoeken..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "_Submappen doorzoeken"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+#, fuzzy
+msgid "Show Hidden Directories"
+msgstr "Verborgen submappen doorzoeken"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Toon boomstructuur / Toon artiesten en albums"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Could not merge UI, error was: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Klaar om te beginnen..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Nieuwe standaardmap voor bestanden geselecteerd"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Bevestigen..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Sommige bestanden zijn aangepast, maar niet opgeslagen...\n"
+"Wilt u deze opslaan voor u de map verlaat?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"De ingevoerde map is onjuist!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Fout..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "Albums"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Fout: Zoeken naar %s, kan node %s niet vinden in boomstructuur."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Artiest"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "Albums"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "Bestanden"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Ga naar bovenliggende map"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Geef een map in om te bekijken."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Boomstructuur"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Artiest & Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Map hernoemen"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "De map '%s' hernoemen naar:"
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Gebruik masker: "
+
+#: src/browser.c:3217
+#, fuzzy
+msgid "If activated, it will use masks to rename directory."
+msgstr ""
+"Wanneer ingeschakeld zal de playlist bewaard worden in de bovenliggende map."
+
+#: src/browser.c:3236
+#, fuzzy
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Selecteer of voer een masker in volgens de codes in de legenda, om zo de tag "
+"te vullen vanuit de bestandsnamen"
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Onjuist verwerkingsmasker"
+
+#. Preview label
+#: src/browser.c:3262
+#, fuzzy
+msgid "Rename directory preview..."
+msgstr "Voorbeeld hernoemen..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Je moet wel een naam invoeren!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Kan '%s' niet omzetten naar bestandscodering. Kies a.u.b. een andere naam."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"De map kan niet hernoemd worden omdat de mapnaam al bestaat!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"De map \n"
+"'%s'\n"
+"kan niet hernoemd worden naar\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Map hernoemd"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Programma: "
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Geef het programma om uit te voeren. De huidige map wordt als parameter "
+"meegegeven."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Openen met..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Geef het programma om uit te voeren. Het huidige bestand wordt als "
+"parameter meegegeven."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Je moet wel een programmanaam invoeren!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr ""
+
+#: src/browser.c:4019 src/misc.c:943
+#, fuzzy, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Kan '%s' (%s) niet uitvoeren\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Kan geen proces afsplitsen!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Commando uitgevoerd: '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Artiest / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Categorie"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Titel"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Duur:"
+
+#: src/cddb.c:240
+#, fuzzy
+msgid "CD Data Base Search"
+msgstr "Doorzoek CDDB"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Automatisch zoeken"
+
+#: src/cddb.c:284
+#, fuzzy
+msgid "Request CD database :"
+msgstr "CDDB database:"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"CDDB database raadplegen aan de hand van de geselecteerde bestanden (de "
+"volgorde is belangrijk) om een CDDB-ID te verkrijgen"
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Zoeke afbreken..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Indien geactiveerd zullen na het inlezen van de velden de bestanden verwerkt "
+"worden (het verwerkingsvenster moet geopend zijn)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Handmatig zoeken"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Zoektermen: "
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Geef de zoektermen in (gescheiden door een spatie of '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Zoeken in: "
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Alle velden"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Andere"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Alle categorieën"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Klassiek"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Diversen"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "New age"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Soundtrack"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "inclusief funk, soul, rap, pop, industrial, metal, etc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "films, shows"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "andere"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr "Categorieën"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Resultaten: "
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Zoeken: "
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Geef de zoektermen in de onderstaande lijst in"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Volgende zoeken"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Vorige zoeken"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "Toon enkel rode lijnen / Toon alle lijnen"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Alle lijnen deselecteren"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Lijnselectie omkeren"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Alle lijnen selecteren"
+
+#: src/cddb.c:702
+#, fuzzy
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Selecteren om toe te voegen aan de bestandslijst. Alle lijnen worden "
+"toegevoegd indien geen enkele lijn is geselecteerd."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Plaats in: "
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Alles"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Bestandsnaam"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Titel"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Jaar"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Tracknr."
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "Aantal tracks"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Genre"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Verwerk ieder bestand met huidige instellingen"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Laad de geselecteerde lijnen of alle lijnen (indien geen geselecteerd)"
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Klaar om te zoeken..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album: '%s', artiest: '%s', duur: '%s', jaar: '%s', genre: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Selectie omkeren"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Sorteer lijst volgens tracknummer"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Sorteer lijst volgens titel"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Opzoeken '%s'..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Kan host '%s' (%s) niet vinden"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Kan geen nieuwe socket aanmaken (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Bezig met verbinden naar '%s', poort '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Kan geen verbinding maken met '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Verbonden met '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Bezig met inlezen resultaten (%s)..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Fout bij het verwijderen van ID3v1 tag van '%s' (%s)\n"
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Kan bestand '%s' (%s) niet openen\n"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Kan bestand '%s' (%s) niet openen"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Bezig met opzoeken ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Kan niet opzoeken (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Bezig met inlezen resultaten ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+#, fuzzy
+msgid "The server returned a wrong answer!"
+msgstr "De server gaf een verkeerd antwoord! (%s)"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "De server gaf een verkeerd antwoord! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr ""
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "%d passende albums gevonden"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Bezig met inlezen resultaten (%s)..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Bezig met inlezen resultaten (%s)..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+#, fuzzy
+msgid "No file selected!"
+msgstr "Kopiëren: Geen rij geselecteerd!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, fuzzy, c-format
+msgid "%d file(s) selected!"
+msgstr "%u bestanden"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Klaar om te zoeken..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Verzoek verzonden (CDDB-ID: %s, #nummers: %d, Totale lengte: %d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "%d passende albums gevonden"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Kan bestand '%s' (%s) niet openen"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Inlezen van albumtracklijst ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Opgepast, u gaat %d lijnen van het CDDB-resultaat toepassen op %d "
+"bestanden!\n"
+"\n"
+"Wilt u verder gaan?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Schrijf tag van CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arabisch (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabisch (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arabisch (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltisch (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltisch (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Baltisch (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtisch (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Centraal Europees (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Centraal Europees (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Centraal Europees (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Vereenvoudigd Chinees (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Vereenvoudigd Chinees (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Traditioneel Chinees (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Traditioneel Chinees (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Cyrillisch (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cyrillisch (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cyrillisch (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cyrillisch (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cyrillisch (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Cyrillisch/Russisch (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Cyrillisch/Oekraïns (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Engels (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Grieks (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Grieks (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hebreeuws (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebreeuws (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japans (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japans (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japans (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Koreaans (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Noors (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Zuid-Europees (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Thais (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Turks (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turks (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Turks (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamees (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamees (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Visueel Hebreeuws (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Westers (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Westers (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Westers (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Westers (Windows-1252)"
+
+#: src/charset.c:542
+#, fuzzy, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"De bestandsnaam '%s' kan niet omgezet worden naar UTF-8. (Probeer de "
+"omgevingsvariabele G_FILENAME_ENCODING eens in te stellen): %s\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "Ongeldige UTF-8"
+
+#: src/charset.c:641
+#, fuzzy, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"De bestandsnaam '%s' kan niet omgezet worden naar UTF-8. (Probeer de "
+"omgevingsvariabele G_FILENAME_ENCODING eens in te stellen): %s\n"
+
+#: src/charset.c:705
+#, fuzzy, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+"De bestandsnaam '%s' kan niet omgezet worden naar UTF-8. (Probeer de "
+"omgevingsvariabele G_FILENAME_ENCODING eens in te stellen): %s\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "EasyTAG %s wordt gestart (PId: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Gebruikt id3lib versie %d.%d.%d...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Gebruikt id3lib versie %d.%d.%d...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Hernoemen bestand '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr ""
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s door %s (gecompileerd %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Homepage: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Bestandsbeheer"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Bestand"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Bestand is \"Alleen Lezen\""
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Bestand niet gevonden"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Layer ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Bitrate:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Freq:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Mode:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Grootte:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Tijdsduur:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Tag"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+#, fuzzy
+msgid "Common"
+msgstr "Commentaar"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Titel:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Gebruik deze titel voor geselecteerde bestanden"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Artiest:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Gebruik deze artiest voor geselecteerde bestanden"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Gebruik albumtitel voor geselecteerde bestanden"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CDDB"
+
+#: src/easytag.c:658
+#, fuzzy
+msgid "Tag selected files with this disc number"
+msgstr "Gebruik deze componist voor geselecteerde bestanden"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Jaar:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Gebruik dit jaar voor geselecteerde bestanden"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr "Nummer alle tracks oplopend. Start in iedere submap opnieuw met 01."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Track:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Vul het aantal bestanden in de directory van het geselecteerde bstand in als "
+"aantal tracks van het album."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Gebruik dit aantal tracks voor geselecteerde bestanden"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Genre:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Gebruik dit genre voor geselecteerde bestanden"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Commentaar:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Gebruik dit commentaar voor geselecteerde bestanden"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Componist:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Gebruik deze componist voor geselecteerde bestanden"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Orig. artiest:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Gebruik deze originele artiest voor geselecteerde bestanden"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Copyright:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Gebruik dit copyright voor geselecteerde bestanden"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Gebruik deze URL voor geselecteerde bestanden"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Encoded door:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Gebruik deze encoder-naam voor geselecteerde bestanden"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr ""
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr ""
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr ""
+
+#: src/easytag.c:1034
+#, fuzzy
+msgid "Tag selected files with these pictures"
+msgstr "Gebruik deze titel voor geselecteerde bestanden"
+
+#: src/easytag.c:1044
+#, fuzzy
+msgid "Remove selected pictures, else all pictures."
+msgstr "URL van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr ""
+
+#: src/easytag.c:1060
+#, fuzzy
+msgid "Save the selected pictures on the hard disk."
+msgstr "Tekenset voor bestanden op harde schijf."
+
+#: src/easytag.c:1067
+#, fuzzy
+msgid "Set properties of the selected pictures."
+msgstr "Titel '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Titel '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Titels van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Artiest '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Artiest van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Album '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Album van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1204
+#, fuzzy, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Componist '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1206
+#, fuzzy
+msgid "Removed disc number from selected files."
+msgstr "Tracknummer van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Jaar '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Jaar van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Het tracknummer werd in geselecteerde bestanden genoteerd als 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Het tracknummer werd in geselecteerde bestanden genoteerd als 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Tracknummer van geselecteerde bestanden verwijderd."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Geslecteerde tracks zijn oplopend genummerd."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Genre '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Genre van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Commentaar '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Commentaar van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Componist '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Componist van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Originele artiest '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Originele artiest van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Copyright '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Copyright van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "URL '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "URL van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Encoder-naam '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Encoder-naam van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1528
+#, fuzzy
+msgid "Selected files tagged with pictures."
+msgstr "Titel '%s' is gebruikt voor geselecteerde bestanden."
+
+#: src/easytag.c:1530
+#, fuzzy
+msgid "Removed pictures from selected files."
+msgstr "Titels van geselecteerde bestanden verwijderd."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Selecteer mode en masker en herhaal de actie"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Alle tags zijn verwerkt"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Alle tags zijn verwijderd"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Alle bestanden zijn bewaard..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "De bestanden zijn gedeeltelijk opgeslagen..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "De bestanden zijn gedeeltelijk gewist..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Alle bestanden zijn gewist..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Wilt u de tag van het bestand\n"
+"'%s' opslaan?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Tag op opslaan..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+#, fuzzy
+msgid "Rename File and Directory..."
+msgstr "Map hernoemen"
+
+#: src/easytag.c:2475
+#, fuzzy, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Wilt u het bestand: \n"
+"'%s' \n"
+"naar \n"
+"'%s' hernoemen?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+#, fuzzy
+msgid "Rename Directory..."
+msgstr "Map hernoemen..."
+
+#: src/easytag.c:2481
+#, fuzzy, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Wilt u het bestand: \n"
+"'%s' \n"
+"naar \n"
+"'%s' hernoemen?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Bestand hernoemen..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Wilt u het bestand: \n"
+"'%s' \n"
+"naar \n"
+"'%s' hernoemen?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Tag van '%s' aan het schrijven"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Tags opgeslagen"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Kan tag niet opslaan in bestand: '%s' !\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Hernoemen bestand '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Het bestand: \n"
+"'%s'\n"
+"kan niet hernoemd worden naar\n"
+"'%s'.\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Bestanden niet hernoemd..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Het bestand\n"
+"'%s'\n"
+"kan niet hernoemd worden omdat\n"
+"'%s'\n"
+"al bestaat."
+
+#: src/easytag.c:2802
+#, fuzzy, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan de map niet inlezen: \n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Het bestand '%s' is hernoemd naar '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Bestanden hernoemd..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, fuzzy, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan de map niet inlezen: \n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, fuzzy, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Het bestand '%s' is hernoemd naar '%s'\n"
+
+#: src/easytag.c:2877
+#, fuzzy
+msgid "File(s) moved..."
+msgstr "Bestanden hernoemd..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, fuzzy, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Het bestand: \n"
+"'%s'\n"
+"kan niet hernoemd worden naar\n"
+"'%s'.\n"
+"(%s)"
+
+#: src/easytag.c:2917
+#, fuzzy
+msgid "File(s) not moved..."
+msgstr "Bestanden niet hernoemd..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Bent u zeker dat u het bestand\n"
+" '%s'\n"
+"wilt verwijderen?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Verwijder bestand..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Bestand '%s' gewist"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Kan de map niet inlezen: \n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Bezig met zoeken..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Bestand: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "%d bestanden gevonden in deze map en submappen"
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "%d bestanden gevonden in deze map"
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u bestanden"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Deze map en de submappen bevatten geen bestanden!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Deze map bevat geen bestanden!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Bezig met zoeken..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " STOP met zoeken... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Voer een mapnaam in om te bekijken."
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Gebruik dit veld voor geselecteerde bestanden"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Converteer '_' en '%20' naar spaties"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Converteer ' ' naar '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Allemaal hoofdletters"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Allemaal kleine letters"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Eerste letter hoofdletter"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Iedere eerste letter hoofdletter"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Verwijder spaties"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Voeg spatie toe voor iedere hoofdletter"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Verwijder dubbele spaties of underscores"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: afgebroken! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "Signaal ontvangen: %s (%d)\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+#, fuzzy
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"U hebt waarschijnlijk een bug in EasyTAG ontdekt. Gelieve een bugrapport "
+"met debuginformatie ('gdb easytag core' gevolgd door 'bt' en 'l') te zenden "
+"naar easytag@gmail.com"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Onbekend signaal"
+
+#: src/easytag.c:4452
+#, fuzzy
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Gebruik: easytag [optie] \n"
+" of: easytag [map] \n"
+"\n"
+"Opties:\n"
+"-------\n"
+"-h, --help Deze tekst weergeven.\n"
+"-v, --version Versie-informatie weergeven.\n"
+"\n"
+"Map:\n"
+"----\n"
+"/pad/naar/bestanden Een absoluut pad laden.\n"
+"., ./ De huidige map laden.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: normaal afgesloten! Tot ziens..."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Sommige bestanden zijn aangepast maar niet opgeslagen...\n"
+"Wilt u deze opslaan voor u het programma verlaat?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Wilt u EasyTAG werkelijk verlaten?"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3-tag"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis-tag"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis-tag"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE-tag"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr ""
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3-bestand"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2-bestand"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis-bestand"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Volgende bestand"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC-bestand"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MusePack-bestand"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey's Audio-bestand"
+
+#: src/et_core.c:2593
+#, fuzzy
+msgid "MP4/AAC File"
+msgstr "MP2-bestand"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "MusePack-bestand"
+
+#: src/et_core.c:2873
+#, c-format
+msgid "Pictures (%d)"
+msgstr ""
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Kan codering van bestandsnaam niet omzetten \n"
+"naar systeemcodering (Probeer de \n"
+"omgevingsvariabele G_FILENAME_ENCODING eens in te stellen): '%s'"
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Bestandsnaam vertalingen"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr ""
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Encoder:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+#, fuzzy
+msgid "Channels:"
+msgstr "Wijzigingen"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"FOUT tijdens het openen van bestand: '%s' (%s).\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "FOUT: Kan commentaar niet opslaan in bestand: %s (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Tag weggeschreven van '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Tag verwijderd van '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Fout bij het verwijderen van ID3v1 tag van '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Fout bij het verwijderen van ID3v2 tag van '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Fout bij het aanpassen van ID3v2 tag van '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Fout bij het aanpassen van ID3v1 tag van '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Tag aangepast van '%s'"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Geen fouten gemeld"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Geen geheugen vrij"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Geen gegevens te verwerken"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Onjuist geformatteerde data"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Geen buffer om in te schrijven"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Buffer is te klein"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Ongeldig frame ID"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Veld niet gevonden"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Onbekend veldtype"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Tag is al gekoppeld aan een bestand"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Ongeldige versie van tag"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Geen bestand om te verwerken"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Poging tot schrijven naar alleen-lezen bestand"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Fout bij compressie/decompressie"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Onbekende fout!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+
+#: src/id3_tag.c:1214
+#, fuzzy
+msgid "Corrupted file..."
+msgstr "Selecteer bestand..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Ja "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Nee "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Toepassen "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Opslaan "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Annuleren "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Sluiten "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Opslaan "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Uitvoeren "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " Zoeken "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "Bladeren..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Selecteer map..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Selecteer bestand..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "Bezig met zoeken..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Kan '%s' (%s) niet uitvoeren\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Creëer playlist"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "M3U-playlistnaam"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Gebruik mapnaam"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Bewerk maskers"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Playlist-instellingen"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Alleen geselecteerde bestanden meetellen"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Indien waar, zullen alleen de geselecteerde bestanden in de afspeellijst "
+"gezet worden, anders wordt alles toegevoegd."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Gebruik volledig pad voor bestanden in lijst"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Gebruik relatief pad voor bestanden in lijst"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Maak playlist in bovenliggende map"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+"Wanneer ingeschakeld zal de playlist bewaard worden in de bovenliggende map."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Gebruik DOS directory scheidingsteken"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Deze optie vervangt het UNIX directory scheidingsteken '/' door dat van DOS "
+"'\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Playlist inhoud"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Bewaar enkel lijst met bestanden"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Gebruik bestandsnaam om te bewaren"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Bewaar info gebruik makend van: "
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Playlist bestand '%s' bestaat reeds!\n"
+"Overschrijven?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Sla playlist op..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Kan playlist niet opslaan in bestand: %s!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Playlist weggeschreven van '%s'"
+
+#: src/misc.c:1916
+#, fuzzy
+msgid "CD"
+msgstr "CDDB"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Track"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Commentaar"
+
+#: src/misc.c:1921 src/picture.c:820
+#, fuzzy
+msgid "Composer"
+msgstr "Componist:"
+
+#: src/misc.c:1922
+#, fuzzy
+msgid "Orig. Artist"
+msgstr "Orig. artiest:"
+
+#: src/misc.c:1923
+#, fuzzy
+msgid "Copyright"
+msgstr "Copyright:"
+
+#: src/misc.c:1924
+#, fuzzy
+msgid "URL"
+msgstr "URL:"
+
+#: src/misc.c:1925
+#, fuzzy
+msgid "Encoded by"
+msgstr "Encoded door:"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Zoek bestand"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "In :"
+
+#: src/misc.c:1985
+#, fuzzy
+msgid "the File Name"
+msgstr "Bestandsnaam"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+#, fuzzy
+msgid "the Tag"
+msgstr "Tag op opslaan..."
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Hoofdlettergevoelig"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "%d bestanden gevonden"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Laad bestandsnamen uit tekstbestand"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Bestand :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr "Laden "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Inhoud van het ingelezen bestand: "
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Lijst met bestandsnamen"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Deze optie zorgt ervoor dat de bestanden worden verwerkt zodra de "
+"bestandsnamen zijn ingelezen (het verwerkingsvenster moet geopend zijn)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Witregel invoegen"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Lijn wissen"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Wis alle lege lijnen"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Herladen"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profiel:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr ""
+
+#: src/mp4_header.c:131
+#, fuzzy
+msgid "Unknown"
+msgstr "Onbekend signaal"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr ""
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, fuzzy, c-format
+msgid "~%d kb/s"
+msgstr "%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Doe hetzelfde voor de andere bestanden"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Ogg-bitstream bevat geen Vorbis-gegevens"
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "FOUT tijdens het openen van bestand: '%s'als vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Opgelet: HEt Ogg Vorbis-bestand '%s' bevat een ID3v2-tag."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr ""
+
+#: src/picture.c:303 src/picture.c:661
+#, fuzzy
+msgid "All Files"
+msgstr "Alle velden"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr ""
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr ""
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr ""
+
+#. Description
+#: src/picture.c:532
+#, fuzzy
+msgid "Picture Description:"
+msgstr "Beschrijving:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr ""
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+
+#: src/picture.c:734
+#, fuzzy
+msgid "Save file..."
+msgstr "Selecteer bestand..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr ""
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr ""
+
+#: src/picture.c:789
+#, fuzzy
+msgid "Unknown image"
+msgstr "Onbekend signaal"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr ""
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr ""
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr ""
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr ""
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr ""
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr ""
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr ""
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr ""
+
+#: src/picture.c:816
+#, fuzzy
+msgid "Conductor"
+msgstr "Country"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr ""
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr ""
+
+#: src/picture.c:824
+#, fuzzy
+msgid "Recording location"
+msgstr "Aflopend op duratie"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr ""
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr ""
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr ""
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr ""
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr ""
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr ""
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr ""
+
+#: src/picture.c:840
+#, fuzzy
+msgid "Unknown picture type"
+msgstr "Onbekend veldtype"
+
+#: src/picture.c:868 src/picture.c:879
+#, fuzzy
+msgid "pixels"
+msgstr "Velden"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr ""
+
+#: src/picture.c:881
+#, fuzzy
+msgid "Description"
+msgstr "Beschrijving:"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr ""
+
+#: src/picture.c:1080
+#, fuzzy, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr "Kan bestand '%s' (%s) niet openen\n"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr ""
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Voorkeuren..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Bestandsbeheer"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Ga naar standaardmap"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Geef aan waar uw bestanden staan. Deze map wordt geopend wanneer EasyTAG "
+"start zonder argumenten."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Zoek automatisch naar bestand bij het opstarten van EasyTAG in de volgende "
+"map. Merk op dat deze instelling genegeerd wordt bij het opstarten van "
+"EasyTAG met een argument (easytag /pad/naar/bestanden)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Onderliggende mappen doorzoeken"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "Doorzoek ook alle submappen bij het inlezen van de map."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Toon submappen bij het selecteren van een map."
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr "Dit opent de geselecteerde map om alle submappen te tonen."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Verborgen submappen doorzoeken"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "Verborgen submappen doorzoeken (mappen die beginnen met een punt)"
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Gebruikersinterface"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Geef bestandsinformatie weer"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Wanneer ingeschakeld, wordt er informatie weergegeven over het bestand (MPEG "
+"versie, bitrate, duur, ...)."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr ""
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr ""
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr ""
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Sorteeropties"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Sorteer de bestanden: "
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Oplopend volgens bestandsnaam"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Aflopend volgens bestandsnaam"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Oplopend volgens tracknummer"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Aflopend volgens tracknummer"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Oplopend volgens datum creatie"
+
+#: src/prefs.c:305
+#, fuzzy
+msgid "Descending creation date"
+msgstr "Aflopend op aanmaakdatum"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Oplopend volgens titel"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Aflopend volgens titel"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Oplopend volgens artiest"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Aflopend volgens artiest"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Oplopend volgens album"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Aflopend volgens album"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Oplopend volgens jaar"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Aflopend volgens jaar"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Oplopend volgens genre"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Aflopend volgens genre"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Oplopend volgens commentaar"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Aflopend volgens commentaar"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Sorteermethode van bestanden bij het inlezen van een map."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "Wanneer ingeschakeld zal de sortering hoofdlettergevoelig zijn."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Positie van dialoogschermen"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Maakt niet uit"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Laat de windowmanager beslissen."
+
+#: src/prefs.c:350
+#, fuzzy
+msgid "Center of the main window"
+msgstr "Gecentreerd op het scherm"
+
+#: src/prefs.c:354
+#, fuzzy
+msgid "Windows should be placed in the center of the main window."
+msgstr "Vensters worden in het midden van het scherm geplaatst."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Gecentreerd op het scherm"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Vensters worden in het midden van het scherm geplaatst."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Muispositie"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Vensters worden onder de muis geplaatst."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Audiospeler"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Uit te voeren programma: "
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Geef hier het programma in waarmee de bestanden worden afgespeeld. Het is "
+"mogelijk om extra argumenten mee te geven, bv. 'xmms -p'. Vervolgens wordt "
+"de bestandsnaam als extra argument meegegeven."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+#, fuzzy
+msgid "File Settings"
+msgstr "_Instellingen"
+
+#. File (name) Options
+#: src/prefs.c:426
+#, fuzzy
+msgid "File Options"
+msgstr "Bestandsnaam instellingen"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "Vervang ongeldige tekens in bestandsnaam (voor Windows en CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Vervang ongeldige tekens ('\\', ':', ';', '*', '?', '\"', '<', '>', '|') in "
+"de bestandsnaam bij het schrijven naar bestandssystemen als FAT-16/32 en "
+"ISO9660 met Joliet extensies om problemen te vermijden bij het hernoemen van "
+"het bestand. Dit is handig wanneer bestanden hernoemd worden via het "
+"verwerkingsvenster."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Bestandsextensie omzetten naar:"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Kleine letters"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "De extensie wordt dan bijvoorbeeld '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Hoofdletters"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "De extensie wordt dan bijvoorbeeld '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Onveranderd"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "De extensie zal niet veranderd worden"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr ""
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+
+#. Character Set for File Name
+#: src/prefs.c:473
+#, fuzzy
+msgid "Character Set for File Name"
+msgstr "Codering voor ID3-tags."
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr ""
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Tags"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Tag instellingen"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Datum vervolledigen als deze niet compleet is"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Probeer het jaarveld te vervolledigen als u alleen de laatste 2 cijfers "
+"invoert (bv. huidige jaar is 2005: 5 => 2005, 4 => 2004, 6 => 1996, 95 => "
+"1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Bewaar tracknummer met vast aantal cijfers: "
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Dit zorgt ervoor dat het tracknummer altijd met een vast aantal cijfers "
+"wordt opgeslagen door voorloopnullen toe te voegen. Zonder deze optie wordt "
+"het originele formaat behouden."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Ogg Vorbis bestanden: sla commentaar ook op in XMMS-formaat"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS behandelt het commentaarveld in Ogg Vorbis-bestanden niet zoals de "
+"meeste programma's. Dit veld wordt gewoonlijk gemarkeerd met 'comment=', "
+"maar XMMS gebruikt enkel '='. Schakel deze optie uit indien u niet wil dat "
+"andere programma's waarschuwingen geven over onbekende velden. XMMS zal dan "
+"echter geen commentaren vinden."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr ""
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+#, fuzzy
+msgid "ID3 Tag Settings"
+msgstr "Tags"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "ID3-tags"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "ID3-tags in FLAC-bestanden zetten met FLAC-tag"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Indien aangevinkt, zullen er ook in FLAC-bestanden ID3-tags gebruikt worden. "
+"Anders worden deze verwijderd."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Verwijder ID3-tags wanneer alle velden leeg zijn."
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Aangezien ID3v2-tags ook andere gegevens kunnen bevatten dan Titel, Artiest, "
+"Album, Jaar, Track, Genre of Commentaar, geeft deze optie je de mogelijkheid "
+"om de hele tag te verwijderen wanneer die zeven standaardvelden leeg zijn."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Automatisch omzetten van oude ID3v2-tags"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Wanneer ingeschakeld zullen oude ID3v2-tags (bv. ID3v2.2) bijgewerkt worden "
+"naar ID3v2.3."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Gebruik ID3v2-tags"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Codering voor ID3-tags."
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Gebruik ID3v2-tags"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Gebruik ID3v2-tags"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Wanneer aangevinkt, zullen er aan de MP3 bestanden ID3v2 tags worden "
+"toegevoegd. Anders wordien zij verwijderd."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Beschrijving:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Encoded door:"
+
+#: src/prefs.c:765
+#, fuzzy
+msgid "Character set used to write the tag data in the file."
+msgstr "Karakterset voor weergave op het scherm."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " Nee "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3-tag"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Gebruik ID3v1.x-tags"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Wanneer aangevinkt, zullen er aan de MP3 bestanden ID3v1-tags worden "
+"toegevoegd. Anders worden zij verwijderd."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Karakterset voor weergave op het scherm."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Codering voor ID3-tags."
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+
+#: src/prefs.c:903
+#, fuzzy
+msgid "Character set used to read tag data in the file."
+msgstr "Karakterset voor weergave op het scherm."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Verwerkingsvenster"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Verwerkingsvenster - Tekenconversie"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Converteer '_' en '%20' naar spatie ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Converteer spatie ' ' naar underscore '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Wanneer ingeschakeld wordt deze conversie automatisch gebruikt bij het "
+"toepassen van een masker op tags."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Bestanden hernoemen - Tekenconversie"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Wanneer ingeschakeld wordt deze conversie automatisch gebruikt bij het "
+"toepassen van een masker op bestandsnamen."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Cosmetisch - Tekenconversie"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+#, fuzzy
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr "Niet alle eerste letters omzetten naar hoofdletters."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Verwerkingsvenster"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Verwerkingsvenster openen bij starten"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr "Open automatisch het verwerkingsvenster bij het opstarten van EasyTAG."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Verwerkingsvenster altijd bovenop"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Wanneer ingeschakeld staat het verwerkingsvenster altijd bovenop het "
+"hoofdvenster."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Velden"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Overschrijf velden bij het verwerken van de bestanden"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Wanneer ingeschakeld, wordt de tekst die al in de velden staat vervangen "
+"door de nieuwe tekst. Wanneer uitgeschakeld, worden alleen de lege velden "
+"gevuld."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Gebruik deze tekst als standaard voor het commentaarveld :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Wanneer ingeschakeld wordt standaard deze tekst gebruikt als commentaar."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "Gebruik CRC32-waarde als standaardcommentaar (enkel voor ID3-tags)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Berekent de CRC32-waarde van het bestand en bewaart het in het "
+"commentaarveld bij het invullen van tags via het verwerkingsvenster."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr ""
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+#, fuzzy
+msgid "Server Settings for Automatic Search"
+msgstr "Automatisch zoeken"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Naam: "
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Poort: "
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI-pad: "
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "Instellingen server"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "Doorzoek CDDB"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "CGI-pad: "
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Proxy"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Gebruik een proxyserver"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Activeer de instellingen van de proxyserver."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Computernaam: "
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Naam van de proxyserver."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Poort van de proxyserver."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Gebruikersnaam: "
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Naam van de gebruiker van de proxyserver."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Wachtwoord: "
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Wachtwoord van de gebruiker van de proxyserver."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+#, fuzzy
+msgid "Track Name List"
+msgstr "Titel"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Bevestiging"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Bevestiging voor het afsluiten van EasyTAG"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr "Indien ingeschakeld moet u het afsluiten van EasyTAG bevestigen."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Bevestiging voor het opslaan van tags"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Bevestiging voor het hernoemen van bestanden"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Bevestiging voor het wissen van bestanden"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Bevestiging voor het opslaan van playlists"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Veranderingen toepassen (maar niet opslaan!) en sluit dit venster"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Sluit dit venster zonder de veranderingen op te slaan"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Sla veranderingen op en sluit dit venster"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr ""
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Veranderingen toegepast"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Voorkeuren opgeslagen"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Voorkeuren onveranderd"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+"De geselecteerde map voor 'Standaardmap voor bestanden' is onjuist!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Het is geen map"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr ""
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Vul tag"
+
+#: src/scan.c:175
+#, fuzzy
+msgid "Rename File and Directory"
+msgstr "Map hernoemen"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Cosmetisch"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Tag succesvol verwerkt..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Tag succesvol verwerkt...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Probleem: kan het scheidingsteken '%s' in '%s' niet vinden"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "Kan bestandsnaam '%s' niet omzetten naar systeemcodering."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Nieuw bestand succesvol verwerkt..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Nieuw bestand succesvol verwerkt...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Bewerk tags en bestandsnamen"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Bewerking:"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Selecteer de bewerking"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Open verwerkingsvenster / Geselecteerde bestanden verwerken"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Instellingen verwerkingsvenster"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Verbergen / Weergeven maskerbewerking"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Verbergen / Weergeven legenda"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Sluit dit venster"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Selecteer of voer een masker in volgens de codes in de legenda, om zo de tag "
+"te vullen vanuit de bestandsnamen"
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Voorbeeld van ingevulde tag..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr ""
+
+#: src/scan.c:1987
+#, fuzzy
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Selecteer of voer een masker in volgens de codes in de legenda, om zo de "
+"bestandsnaam aan te passen op basis van de tag."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Voorbeeld hernoemen..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Selecteer velden:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"De knoppen aan de rechterkant duiden aan welke velden aangepast kunnen "
+"worden. Selecteer degene die u interesseren."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "B"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Bestandsnaam veld"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Titel veld"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Artiest veld"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Album veld"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Verwerk genre veld"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr ""
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Componist veld"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+#, fuzzy
+msgid "Process original artist field"
+msgstr "Artiest veld"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+#, fuzzy
+msgid "Cr"
+msgstr "C"
+
+#: src/scan.c:2065
+#, fuzzy
+msgid "Process copyright field"
+msgstr "Commentaar veld"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr ""
+
+#: src/scan.c:2068
+#, fuzzy
+msgid "Process URL field"
+msgstr "Titel veld"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr ""
+
+#: src/scan.c:2071
+#, fuzzy
+msgid "Process encoder name field"
+msgstr "Bestandsnaam veld"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Selectie omkeren"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Selecteer alles/niets."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Vervang '_' en '%20' door ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Zet om :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "naar : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Converteer '_' en '%20' naar spaties (bv: 'Een%20stukje_Tekst' wordt 'Een "
+"stukje Tekst')."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"De spatie wordt vervangen door een underscore (bv: 'Een stukje tekst' wordt "
+"'Een_stukje_tekst')."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Vervang een teken door een ander."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Alle letters worden hoofdletters (bv 'Een STUKJE tekst' wordt 'EEN STUKJE "
+"TEKST')."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Alle letters worden hoofdletters (bv 'Een STUKJE tekst' wordt 'EEN STUKJE "
+"TEKST')."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"De eerste letter van een zin wordt een hoofdletter en de rest kleine letters "
+"(bv 'een STUKJE Tekst' wordt 'Een stukje tekst')."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"De eerste letter van ieder woord wordt een hoofdletter en de rest kleine "
+"letters (bv 'een STUKJE Tekst' wordt 'Een Stukje Tekst')."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Voeg een spatie in voor iedere hoofdletter"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Verwijder dubbele spaties en underscores"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Alle spaties verwijderen. (bv 'Een Stukje Tekst' wordt 'EenStukjeTekst')."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Voor iedere hoofdletter wordt een spatie geplaatst. (bv: 'EenStukjeTekst' "
+"wordt 'Een Stukje Tekst')."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Verwijder dubbele spaties of underscores '_'. (bv: 'Een__Stukje Tekst' "
+"wordt 'Een_Stukje Tekst')."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Legenda"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : artiest"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : commentaar"
+
+#: src/scan.c:2267
+#, fuzzy, c-format
+msgid "%p : composer"
+msgstr "%c : commentaar"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr ""
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr ""
+
+#: src/scan.c:2276
+#, fuzzy, c-format
+msgid "%e : encoded by"
+msgstr "Encoder:"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : genre"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : genegeerd"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l: aantal tracks"
+
+#: src/scan.c:2288
+#, fuzzy, c-format
+msgid "%o : orig. artist"
+msgstr "%a : artiest"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : tracknummer"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : titel"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr ""
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : jaar"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Maskerbewerking"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Maak nieuw masker"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Verplaats masker naar boven in lijst"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Verplaats masker naar beneden in lijst"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Kopieer Masker"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Voeg standaardmaskers toe"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Verwijder masker"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Sla maskers op"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Nieuw masker"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Kopiëren: Geen rij geselecteerd!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Verwijderen: Geen rij geselecteerd!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Naar boven: Geen rij geselecteerd!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Naar beneden: Geen rij geselecteerd!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "FOUT: Kan voorkeuren niet opslaan: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Kan voorkeuren niet openen '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Voorkeuren worden geladen..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, fuzzy, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Kan bestand '%s' (%s) niet openen"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "FOUT: Kan lijst niet opslaan: %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Bezig met laden van standaardmaskers..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Bezig met laden van standaardmaskers..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+#, fuzzy
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Bezig met laden van standaardmaskers..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr "FOUT: De omgevingsvariabele HOME is niet gedefinieerd!\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "FOUT: Kan de map '%s' niet aanmaken (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Invoer afgebroken of leeg."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Invoer is geen Ogg-bitstream"
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Fout bij het lezen van de Ogg-bitstream"
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Fout bij het lezen van het eerste pakket."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Ogg-bitstream bevat geen Vorbis-gegevens"
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Vervormde secundaire hoofding."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF voor het einde van de Vorbis-hoofdingen."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Vervormde of ontbrekende gegevens, ga verder..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Fout bij het schrijven naar de uitvoer. De uitvoer is mogelijk vervormd of "
+"afgebroken."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "Beluister nummers"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Ongeldige versie van tag"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Aanvullen"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr "Aanvullen bij gebruik van ID3v2 voor sneller schrijven."
+
+#, fuzzy
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "Gebruik ISO-8859-1 codering voor ID3-tags (aanbevolen)"
+
+#, fuzzy
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "Gebruik ISO-8859-1 codering voor ID3-tags (aanbevolen)"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "De karakterset omzetting van '%s'\n"
+#~ "naar '%s' wordt niet ondersteund!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "FOUT tijdens het openen van bestand: '%s' (%s).\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Map laden bij opstarten"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "Gebruik gele achtergrond voor tooltips"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "Deze optie zorgt ervoor dat tooltips altijd een gele achtergrond hebben, "
+#~ "ongeacht de instellingen van de window manager."
+
+#, fuzzy
+#~ msgid "Can't execute %s (%d)!\n"
+#~ msgstr "Kan '%s' (%s) niet uitvoeren\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "If activated, items in list will be styled black and bold instead of red "
+#~ "and gray (example : for changed and not saved files)."
+#~ msgstr ""
+#~ "Wanneer ingeschakeld zal de playlist bewaard worden in de bovenliggende "
+#~ "map."
+
+#~ msgid "Save _Configuration Now"
+#~ msgstr "_Configuratie opslaan"
+
+#~ msgid "Save Configuration Now"
+#~ msgstr "Configuratie opslaan"
+
+#~ msgid "Set main window size"
+#~ msgstr "Afmetingen hoofdscherm"
+
+#~ msgid "Width :"
+#~ msgstr "Breedte: "
+
+#~ msgid "Height :"
+#~ msgstr "Hoogte: "
+
+#~ msgid " Get current size "
+#~ msgstr "Gebruik huidige afmetingen "
+
+#~ msgid ""
+#~ "Specify the default size for the main window. You must restart the "
+#~ "program to apply the new size. For your display, the max values are: "
+#~ "width=%d and height=%d."
+#~ msgstr ""
+#~ "Geef hier de standaardgrootte voor het hoofdscherm aan. U moet het "
+#~ "programma opnieuw starten om de grootte te gebruiken. Voor u zijn de "
+#~ "maximumwaarden: breedte=%d en hoogte=%d."
+
+#~ msgid "Width: set -1 for automatic size"
+#~ msgstr "Breedte: -1 is automatisch"
+
+#~ msgid "Heigth: set -1 for automatic size"
+#~ msgstr "Hoogte: -1 voor automatisch"
+
+#~ msgid "Set vertical right pane handle position"
+#~ msgstr "Stel positie rechtse sleepbalkje in"
+
+#~ msgid "Position :"
+#~ msgstr "Positie:"
+
+#~ msgid " Get current position "
+#~ msgstr " Gebruik huidige positie"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser frame and the tag frame. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Geef de standaardpositie van de scheiding tussen het bestandbeheer-frame "
+#~ "en het ID3-tag-frame. De veranderingen worden pas zichtbaar na het "
+#~ "herstarten van EasyTAG."
+
+#~ msgid "Position: set -1 for automatic positioning"
+#~ msgstr "Positie: -1 is automatisch"
+
+#~ msgid "Set vertical left pane handle position"
+#~ msgstr "Stel positie linkse sleepbalkje in"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser tree and the list of files. Changes will be applied the next "
+#~ "start."
+#~ msgstr ""
+#~ "Geef de standaardpositie van de scheiding tussen bestandbeheerframe en "
+#~ "het ID3-tag-frame. De veranderingen worden pas zichtbaar na het "
+#~ "herstarten van EasyTAG."
+
+#~ msgid "Set horizontal pane handle position"
+#~ msgstr "Stel positie horizontale sleepbalk in"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "artist list and album list. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Geef de standaardpositie van de scheiding tussen de lijst van artiesten "
+#~ "en de lijst van albums. De veranderingen worden pas zichtbaar na het "
+#~ "herstarten van EasyTAG."
+
+#~ msgid "Set scanner window position"
+#~ msgstr "Stel verwerkingsvenster positie in"
+
+#~ msgid ""
+#~ "If activated, the scanner window will appear at the specified coordinates "
+#~ "relative to the main window. Use it if you want to keep the same position "
+#~ "of the scanner window each times you open it. If deactivated, the window "
+#~ "manager determines the position."
+#~ msgstr ""
+#~ "Wanneer ingeschakeld, heeft het verwerkingsvenster telkens dezelfde "
+#~ "positie ten opzichte van het hoofdvenster. Wanneer uitgeschakeld bepaalt "
+#~ "de windowmanager de positie."
+
+#~ msgid "X :"
+#~ msgstr "X:"
+
+#~ msgid "Y :"
+#~ msgstr "Y:"
+
+#, fuzzy
+#~ msgid "CD Data Base Window"
+#~ msgstr "CDDB-venster"
+
+#, fuzzy
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "Afmetingen CDDB-venster"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "Geef de standaardafmetingen van het CDDB-venster op."
+
+#~ msgid "Set pane handle position"
+#~ msgstr "Stel positie van de paneelscheiding in"
+
+#~ msgid "Specify the default position for the pane handle in the CDDB window."
+#~ msgstr ""
+#~ "Specificeer de standaardpositie voor de paneelscheiding in het CDDB-"
+#~ "venster."
+
+#~ msgid " Window height (%d) is bigger than screen height (%d)! "
+#~ msgstr "Ingestelde venstergrootte (%d) is meer dan schermgrootte (%d)!"
+
+#~ msgid "Size Error..."
+#~ msgstr "Afmetingsfout..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr "Vensterbreedte (%d) is meer dan schermbreedte (%d)!"
+
+#~ msgid "The scanner window must be open to get its current position!"
+#~ msgstr ""
+#~ "U moet het verwerkingsvenster openen voor zijn positie gebruikt kan "
+#~ "worden!"
+
+#~ msgid "The CDDB window must be open to get its current position!"
+#~ msgstr ""
+#~ "U moet het CDDB-venster openen voor zijn positie gebruikt kan worden!"
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "Configuratie opslaan bij het afsluiten van het programma"
+
+#~ msgid ""
+#~ "If activated, the configuration will be automatically saved before "
+#~ "exiting the program."
+#~ msgstr ""
+#~ "Als dit ingeschakeld is, wordt de configuratie automatisch opgeslagen "
+#~ "wanneer u EasyTAG verlaat."
+
+#, fuzzy
+#~ msgid ""
+#~ "...and apply these rules if conversion to character set for writing ID3 "
+#~ "tags fails:"
+#~ msgstr "Gebruik ISO-8859-1 codering voor ID3-tags (aanbevolen)"
+
+#~ msgid "Unicode (UTF-32BE)"
+#~ msgstr "Unicode (UTF-32BE)"
+
+#~ msgid "Unicode (UTF-32LE)"
+#~ msgstr "Unicode (UTF-32LE)"
+
+#, fuzzy
+#~ msgid ""
+#~ "If activated, the ID3 tag will be written with the ISO-8859-1 character "
+#~ "set. Note that non-ISO-8859-1 characters will be lost. Note also that "
+#~ "ID3v2.3 tags support only ISO-8859-1 and UTF-16. If disabled, it will "
+#~ "check automatically the right encoding to use."
+#~ msgstr ""
+#~ "Wanneer ingeschakeld zal de ID3-tag bewaard worden met ISO-8859-1-"
+#~ "codering. Merk op dat ID3v3.2-tags enkel ISO-8859-1 en UTF16 "
+#~ "ondersteunen."
+
+#, fuzzy
+#~ msgid "Use this character set translation for ID3 tags (for expert user) :"
+#~ msgstr "Deze tekenomzetting gebruiken voor ID3-tags:"
+
+#, fuzzy
+#~ msgid ""
+#~ "If activated, this character set translation will be used for reading and "
+#~ "writing ID3 tag (for MP3 and MP2 files only)."
+#~ msgstr ""
+#~ "Wanneer ingeschakeld, worden tekens omgezet bij bestanden die ID3-tags "
+#~ "gebruiken (mp3 en mp2)."
+
+#~ msgid "Convert character set from :"
+#~ msgstr "Tekenset omzetten van:"
+
+#~ msgid "to :"
+#~ msgstr "naar :"
+
+#~ msgid "Currently using G_FILENAME_ENCODING=%s ...\n"
+#~ msgstr "Gebruikte G_FILENAME_ENCODING=%s ...\n"
+
+#, fuzzy
+#~ msgid "Currently using G_BROKEN_FILENAMES=%s ...\n"
+#~ msgstr "Gebruikte G_BROKEN_FILENAME=%s ...\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR while opening file: '%s'(%s).\n"
+#~ ""
+#~ msgstr ""
+#~ "FOUT tijdens het openen van bestand: '%s' (%s).\n"
+#~ ""
+
+#, fuzzy
+#~ msgid "AAC/MPEG-4 File"
+#~ msgstr "MP3-bestand"
+
+#, fuzzy
+#~ msgid "Use title case while making first letter uppercase of each word."
+#~ msgstr "Iedere eerste letter hoofdletter"
+
+#~ msgid "_Rename File(s) ..."
+#~ msgstr "Bestanden _hernoemen..."
+
+#~ msgid "Rename File(s) ..."
+#~ msgstr "Bestanden hernoemen..."
+
+#~ msgid "Rename File"
+#~ msgstr "Hernoem bestand"
+
+#~ msgid "Scan Tag"
+#~ msgstr "Bewerk tag"
+
+#~ msgid "Scan File Name"
+#~ msgstr "Bewerk bestandsnaam"
+
+#~ msgid "Character set used for files on hard disk."
+#~ msgstr "Tekenset voor bestanden op harde schijf."
+
+#, fuzzy
+#~ msgid "(Test translation)"
+#~ msgstr "(Zweedse vertaling)"
+
+#~ msgid "(Not available!)"
+#~ msgstr "(Niet beschikbaar)"
diff --git a/po/pl.gmo b/po/pl.gmo
new file mode 100644
index 0000000..2908f2a
--- /dev/null
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..ad56bd1
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,5057 @@
+# Polish translation for EasyTAG.
+# Copyright (C) 2000-2004 Free Software Foundation, Inc.
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# Aktualn± wersjê tego pliku mo¿esz odnale¼æ w repozytorium cvs.gnome.pl
+# (:pserver:anonymous@cvs.gnome.pl:/gnomepl, puste has³o)
+# Je¶li masz jakiekolwiek uwagi odnosz±ce siê do t³umaczenia lub chcesz
+# pomóc w jego rozwijaniu i pielêgnowaniu, napisz do nas na adres:
+# translators@gnome.pl
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# Maciej 'Kasprzol' Kasprzyk <kapsrzol@o2.pl>, 2002.
+# Artur Polaczyñski <artii@o2.pl>, 2003, 2004.
+# GNOME PL Team <translators@gnome.pl>, 2003, 2004.
+# Tomasz Sa³aciñski <tsalacinski@gmail.com>, 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 2.0.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2007-04-30 23:21+0200\n"
+"Last-Translator: GNOME PL Team <translators@gnome.pl>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG jest narzêdziem do przegl±dania, edytowania i zapisywania tagów "
+"w plikach MP3, MP2, FLAC, Ogg Vorbis, MusePack i Monkey's Audio. Jego prosty "
+"i ³adny interfejs sprawia, ¿e tagowanie plików staje siê ³atwiejsze pod GNU/"
+"Linuksem."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Niemieckie t³umaczenie)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Rosyjskie t³umaczenie)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Holenderskie t³umaczenie)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Szwedzkie t³umaczenie)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Wêgierskie t³umaczenie)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(W³oskie t³umaczenie)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Japoñskie t³umaczenie)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Ukraiñskie t³umaczenie)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Czeskie t³umaczenie)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Hiszpañskie t³umaczenie)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Polskie t³umaczenie)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Rumuñskie t³umaczenie)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Duñskie t³umaczenie)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Greckie t³umaczenie)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Brazyliskie Portugalskie t³umaczenie)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(Bu³garskie t³umaczenie)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(Chiñskie t³umaczenie)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Greckie t³umaczenie)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Informacje o..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Informacje o"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(kompilacja: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(u¿ywaj±c: GTK+ %d.%d.%d i id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(Wsparcie dla plików MP3 wy³±czone)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(Wsparcie dla plików MP3 wy³±czone)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(Wsparcie dla plików MP3 wy³±czone)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(Wsparcie dla plików MP3 wy³±czone)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Wsparcie dla plików Ogg Vorbis wy³±czone)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(Wsparcie dla plików MP3 wy³±czone)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(Wsparcie dla plików FLAC wy³±czone)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(Wsparcie dla plików MP4/AAC wy³±czone)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(Wsparcie dla plików MP3 wy³±czone)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Autor: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Strona WWW: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Opis:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Podziêkowania"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "T³umaczenia:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Ogólne:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Zmiany"
+
+#: src/about.c:454
+#, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Nie mo¿na otworzyæ pliku \"%s\" (%s)\n"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "B£¡D podczas otwierania pliku: \"%s\" (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Plik"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Sortuj listê po tagach"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Sortuj listê po w³a¶ciwo¶ci"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Sortuj listê wed³ug nazw plików"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Malej±co wed³ug nazw plików"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Rosn±co wed³ug daty utworzenia"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Malej±co wed³ug daty utworzenia"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Rosn±co wed³ug numeru ¶cie¿ki"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Malej±co wed³ug numeru ¶cie¿ki"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Rosn±co wed³ug tytu³u"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Malej±co wed³ug tytu³u"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Rosn±co wed³ug artysty"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Malej±co wed³ug artysty"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Rosn±co wed³ug albumu"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Malej±co wed³ug albumu"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Rosn±co wed³ug roku"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Malej±co wed³ug roku"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Rosn±co wed³ug gatunku"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Malej±co wed³ug gatunku"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Rosn±co wed³ug komentarza"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Malej±co wed³ug komentarza"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Rosn±co wed³ug kompozytora"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Malej±co wed³ug kompozytora"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Rosn±co wed³ug artysty"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Malej±co wed³ug artysty"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Rosn±co wed³ug praw autorskich"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Malej±co wed³ug praw autorskich"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Rosn±co wed³ug URL'a"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Malej±co wed³ug URL'a"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Rosn±co wed³ug imienia koduj±cego"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Malej±co wed³ug imienia koduj±cego"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Rosn±co wed³ug typu pliku"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Malej±co wed³ug typu pliku"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Rosn±co wed³ug rozmiaru pliku"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Malej±co wed³ug rozmiaru pliku"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Rosn±co wed³ug czasu trwania"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Malej±co wed³ug czasu trwania"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Rosn±co wed³ug próbkowania"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Malej±co wed³ug próbkowania"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Rosn±co wed³ug czêstotliwo¶ci"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Malej±co wed³ug czêstotliwo¶ci"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Otwórz plik(i) za pomoc± ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Zaznacz wszystkie pliki"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Odznacz wszystkie pliki"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Odwróæ zaznaczenie"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Usuñ plik(i)"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "P_ierwszy plik"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "P_ierwszy plik"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "Pop_rzedni plik"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Pop_rzedni plik"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "_Nastêpny plik"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "_Nastêpny plik"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "_Ostatni plik"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "_Ostatni plik"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "Skanuj plik(i)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Skanuj plik(i)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "Usuñ Tag(i)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Usuñ Tag(i)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "Cofnij ostatnie zmiany w pliku"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Cofnij ostatnie zmiany w pliku"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "Prz_ywróæ ostatnie zmiany w pliku"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Prz_ywróæ ostatnie zmiany w pliku"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "Zapi_sz plik(i)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Zapi_sz plik"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "Wymu¶ zapisanie pliku(ów)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Wymu¶ zapisanie pliku(ów)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Cofnij ostatnie zmiany"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Przywróæ ostatnie zmiany"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Zakoñcz"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Zakoñcz"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Przegl±darka"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Id¼ do katalogu domowego"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Id¼ do katalogu domowego"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Id¼ do katalogu domy¶lnego"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Id¼ do katalogu domy¶lnego"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Ustaw bie¿±c± ¶cie¿kê jako domy¶ln±"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Ustaw bie¿±c± ¶cie¿kê jako domy¶ln±"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Widok drzewa | Widok artysta-album"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Zmieñ nazwê katalogu..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Ponownie wczytaj katalog"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Przegl±daj katalog za pomoc±..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "Zwiñ drzewo"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "Od¶wie¿ drzewo"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "_Skaner"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "Wype³nij tagi..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Wype³nij tagi..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "Zmieñ nazwê pliku/katalogu"
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Zmieñ nazwê pliku/katalogu"
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "Przetwarzaj pola ..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Przetwarzaj pola ..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Ró¿ne"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Szukaj pliku..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Szukaj pliku..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "Wyszukiwanie w CDDB"
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "Wyszukiwanie w CDDB"
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Wczytaj nazwy z pliku TXT..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Zapis listy odtwarzania..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Uruchom odtwarzacz audio"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Ustawienia"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Preferencje..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "_Preferencje..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "Pomo_c"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "Informacje o"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Zatrzymaj obecn± akcjê"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "Opcje na plikach"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Szukaj pliku w CDDB..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Przegl±daj podkatalogi"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Poka¿ ukryte katalogi"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Wy¶wietl widok drzewa / Wy¶wietl widok artysty i albumu"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Nie mo¿na scaliæ UI, b³±d: %s\n"
+
+# odt±d
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Gotowy do pracy..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Wybrano now± domy¶ln± ¶cie¿kê do plików"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Potwierd¼..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Czê¶æ plików zosta³a zmodyfikowana ale zmiany nie zosta³y zapisane.\n"
+"Czy zapisaæ te zmiany przed zmian± katalogu?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Wprowadzona ¶cie¿ka jest nieprawid³owa!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "B³±d..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<Wszystkie albumy>"
+
+#: src/browser.c:2410
+#, fuzzy, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "B³±d: Szukano %s, nie mo¿na znale¼æ ga³êzi %s na drzewie.\n"
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Artysta"
+
+#: src/browser.c:2777
+#, fuzzy
+msgid "# Albums"
+msgstr "# Alben"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Pliki"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Id¼ do katalogu nadrzêdnego"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Podaj katalog do przegl±dania."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Drzewo"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Artysta i Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Zmiana nazwy katalogu"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Zmiana nazwy katalogu \"%s\" na: "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Maska: "
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "Je¿eli w³±czone, u¿yje maski do zmiany nazwy katalogu."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Wybierz lub wprowad¼ maskê u¿ywaj±c kodów (zobacz Legendê) aby przetworzyæ "
+"nazwê pliku i ¶cie¿kê. U¿ywane do wype³niania pól tagów."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Nieprawid³owa maska skanera"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Podgl±d zmiany nazwy katalogu..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Musisz wprowadziæ nazwê katalogu!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Nie mo¿na przekonwertowaæ \"%s\" na dan± nazwê pliku. Proszê u¿yæ innej "
+"nazwy."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Zmiana nazwy katalogu nie jest mo¿liwa. Katalog ju¿ istnieje!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nie mo¿na zmieniæ nazwy katalogu \n"
+"\"%s\"\n"
+" na \n"
+"\"%s\"!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Nazwa katalogu zmieniona"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Program do uruchomienia: "
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Podaj nazwê programu do uruchomienia. Otrzyma on aktualny katalog jako "
+"parametr."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Otwórz plik za pomoc± ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Podaj nazwê programu do uruchomienia. Otrzyma on wybrany plik jako parametr."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Musisz podaæ nazwê programu!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Aplikacja \"%s\" nie zosta³a znaleziona!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Nie mo¿na uruchomiæ %s (b³±d %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Nie mo¿na utworzyæ procesu potomnego!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Wykonano polecenie: \"%s %s\""
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Artysta / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Kategoria"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Nazwa ¶cie¿ki"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Czas"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "Wyszukiwanie w CDDB"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Automatyczne wyszukiwanie"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "¯±dana baza danych CD :"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"¯±daj automatycznie danych z CDDB u¿ywaj±c zaznaczonegych plików (kolejno¶æ "
+"jest wa¿na!) aby wygenerowaæ CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Zatrzymaj wyszukiwanie... "
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Po aktywowaniu tej opcji, po za³adowaniu pól, bie¿±cy skaner zostanie "
+"uruchomiony (okno skanera musi byæ otwarte)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Manualne wyszukiwanie"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "S³owa: "
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Pole do wprowadzania szukanej frazy (s³owa odzielone spacj± lub \"+\")"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Wysukiwanie w: "
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Wszystkie pola"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Inne"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Wszystkie kategorie"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Klasyczna"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Ró¿ne"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "¦cie¿ka filmowa"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "kategoria zawiera: funk, soul, rap, pop, industrial, metal, etc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "filmy, przedstawienia"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "Wszystkie pozosta³e nie wyszczególnione w powy¿szych kategoriach"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " Kategorie "
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Wyniki: "
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Szukaj: "
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Wyszukiwanie w li¶cie poni¿ej"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Szukaj nastêpny"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Szukaj poprzedni"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "Pokazuje czerwone / wszystkie linie"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Odznacza wszystkie linie"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Odwraca zaznaczenie linii"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Zaznacz wszystkie linie"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Zaznacz linie aby \"zatwierdziæ\" je do plików na li¶cie. Wszystkie linie "
+"bêd± przetworzone je¶li ¿adna nie jest zaznaczona.\n"
+"Mo¿esz zmieniæ kolejno¶æ linii na tej li¶cie zanim u¿yjesz przycisku "
+"\"Zastosuj\"."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Ustaw w: "
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Wszystkie"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Nazwa pliku"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Tytu³"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Rok"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "# ¦cie¿ki"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# ¦cie¿ek"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Gatunek"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Uruchom skaner dla ka¿dego pliku"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr "Dopasuj linie wed³ug algorytmu Levenshteina"
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Po aktywowaniu tej opcji, algorytm Levenshteina (DLM : Damerau-Levenshtein "
+"Metric) bêdzie u¿yty do dopasowania tytu³u w CDDB do ka¿dego pliku w "
+"bie¿±cym folderze i do wybrania najlepszego dopasowania. To bêdzie u¿yte "
+"przy zaznaczaniu odpowiedniego pliku audio lub zatwierdzaniu wyników cddb, "
+"zamiast u¿ywania kolejno¶ci pozycji."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Wczytuj wybrane linie lub wszystkie linie (je¶li ¿adnych nie wybrano)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Gotowy do wyszukiwania..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album \"%s\", artysta: \"%s\", d³ugo¶æ: \"%s\", rok: \"%s\", gatunek: \"%s"
+"\", ID: \"%s\""
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Odwróæ zaznaczenie"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Sortuj wed³ug numeru ¶cie¿ki"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Sortuj wed³ug nazwa ¶cie¿ki"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Wyszukiwanie serwera \"%s\" ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Nie mo¿na znale¼æ serwera \"%s\" (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Nie mo¿na utworzyæ nowego gniazda (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "£±czenie z serwerem \"%s\", port \"%d\" ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Nie mo¿na po³±czyæ siê z serwerem \"%s\" (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Po³±czony z serwerem \"%s\""
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Odbieranie danych (%s) ..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "B³±d podczas odczytywania odpowiedzi CDDB: %s!\n"
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Nie mo¿na otworzyæ pliku \"%s\" (%s)\n"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Nie mo¿na otworzyæ pliku \"%s\" (%s)\n"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Wysy³anie zapytania ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, fuzzy, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Nie mo¿na wys³aæ zapytania (%s)!\n"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Odbieranie danych ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "Serwer zwróci³ z³± odpowied¼!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Serwer zwróci³ z³± odpowied¼! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Przykro mi, przeszukiwanie www nie dzia³a w tym momencie!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Znaleziono %d pasuj±cy(ch) album(ów)"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Odbieranie danych ze strony %d ..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Odbieranie danych ze strony %d ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "Wiêcej wyników do za³adowania ..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Nie wybrano pliku!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%u plik(ów) zaznaczonych!"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Gotowy do wyszukiwania..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Wysy³anie zapytania (CddbId: %s, # ¶cie¿ki: %d, d³ugo¶æ dysku: %d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Znaleziono %d pasuj±cy(ch) album(ów)"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Nie mo¿na otworzyæ pliku \"%s\" (%s)\n"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Wczytywanie listy ¶cie¿ek albumu ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Album z CDDB zawiera %d ¶cie¿ek w przeciwieñstwie do %d plików w li¶cie!\n"
+"\n"
+"Czy chcesz kontynuowaæ ?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Zapisz tagi z CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arabskie (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabskie (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arabskie (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Ba³tyckie (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Ba³tyckie (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Ba³tyckie (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtyckie (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "¦rodkowoeuropejskie (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "¦rodkowoeuropejskie (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "¦rodkowoeuropejskie (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chiñskie uproszczone (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chiñskie uproszczone (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Chiñskie tradycyjne (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chiñskie tradycyjne (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Cyrylica (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cyrylica (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cyrylica (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cyrylica (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cyrylica (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Cyrylica/Rosyjskie (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Cyrylica/Ukraiñskie (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Angielskie (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Greckie (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Greckie (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrajskie (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrajskie (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japoñskie (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japoñskie (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japoñskie (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Koreañskie (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordyckie (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Po³udniowoeuropejskie (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Tajskie (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Tureckie (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Tureckie (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Tureckie (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Wietnamskie (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Wietnamskie (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebrajskie (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Zachodnie (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Zachodnie (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Zachodnie (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Zachodnie (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Plik \"%s\" nie mo¿e byæ przekonwertowany na UTF-8 (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "Niew³a¶ciwe UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr "Wiersz UTF-8 \"%s\" nie mo¿e byæ przekonwertowany na plik (%s)\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Wiersz \"%s\" nie mo¿e byæ przekonwertowany na UTF-8 (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Uruchamianie EasyTAG %s (PId: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "U¿ywanie id3lib w wersji %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "U¿ywanie id3lib w wersji %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Zmiana nazwy pliku \"%s\""
+
+#: src/easytag.c:195
+#, fuzzy, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "Aktualnie u¿ywam lokali \"%s\" (i ewentualnie \"%s\")...\n"
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s - autor %s (kompilacja %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Strona WWW: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Przegl±darka"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Plik"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Plik tylko do odczytu"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Uszkodzony odno¶nik do pliku"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Warstwa ?"
+
+# "Gêsto¶æ bitowa:" ?
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Próbkowanie:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Czêstotliwo¶æ:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Tryb:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Rozmiar:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Czas:"
+
+# "Znacznik" ?
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Tag"
+
+# To musi byæ krotkie
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Ogólne"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Tytu³:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr ""
+"Tytu³ z tego pola zostanie wstawiony do pozosta³ych zaznaczonych plików"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Artysta:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr ""
+"Artysta z tego pola zostanie wstawiony do pozosta³ych zaznaczonych plików"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr ""
+"Nazwa albumu z tego pola zostanie wstawiona do pozosta³ych zaznaczonych "
+"plików"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+#, fuzzy
+msgid "Tag selected files with this disc number"
+msgstr ""
+"Numer dysku z tego pola zostanie wstawiony do pozosta³ych zaznaczonych plików"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Rok:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Rok z tego pola zostanie wstawiony do pozosta³ych zaznaczonych plików"
+
+# numeruj po koleji wszystkie pliki. Zaczynaj od 01 w ka¿dym podkatalogu.
+# ^ koleji?:P
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Nadaje wszystkim plikom kolejne numery ¶cie¿ek. Zaczyna od 01 w ka¿dym "
+"podkatalogu."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "¦cie¿ka #:"
+
+# TODO cos tu nie gra
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Ustaw liczbê plików w tym samym katalogu co wy¶wietlany plik jako liczbê "
+"¶cie¿ek."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr ""
+"Numer ¶cie¿ki z tego pola zostanie wstawiony do pozosta³ych zaznaczonych "
+"plików"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Gatunek:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr ""
+"Gatunek z tego pola zostanie wstawiony do pozosta³ych zaznaczonych plików"
+
+# "Komentarz:\n"
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Komentarz:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr ""
+"Komentarz z tego pola zostanie wstawiony do pozosta³ych zaznaczonych plików"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Kompozytor:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr ""
+"Kompozytor z tego pola zostanie wstawiony do pozosta³ych zaznaczonych plików"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Artysta:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr ""
+"Artysta z tego pola zostanie wstawiony do pozosta³ych zaznaczonych plików"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Prawa autorskie:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr ""
+"Prawa autorkie z tego pola zostan± wstawione do pozosta³ych zaznaczonych "
+"plików"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "URL z tego pola zostan± wstawione do pozosta³ych zaznaczonych plików"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Skompresowany przez:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr ""
+"Imiê osoby, przez któr± plik zosta³ utworzony z tego pola zostanie wstawione "
+"do pozosta³ych zaznaczonych plików"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Obrazy"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Obrazy:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Mo¿esz przeci±gn±æ i upu¶ciæ obrazy tutaj."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Wstaw dane obrazy do pozosta³ych zaznaczonych plików"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr ""
+"Usuñ zaznaczone obrazy, w przypadku braku zaznaczenia usuñ wszystkie obrazy."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Dodaj obrazy do pliku (przeci±gnij i upu¶æ dozwolone)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Zapisz zaznaczone obrazy na twardym dysku."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Zmieñ w³a¶ciwo¶ci zaznaczonych obrazów."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Zaznaczonym plikom ustawiono tytu³ \"%s\"."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Usuniêto tytu³y zaznaczonym plikom."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Zaznaczonym plikom ustawiono artysta na \"%s\"."
+
+# TODO
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Usuniêto artystê z zaznaczonych plików."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Zaznaczonym plikom ustawiono album na \"%s\"."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Usunieto album z zaznaczonych plików."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Zaznaczonym plikom ustawiono numer dysku na \"%s\"."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Usuniêto numer dysku z zaznaczonych plików."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Zaznaczonym plikom ustawiono rok na \"%s\"."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Usuniêto rok z zaznaczonych plików."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Zaznaczonym plikom ustawiono numer ¶cie¿ki na \"xx/%s\"."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Zaznaczonym plikom ustawiono numer ¶cie¿ki na \"xx\"."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Usuniêto numer ¶cie¿ki z zaznaczonych plików."
+
+# TODO
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Zaznaczone pliki ponumerowano wed³ug kolejno¶ci."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Zaznaczonym plikom ustawiono gatunek na \"%s\"."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Usuniêto gatunek z zaznaczonych plików."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Zaznaczonym plikom ustawiono komentarz na \"%s\"."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Usuniêto komentarz z zaznaczonych plików."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Zaznaczonym plikom ustawiono kompozytora na \"%s\"."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Usuniêto kompozytora z zaznaczonych plików."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Zaznaczonym plikom ustawiono artystê na \"%s\"."
+
+# TODO
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Usuniêto artystê z zaznaczonych plików."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Zaznaczonym plikom ustawiono prawa autorskie na \"%s\"."
+
+# TODO
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Usuniêto prawa autorskie z zaznaczonych plików."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Zaznaczonym plikom ustawiono URL na \"%s\"."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Usuniêto URL z zaznaczonych plików."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Zaznaczonym plikom ustawiono imiê koduj±cego na \"%s\"."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Usuniêto imiê koduj±cego z zaznaczonych plików."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Ustawiono obrazy w zaznaczonych plikach."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Usuniêto obrazy zaznaczonym plikom."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Wybierz tryb i maskê, po czym ponownie wybierz tê komendê"
+
+# TODO
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Wszystkie tagi zosta³y zeskanowane."
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Wszystkie tagi zosta³y usuniête"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Wszystkie pliki zosta³y zapisane..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Pliki zosta³y czê¶ciowo zapisane..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Pliki zosta³y czê¶ciowo skasowane..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Wszystkie pliki zosta³y skasowane..."
+
+# TODO
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Czy chcesz zapisaæ taga pliku\n"
+"\"%s\" ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Zapisywanie taga..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Zmieñ nazwê pliku i katalogu..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Czy chcesz zmieniæ nazwê pliku i katalogu z\n"
+"\"%s\"\n"
+"na \n"
+"\"%s\" ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Zmieñ nazwê katalogu..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Czy chcesz zmieniæ nazwê katalogu \n"
+"\"%s\"\n"
+"na \n"
+"\"%s\" ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Zmiana nazwy pliku..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Czy chcesz zmieniæ nazwê pliku \n"
+"\"%s\"\n"
+"na \n"
+"\"%s\" ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Zapisano tag \"%s\""
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Tag(i) zapisane"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Nie mogê zapisaæ taga w pliku \"%s\"!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Zmiana nazwy pliku \"%s\""
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nie mogê zmieniæ nazwy pliku \"%s\"\n"
+"na \n"
+"\"%s\"!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Plik(i) którym nie zmieniono nazwy..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Nie mo¿na zmieniæ nazwy pliku \n"
+"\"%s\"\n"
+"Plik o podanej nazwie ju¿ istnieje:\n"
+"\"%s\""
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nie utworzyæ katalogu docelowego: \n"
+"\"%s\"\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, fuzzy, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Zmieniono nazwê pliku \"%s\" na \"%s\"\n"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Plik(i) którym zmieniono nazwê..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nie mo¿na usun±c starego katalogu\n"
+"\"%s\"\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, fuzzy, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Przeniesiono plik \"%s\" do \"%s\"\n"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Przeniesiono plik(i)..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nie mogê przenie¶æ pliku \"%s\"\n"
+"do \n"
+"\"%s\"!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Plik(i) nie zosta³y przeniesione..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Czy na pewno chcesz usun±æ plik\n"
+"\"%s\" ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Usuniêcie pliku..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Usuniêto plik \"%s\""
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Nie mo¿na odczytaæ katalogu: \n"
+"\"%s\"\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Trwa wyszukiwanie..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Plik: \"%s\""
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Znaleziono %d plik(ów) w tym katalogu i jego podkatalogach."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Znaleziono %d plik(ów) w tym katalogu."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u plik(ów)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Nie znaleziono ¿adnego pliku w tym katalogu i jego podkatalogach!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Nie znaleziono ¿adnego pliku w tym katalogu!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Wyszukiwanie..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " ZATRZYMAJ wyszukiwanie... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Wybierz katalog do przegl±dania!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr ""
+"Warto¶æ z tego pola zostanie wstawiona do pozosta³ych zaznaczonych plików"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Zamiana \"_\" i \"%20\" na spacje"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Zamiana \" \" na \"_\""
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Wszystko du¿± liter±"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Wszystko ma³± liter±"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Du¿a pierwsza litera"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Du¿a pierwsza litera ka¿dego s³owa"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Usuñ spacje"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Wstawia spacje przed du¿± liter±"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Usuwa powtarzaj±ce siê spacje lub podkre¶lenia"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, fuzzy, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: nienormalne wyj¶cie! (PId: %d).\n"
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "Otrzymano sygna³ %s (%d)n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+#, fuzzy
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Prawdopodobnie znalaz³e¶ b³±d w programie EasyTAG. Proszê, wy¶lij raport o "
+"b³êdzie z stosem wywo³añ funkcji z gdb (\"gdb easytag core\" potem \"bt\") "
+"do easytag@gmail.com (w jêzyku angielskim)\n"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Nieznany sygna³"
+
+# fixme
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"U¿ycie: easytag [opcje] \n"
+" lub: easytag [katalog] \n"
+"\n"
+"Opcje:\n"
+"------\n"
+"-h, --help Wypisuje ten tekst i koñczy program.\n"
+"-v, --version Wypisuje podstawowe informacje i koñczy program.\n"
+"\n"
+"Katalog:\n"
+"--------\n"
+"/¶cie¿ka/do/plików Wczytanie absolutnej ¶cie¿ki,\n"
+"., ./ wczytanie obecnego katalogu.\n"
+"\n"
+
+#: src/easytag.c:4481
+#, fuzzy
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Normalne wyj¶cie.\n"
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Niektóre pliki zosta³y zmodyfikowane, lecz nie s± zapisane.\n"
+"Czy chcesz je zapisaæ przed zakoñczeniem programu?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Czy na pewno chcesz wyj¶æ z programu? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3 Tag"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis Tag"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis Tag"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE Tag"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "MP4/M4A/AAC Tag"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "Plik MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "Plik MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Plik Ogg Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "_Nastêpny plik"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "Plik FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "Plik MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Plik Monkey's Audio"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "Plik MP4/AAC"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "Plik MusePack"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Obrazy"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Nie mog³em przekonwertowaæ nazwy pliku %s\n"
+"Na systemowe kodowanie nazw plików\n"
+"(Spróbuj zmieniæ warto¶æ zmiennej systemowej G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "T³umaczenie nazw plików"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "Nazwa pliku \"%s\" przekracza liczbê znaków %d i bêdzie obciêta!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Koder:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+#, fuzzy
+msgid "Channels:"
+msgstr "Zmiany"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "B£¡D podczas otwierania pliku: \"%s\" (%s)."
+
+# TODO
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, fuzzy, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "B£¡D: Nie uda³o siê zapisaæ komentarzy do pliku \"%s\" (%s).\n"
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, fuzzy, c-format
+msgid "Written tag of '%s'"
+msgstr "Zapisano tag pliku \"%s\"\n"
+
+#: src/id3_tag.c:484
+#, fuzzy, c-format
+msgid "Removed tag of '%s'"
+msgstr "Usuniêto tag pliku \"%s\"\n"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, fuzzy, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "B³±d podczas usuwania tagu ID3v1 pliku: \"%s\" (%s)\n"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, fuzzy, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "B³±d podczas usuwania tagu ID3v2 pliku: \"%s\" (%s)\n"
+
+#: src/id3_tag.c:509
+#, fuzzy, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "B³±d podczas uaktualniania tagu ID3v2 pliku: \"%s\" (%s)\n"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"Próbowa³e¶ zapisaæ ten tag jako Unicode, jednak wykryto, ¿e twoja wersja "
+"id3lib posiada b³êdy.\n"
+"Je¶li prze³adujesz ten plik, niektóre znaki w tagu mog± nie zostaæ "
+"wy¶wietlone poprawnie...\n"
+"Proszê spatchowaæ id3lib znajduj±cy siê w katalogu\n"
+"src/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"w paczce ze ¼ród³ami EasyTAG.\n"
+"Proszê pamiêtaæ, ¿e ten komunikat pojawi siê tylko raz.\n"
+"\n"
+"Plik: %s"
+
+#: src/id3_tag.c:577
+#, fuzzy, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "B³±d podczas uaktualniania tagu ID3v1 pliku: \"%s\" (%s)\n"
+
+#: src/id3_tag.c:591
+#, fuzzy, c-format
+msgid "Updated tag of '%s'"
+msgstr "Uaktualniono tag pliku \"%s\"\n"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Nie odnotowano b³êdów"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Brak dostêpnej pamiêci"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Brak danych do przetwarzania"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Niepoprawnie sformatowane dane"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Brak bufora do zapisu"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Bufor jest za ma³y"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Nieprawid³owy identyfikator ramki"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "¯±dane pole nie zosta³o znalezione"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Nieznany typ pola"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Plik ju¿ posiada do³±czony tag"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Nieprawid³owa wersja taga"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Brak plików do przetwarzania"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Próba zapisania do pliku tylko do odczytu"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "B³±d podczas kompresji/dekompresji"
+
+# mój ulubiony ;-)
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Nieznany komunikat o b³êdzie!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Uszkodzony plik..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Tak "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Nie "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Zastosuj "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Zapisz "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Anuluj "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Zamknij "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Zapisz "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Wykonaj "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " Szukaj "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "Przegl±daj..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Wybierz katalog..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Wybierz plik..."
+
+#: src/misc.c:886
+msgid "Warning..."
+msgstr "Ostrze¿enie..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr "Brak zdefiniowanego odtwarzacza audio!"
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Nie mo¿na uruchomiæ %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Utworzenie listy odtwarzania"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "Nazwa listy odtwarzania M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Nazwa katalogu"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Edytuj maski"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Opcje listy odtwarzania"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Do³±cz tylko zaznaczone pliki"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Je¶li aktywowane, tylko zaznaczone pliki bêd± zapisywanie do playlisty. W "
+"przeciwnym przypadku, wszystkie pliki bêd± zapisane. "
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "U¿ycie bezwzglêdnych ¶cie¿ek do plików"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "U¿ycie wzglêdnych ¶cie¿ek do plików"
+
+# fixme
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Utworzenie listy odtwarzania w katalogu nadrzêdnym"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr "Utworzenie listy odtwarzania w katalogu nadrzêdnym (o jeden wy¿ej)."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "U¿ycie separatora katalogu DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"opcja zastêpuje separator katalogu UNIKSA \"/\" na znak separatora DOSa \"\\"
+"\"."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Zawarto¶æ listy odtwarzania"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Tylko listy plików"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Nazwy pliku jako dodatkowa informacja"
+
+# TODO poprawic to jakos w programie (zbyt d³ugie to jest)
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Dodatkowa informacja z maski:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Lista odtwarzania \"%s\" ju¿ istnieje!\n"
+"Nadpisaæ?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Zapis listy odtwarzania..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Nie mo¿na zapisaæ listy odtwarzania \"%s\"!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Zapisano listê odtwarzania \"%s\""
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "¦cie¿ka"
+
+# To musi byæ krotkie
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Komentarz"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Kompozytor"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Artysta"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Prawa autorskie"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Koder"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Wyszukiwanie pliku"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Wpisz s³owo kluczowe do wyszukiwania, lub pozostaw to pole puste aby "
+"wy¶wietliæ wszystkie pliki."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "W: "
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "nazwie pliku"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "znaczniku"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Rozró¿nianie wielko¶ci liter"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Znaleziono: %d plik(ów)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Wczytnie nazw plików z pliku TXT"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Plik: "
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Wczytaj "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Zawarto¶æ wczytanego pliku: "
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Lista nazw plików: "
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Po wczytaniu nazw plików zostanie uruchomiony aktualnie wybrany skaner (okno "
+"skanera musi byæ otwarte)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Wstaw pusty wiersz"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Usuñ t± liniê"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Usuñ wszystkie puste linie"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Od¶wie¿"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr ""
+
+#: src/mp4_header.c:131
+#, fuzzy
+msgid "Unknown"
+msgstr "Nieznany sygna³"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr ""
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, fuzzy, c-format
+msgid "~%d kb/s"
+msgstr "%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Powtórz akcjê dla pozosta³ych plików"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+# FIXME posiada/zawiera
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Strumieñ Ogg nie zawiera danych Vorbis(audio)."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+# TODO
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, fuzzy, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "B£¡D: Nie uda³o siê otworzyæ pliku: \"%s\" jako Vorbis (%s).\n"
+
+#: src/ogg_tag.c:163
+#, fuzzy, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Ostrze¿enie: Plik Ogg Vorbis \"%s\" zawiera tag ID3v2.\n"
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Dodaj obrazy"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Wszystkie pliki"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG i JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "W³a¶wico¶ci obrazu %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Typ obrazu"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Opis obrazu:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Zapis obrazu %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Ten plik ju¿ istnieje:\n"
+"\"%s\"\n"
+"Czy chcesz go nadpisaæ?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Zapis pliku..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "Obraz JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "Obraz PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Nieznany obraz"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "Ikona 32x32 pikseli (PNG)"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Inna ikona"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Ok³adka (przód)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Ok³adka (ty³)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "¦rodek ok³adki"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Media (np. strona z nadrukiem na CD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Prowadz±cy artysta/wykonawca/solista"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Artysta/wykonawca"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Dyrygent"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Zespó³/Orkiestra"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Tek¶ciarz/Autor tekstów"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Miejsce nagrywania"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Podczas nagrywania"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Podczas wystêpu"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Zrzut ekranu z filmu/video"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Jaskrawa pokolorowana ryba"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Ilustracja"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Logo zespo³u/artysty"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Logo wydawcy/studia"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Nieznany typ obrazu"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "pikseli"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Typ"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Opis"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Nie mogê wy¶wietliæ obrazu, poniewa¿ za ma³a ilo¶æ danych zosta³a "
+"przeczytana by stwierdziæ jak utworzyæ bufor obrazu."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Wczytywanie pliku obrazu..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nie mo¿na otworzyæ pliku:\n"
+"\"%s\"!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Plik obrazu nie zosta³ za³adowany..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Ustawienia..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Drzewo katalogów"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Id¼ do katalogu domy¶lnego"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Okre¶l katalog w którym znajduj± siê twoje pliki. Ten katalog zostanie "
+"wczytany wtedy, gdy EasyTAG zostanie uruchomiony bez parametrów."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Automatyczne przeszukiwanie wskazanego katalogu podczas startu EasyTAGa. "
+"Katalog ten mo¿e byæ nadpisany przez parametr przekazany w linii poleceñ "
+"(np. easytag /sciezka_do/plikow_audio)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Przeszukanie podkatalogów"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "Przeszukiwanie podkatalogów podczas wczytywania katalogu do drzewa."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Rozwiniêcie podkatalogów podczas wybierania katalogu"
+
+# TODO
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr "Automatyczne rozwiniecie podkatalogów w drzewie po wybraniu katalogu"
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Przeszukuj ukryte katalogi"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+"Przeszukiwanie ukrytych katalogów (katalogi te zaczynaj± siê kropk± \".\")."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Interfejs u¿ytkownika"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Wy¶wietlanie informacji o pliku"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Informacje o pliku, takie jak ilo¶æ kb/s, czas, rozmiar bêd± wy¶wietlane pod "
+"nazw± pliku."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Poka¿ zmiany w plikach na li¶cie u¿ywaj±c:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Koloru czerwonego"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Pogrubienia "
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Opcje sortowania listy"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Sortuj listê plików: "
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Rosn±co wed³ug nazw plików"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Malej±co wed³ug nazw plików"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Rosn±co wed³ug numeru ¶cie¿ki"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Malej±co wed³ug numeru ¶cie¿ki"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Rosn±co wed³ug daty utworzenia"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Malej±co wed³ug daty utworzenia"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Rosn±co wed³ug tytu³u"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Malej±co wed³ug tytu³u"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Rosn±co wed³ug artysty"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Malej±co wed³ug artysty"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Rosn±co wed³ug albumu"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Malej±co wed³ug albumu"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Rosn±co wed³ug roku"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Malej±co wed³ug roku"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Rosn±co wed³ug rodzaju"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Malej±co wed³ug rodzaju"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Rosn±co wed³ug komentarza"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Malej±co wed³ug komentarza"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Wybierz rodzaj sortowania plików u¿ywany podczas wczytywania katalogu."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "Porz±dek sortowania listy bêdzie zale¿ny od wielko¶ci liter."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Pozycja okna komunikatów"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Brak okre¶lonej pozycji"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Pozwól menad¿erowi okien na rozmieszczanie okien."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "¦rodek okna g³ównego"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Okna powinny byæ umieszczone na ¶rodku okna g³ównego."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "¦rodek ekranu"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Okna powinny byæ umieszczone na ¶rodku ekranu."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Pozycja myszy"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Okna powinny byæ umieszczone pod aktualn± pozycj± myszy."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Odtwarzacz plików audio"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Polecenie: "
+
+# FIXME: takie sobie, mo¿na by co¶ z tym zrobiæ
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Podaj komendê u¿ywan± do odtwarzania plików. Mo¿na podaæ argumenty, które "
+"zostan± przekazane do programu (na przyk³ad \"xmms -p\")."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Ustawienia plików"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Opcje nazw plików"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "Zamieñ niedozwolone znaki w nazwie pliku (dla Windows i CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Konwersja niedozwolonych znaków dla systemu plików FAT32/16 i ISO9660 + "
+"Juliet (\"\\\", \":\", \";\", \"*\", \"?\", \"\"\", \"<\", \">\", \"|\") na "
+"podobne (ale bezpieczne) podczas zmiany nazw plików. Przydatne podczas "
+"zmieniania nazw plikom przy u¿yciu skanera na podstawie taga."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Zmieñ rozszerzenie pliku na:"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Ma³e litery"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Przyk³ad: rozszerzenie pliku zostanie zmienione na \".mp3\""
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Du¿e litery"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Przyk³ad: rozszerzenie pliku zostanie zmienione na \".MP3\""
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Bez zmian"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "Rozszerzenie nie zostanie zmienione"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Zachowaj oryginalny czas modyfikacji pliku"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Zachowuje oryginalny czas modyfikacji (we w³a¶ciwo¶ciach pliku) podczas "
+"zapisywania."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Zestawów znaków dla nazw plików"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Zasady do wprowadzenia je¶li niektóre znaki nie mog± byæ przekonwertowane na "
+"systemowy zestaw znaków podczas zapisywania pliku:"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Spróbuj innego kodowania znaków"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Z t± opcj±, EasyTAG spróbuje konwersji na kodowanie znaków przydzielone dla "
+"Twojego jêzyka (np ISO-8859-1 dla \"fr\", KOI8-R dla \"ru\", ISO-8859-2 dla "
+"\"ro\"). Je¶li to zawiedzie, ustawione zostanie kodowanie ISO-8859-1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr "Wymu¶ u¿ywanie systemowego kodowania znaków i w³±cz t³umaczenie znaków"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Gdy ta opcja jest w³±czona i okre¶lony znak nie mo¿e byæ przedstawiony w "
+"docelowym kodowaniu, zostanie on zast±piony podobnie wygl±daj±cym znakiem "
+"(np. \"³\" zostanie zast±pione przez \"l\")"
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"Wymu¶ u¿ywanie systemowego kodowania znaków i odrzuæ nie pasuj±ce znaki "
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Ta opcja powoduje, ¿e znaki które nie mog± zostaæ wy¶wietlone u¿ywaj±c "
+"systemowego kodowania zostan± odrzucone i wyciête z nazwy pliku"
+
+# TODO
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Ustawienia taga"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Opcje tagów"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Auto-uzupe³nianie danych"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Stara siê uzupe³niæ pole \"rok\" je¶li podasz tylko ostatnie cyfry daty (na "
+"przyk³ad, je¶li obecny rok to 2005: 5 => 2005, 4 => 2004, 6 => 1996, 95 => "
+"1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Liczba cyfr w polu numer sciezki: "
+
+# TODO
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Numer ¶cie¿ki zapisywany jest za pomoc± dwóch i wiecej znaków. W przeciwnym "
+"razie pole numeru ¶cie¿ki nie jest poprawiane."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Pliki Ogg Vorbis: Zapisuj komentarz tak¿e w formacie XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS nie wykorzystuje poprawnej metody do identyfikacji komentarzy w plikach "
+"Ogg Vorbis. Pole to jest zazwyczaj oznaczonej jako \"comment=\", podczas gdy "
+"XMMS wykorzystuje tylko \"=\". Proszê odznaczyæ tê opcjê je¶li nie chcesz "
+"aby inne programy narzeka³y na temat nieznanego pola. Wtedy jednak "
+"komentarze nie bêd± wy¶wietlane w XMMS. Nieaktualne dla nowszych XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"Skupienie pola taga podczas zmiany pliku na li¶cie u¿ywaj±c skrótów Page Up/"
+"Page Down:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Utrzymaj skupienie na tym samym polu"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Zwróæ skupienie na pierwsze pole (tzn. na pole \"Tytu³\")"
+
+# TODO
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "Ustawienia taga ID3"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Zasady tagowania ID3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Zapisuj tagi ID3 w plikach FLAC u¿ywaj±c tagów FLAC"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Je¶li ta opcja jest aktywna, tagi ID3 bêd± dodane do pliku FLAC (brane s± "
+"pod uwagê tak¿e dwie opcje ponad). Inaczej tagi ID3 zostan± odrzucone."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Usuniêcie tagów je¶li wszystkie pola s± puste"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Tag ID3v2 mo¿e zawieraæ inne dane ni¿ Tytu³, Artysta, Album, Rok, Numer "
+"¦cie¿ki, Rodzaj lub Komentarz (takie jak do³±czony obraz, tekst utworu, "
+"itp). Ta opcja pozwala usun±æ ca³y tag, wtedy gdy te siedem podstawowych pól "
+"zosta³o wyczyszczonych."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Automatyczne uaktualnienie starszych wersji tagów ID3v2"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Je¶li aktywne, stara wersja tagu ID3v2 (do ID3v2.2) zostanie uaktualniona do "
+"wersji ID3v2.3."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Zapisywanie tagów ID3v2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Zestawów znaków dla tagów ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Zapisywanie tagów ID3v2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Zapisywanie tagów ID3v2"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Je¶li aktywne, tag ID3v2 bêdzie dodany lub uaktualniony na pocz±tku pliku "
+"MP3. W przeciwnym wypadku zostanie usuniêty."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Opis:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Koder"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Zestaw znaków u¿ywany do zapisywania tagów w pliku"
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " Nie "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3 Tag"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Zapisywanie tagów ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Je¶li aktywne, tag ID3v1 bêdzie dodany lub uaktualniony na koñcu pliku MP3. "
+"W przeciwnym wypadku zostanie usuniêty."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Zestaw znaków u¿ywany do zapisywania tagów w pliku"
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Zestawów znaków dla tagów ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Ten zestaw znaków bêdzie u¿yty podczas odczytywania znaczników z pliku do "
+"konwersji ka¿dego wiersza w polach ISO-8859-1 (ID3v2 i/lub ID3v1).\n"
+"\n"
+"Przyk³ad:\n"
+" - w poprzednich wersjach EasyTAG, mog³e¶ zapisaæ wiersze UTF-8 w polach "
+"ISO-8859-1. To nie jest prawid³owe! Aby przekonwertowaæ te tagi do Unicode "
+"musisz: W³±czyæ t± opcjê i wybraæ UTF-8. Musisz tak¿e zaznaczyæ opcjê "
+"powy¿ej \"Spróbuj zapisaæ tagi jako ISO-8859-1. Je¶li nie jest to mo¿liwe, "
+"u¿yj UNICODE (zalecane)\" lub \"Zawsze zapisuj tagi jako UNICODE\".\n"
+" - je¶li Unicode nie jest u¿ywane, Rosyjscy u¿ytkownicy mog± wybraæ "
+"Windows-1251 aby odczytaæ tagi wpisane pod Windows. Je¶li tagi zosta³y "
+"zapisane pod Unixem, nale¿y wybraæ \"KOI8-R\"."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Zestaw znaków u¿ywany do czytania danych znaczników w pliku."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Skaner"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Wype³nij tagi - konwersja znaków"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Zmieñ znaki podkre¶lenia \"_\" i ci±gi \"%20\" na spacje \" \""
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Zmieñ spacje \" \" na podkre¶lenia \"_\""
+
+# TODO
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Po w³±czeniu, ta konwersja zostanie u¿yta podczas stosowania maski ze "
+"skanera dla tagów."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Zmieñ nazwê pliku - konwersja znaków"
+
+# TODO
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Po w³±czeniu, ta konwersja zostanie u¿yta podczas stosowania maski ze "
+"skanera dla nazw plików."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Skaner pól - konwersja znaków"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr "Nie zmieniaj pierwszych liter s³ów kluczowych na du¿e"
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Nie zmieniaj pierwszych liter s³ów takich jak \"feat.\" na du¿e podczas "
+"u¿ywania skanera i opcji zmiany pierwszych liter ka¿dego s³owa na du¿e (np. "
+"zamiast \"Text In An Entry\" otrzymasz \"Text in an Entry\")"
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Okno Skanera"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Otwórz okno skanera podczas uruchamiania"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr "Automatycznie otwieranie okno skanera podczas uruchamiania EasyTAG."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Okno skanera zawsze na wierzchu"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr "Okno zawieraj±ce maskê pozostaje zawsze ponad oknem g³ównym."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Pola"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Nadpisywanie pól podczas przetwarzania taga"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Skaner zamieni stary tekst nowym w polach, które ju¿ zawieraj± jaki¶ tekst. "
+"Je¶li nieaktywne, tylko puste pola tagu zostan± wype³nione."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Ustaw ten tekst jako domy¶lny komentarz: "
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Aktywuj t± opcjê je¶li chcesz wstawiæ ten tekst do pola \"komentarz\" "
+"podczas u¿ywania skanera \"Wype³nij znacznik\"."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "Ustaw sumê CRC32 pliku jako domy¶lny komentarz (tylko ID3)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Oblicza sumê CRC-32 pliku i zapisuje j± jako \"komentarz\" podczas u¿ywania "
+"skanera \"Wype³nij znacznik\"."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "Baza danych CD"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "Ustawienia serwera dla automatycznego wyszukiwania"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Nazwa: "
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Port: "
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "¦cie¿ka CGI: "
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "Ustawienia serwera dla rêcznego wyszukiwania"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "Baza danych CD"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "¦cie¿ka CGI: "
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Ustawienia po¶rednika (proxy)"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Korzystanie z po¶rednika"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Uaktywnia ustawienia serwera po¶rednicz±cego."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Nazwa komputera: "
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Nazwa serwera po¶rednicz±cego."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Port serwera po¶rednicz±cego."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Nazwa u¿ytkownika: "
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Nazwa u¿ytkownika dla serwera po¶rednicz±cego."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Has³o u¿ytkownika: "
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Has³o dla serwera po¶rednicz±cego."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+#, fuzzy
+msgid "Track Name List"
+msgstr "Nazwa ¶cie¿ki"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"Zaznacz odpowiedni plik audio (odno¶nie pozycji albo DLM, je¶li aktywowane "
+"poni¿ej)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Je¶li ta opcja jest aktywowana, podczas zaznaczenia linii na li¶cie ¶cie¿ek, "
+"odpowiedni plik audio zostanie zaznaczony na g³ównej li¶cie."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"U¿yj algorytmu Levenshteina (DLM) do dopasowywania linii (u¿ywaj±c tytu³u) "
+"do plików audio (u¿ywaj±c nazw plików)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Potwierdzenia"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Potwierd¼ wyj¶cie z programu"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Je¶li aktywne, wy¶wietla okno dialogowe prosz±ce o potwierdzenie przed "
+"wyj¶ciem z programu."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Potwierd¼ zapisanie tagów pliku"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Potwierd¼ zmianê nazwy pliku"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Potwierd¼ kasowanie pliku"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Potwierd¼ zapisanie listy odtwarzania"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Zastosuj zmiany (lecz nie zapisuj) i zamknij to okno"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Zamknij to okno bez zapisywania zmian"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Zapisz zmiany i zamknij to okno"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Przyk³ad: %.*d_-_Nazwa_¶cie¿ki_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Zastosowano zmiany"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Konfiguracja zapisana"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Konfiguracja nie zmieniona"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+"¦cie¿ka wybrana jako \"Domy¶lna ¶cie¿ka do plików\" nie jest poprawna!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "To nie jest katalog"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr ""
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Wype³nij znacznik"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Zmieñ nazwê pliku"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Przetwarzaj pola"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Znacznik pomy¶lnie zeskanowany..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Znacznik pomy¶lnie zeskanowany (%s)\n"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, fuzzy, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "B³±d skanowania: Nie mo¿na znale¼æ separatora \"%s\" wewn±trz \"%s\"\n"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+"Nie mogê przekonwertowaæ nazwy pliku \"%s\" na systemowe kodowanie znaków."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Nowa nazwa pliku pomy¶lnie zeskanowana..."
+
+#: src/scan.c:686
+#, fuzzy, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Nowa nazwa pliku pomy¶lnie zeskanowana...(%s)\n"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Skanowanie znaczników i nazw plików"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Skaner: "
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Wybierz rodzaj skanera, który ma zostaæ u¿yty"
+
+# TODO
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Wy¶wietlenie okna skanera / skanowanie zaznaczonych plików"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Opcje skanera"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Wy¶wietl / Ukryj edytor masek"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Wy¶wietl / Ukryj legendê"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Zamyka bie¿±ce okno"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Wybierz lub wprowad¼ maskê u¿ywaj±c kodów (zobacz Legendê) aby przetworzyæ "
+"nazwê pliku i ¶cie¿kê. U¿ywane do wype³niania pól tagów."
+
+# fixme
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Podgl±d zmiany taga..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr ""
+
+#: src/scan.c:1987
+#, fuzzy
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Wybierz lub wprowad¼ maskê u¿ywaj±c kodów (zobacz Legendê) aby przetworzyæ "
+"pola tagów. U¿ywane aby zmieniæ nazwê pliku."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Podgl±d zmiany nazwy pliku..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Wybierz pola:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Przyciski po prawej stronie reprezentuj± pola, które mog± zostaæ "
+"przetworzone. Wybierz te, które maj± byæ zmienione."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "N"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Przetwarzanie pola nazwa pliku"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Przetwarzanie pola tytu³"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Przetwarzanie pola artysta"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Przetwarzanie pola album"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "R"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Przetwarzanie pola rodzaj"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+#, fuzzy
+msgid "Cm"
+msgstr "K"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Przetwarzanie pola komentarz"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+#, fuzzy
+msgid "Cp"
+msgstr "K"
+
+#: src/scan.c:2059
+#, fuzzy
+msgid "Process composer field"
+msgstr "Przetwarzanie pola komentarz"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr ""
+
+#: src/scan.c:2062
+#, fuzzy
+msgid "Process original artist field"
+msgstr "Przetwarzanie pola artysta"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+#, fuzzy
+msgid "Cr"
+msgstr "K"
+
+#: src/scan.c:2065
+#, fuzzy
+msgid "Process copyright field"
+msgstr "Przetwarzanie pola komentarz"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr ""
+
+#: src/scan.c:2068
+#, fuzzy
+msgid "Process URL field"
+msgstr "Przetwarzanie pola tytu³"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr ""
+
+#: src/scan.c:2071
+#, fuzzy
+msgid "Process encoder name field"
+msgstr "Przetwarzanie pola nazwa pliku"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Odwrócenie zaznaczenia"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Wybierz/Odznacz wszystko."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Konwersja \"_\" i \"%20\" na \" \""
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Konwersja: "
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "na: "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Znak podkre¶lenia oraz ci±g \"%20\" jest zamieniany przez jedn± spacjê. "
+"Przyk³ad, przed: \"Tekst%20W%20Jakim¶_Polu\", po: \"Tekst W Jakim¶ Polu\"."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Znak spacji jest zamieniany na jeden znak podkre¶lenia. Przyk³ad, przed: "
+"\"Tekst W Jakim¶ Polu\", po: \"Tekst_W_Jakim¶_Polu\"."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Zmiana znaku na inny."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Konwertuje wszystkie s³owa we wszystkich polach na wielkie litery. Przyk³ad, "
+"przed: \"Tekst W JAKIM¦ polu\", po: \"TEKST W JAKIM¦ POLU\"."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Konwertuje wszystkie s³owa we wszystkich polach na ma³e litery. Przyk³ad, "
+"przed: \"TEKST W jakim¶ polu\", po: \"tekst w jakim¶ polu\"."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Konwertuje pierwsz± literê pierwszego s³owa we wszystkich polach na wielk± "
+"literê. Przyk³ad, przed: \"Tekst W Jakim¶ POLU\", po: \"Tekst w jakim¶ polu"
+"\"."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Konwertuje pierwsz± literê ka¿dego s³owa we wszystkich polach na wielk± "
+"literê. Przyk³ad, przed: \"Tekst w jakim¶ POLU\", po: \"Tekst W Jakim¶ Polu"
+"\"."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Wstawia spacjê przed wielka liter±"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Usuwa duplikaty spacji lub podkre¶leñ"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Wszystkie spacje pomiêdzy s³owami s± usuwane. Przyk³ad, przed: \"Tekst W "
+"Jakim¶ Polu\", po: \"TekstWJakim¶Polu\"."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Spacja jest wstawiana przed ka¿d± wielk± liter±. Przyk³ad, przed: "
+"\"TekstWJakim¶Polu\", po: \"Tekst W Jakim¶ Polu\"."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Zduplikowane spacje lub podkre¶lenia s± usuwane. Przyk³ad, przed: "
+"\"Tekst__W__Jakim¶ Polu\", po: \"Tekst_W_Jakim¶ Polu\"."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Legenda"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a: artysta"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b: album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c: komentarz"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%c: kompozytor"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r: prawa autorskie "
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d: numer dysku"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e: skompresowany przez "
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g: gatunek"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i: ignorowane"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l: liczba ¶cie¿ek"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o: oryg. artysta"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n: ¶cie¿ka"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t: tytu³"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u: URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y: rok"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Edytor masek"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Utwórz now± maskê"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Przesuñ maskê do góry"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Przesuñ maskê w dó³"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Zduplikuj maskê"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Dodaj domy¶ln± maskê"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Usuñ maskê"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Zapisz maski"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Nowa_maska"
+
+#: src/scan.c:3032
+#, fuzzy
+msgid "Copy: No row selected!"
+msgstr "Kopiowanie: Nie wybrano wiersza!\n"
+
+#: src/scan.c:3131
+#, fuzzy
+msgid "Remove: No row selected!"
+msgstr "Usuwanie: Nie wybrano wiersza!\n"
+
+#: src/scan.c:3178
+#, fuzzy
+msgid "Move Up: No row selected!"
+msgstr "Przewijanie w górê: Nie wybrano wiersza!\n"
+
+#: src/scan.c:3229
+#, fuzzy
+msgid "Move Down: No row selected!"
+msgstr "Przewijanie w dó³: Nie wybrano wiersza!\n"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "B£¡D: Nie mo¿na zapisaæ pliku konfiguracji: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, fuzzy, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr ""
+"\n"
+"Nie mo¿na otworzyæ pliku konfiguracji \"%s\" (%s)\n"
+
+#: src/setting.c:1016
+#, fuzzy
+msgid "Loading default configuration..."
+msgstr "Wczytywanie domy¶lnej konfiguracji...\n"
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, fuzzy, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Nie mo¿na otworzyæ pliku \"%s\" (%s)\n"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "B£¡D: Nie mo¿na zapisaæ listy do pliku: %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+#, fuzzy
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Wczytywanie domy¶lnych masek \"Wype³nij tagi\"...\n"
+
+#. Fall back to defaults
+#: src/setting.c:1369
+#, fuzzy
+msgid "Loading default 'Rename File' masks..."
+msgstr "Wczytywanie domy¶lnych masek \"Zmieñ nazwê pliku\"...\n"
+
+#. Fall back to defaults
+#: src/setting.c:1396
+#, fuzzy
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Wczytywanie domy¶lnych masek \"Zmieñ nazwê pliku\"...\n"
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"B£¡D: Zmienna ¶rodowiskowa HOME nie jest zdefiniowana!\n"
+"\n"
+
+#: src/setting.c:1605
+#, fuzzy, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "B£¡D: Nie mo¿na utworzyæ katalogu \"%s\" (%s)\n"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Wej¶cie obciête lub puste."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Wej¶cie nie jest stumieniem bitowym typu Ogg."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "B³±d podczas odczytu pierwszej strony strumienia bitowego Ogg."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "B³±d odczytu pakietu pocz±tkowego nag³ówka."
+
+# FIXME posiada/zawiera
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Strumieñ Ogg nie zawiera danych Vorbis(audio)."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Uszkodzony zapasowy nag³ówek."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "Koniec pliku przed koñcem nag³ówków Vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Niepoprawne lub brakuj±ce dane, kontynuowanie..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"B³±d zapisu strumienia na wyj¶cie. Wyj¶cie mo¿e byæ niepoprawne lub obciête."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "Uruchom odtwarzacz audio"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Nieprawid³owa wersja taga"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "U¿yj wy¶ció³ki"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "U¿yj wy¶ció³ki w tagach ID3v2 dla szybszego zapisywania podczas "
+#~ "nastêpnych zmian w pliku."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Zawsze zapisuj tagi jako ISO-8859-1"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "U¿ywaj zestawu znaków ISO-8859-1 do zapisywania tagów. Ten zestaw znaków "
+#~ "mo¿e byæ u¿ywany dla tagów ID3v2 i ID3v1, jednak niestandardowe znaki nie "
+#~ "pasuj±ce do ISO-8859-1 zostan± utracone.\n"
+#~ "\n"
+#~ "Je¶li inny zestaw znaków jest u¿ywany przy u¿yciu opcji \"U¿yj "
+#~ "niestandardowego zestawu znaków\", bêdzie u¿yty zamiast ISO-8859-1.Te "
+#~ "same zasady zostan± u¿yte je¶li niektóre znaki nie mog± byæ "
+#~ "przekonwertowane."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Spróbuj zapisaæ tagi jako ISO-8859-1. Je¶li nie jest to mo¿liwe, u¿yj "
+#~ "UNICODE (zalecane)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Zestaw znaków UNICODE zostanie u¿yty, je¶li zapisywanie jako ISO-8859-1 "
+#~ "zawiedzie. Unicode mo¿e byæ u¿yty przy zapisywaniu tagów ID3v2, jednak "
+#~ "nie ID3v1 - tagi te u¿ywaj± tylko jednobajtowej tablicy znaków (domy¶lnie "
+#~ "ISO-8859-1).\n"
+#~ "\n"
+#~ "Je¶li inny zestaw znaków jest u¿ywany poprzez \"U¿yj niestandardowego "
+#~ "zestawu znaków\", bêdzie on u¿yty zamiast ISO-8859-1.Te same zasady "
+#~ "zostan± u¿yte, je¶li niektóre znaki nie bêd± mog³y byæ przekonwertowane."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Zawsze zapisuj tagi jako UNICODE"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "U¿ywaj UNICODE do zapisywania tagów ID3v2. Tagi ID3v1 bêd± zawsze "
+#~ "zapisywane przy u¿yciu tablicy jednobajtowej (domy¶lnie ISO-8859-1).\n"
+#~ "\n"
+#~ "Je¶li inny zestaw znaków bêdzie u¿ywany poprzez \"U¿yj niestandardowego "
+#~ "zestawu znaków\", bêdzie on u¿yty zamiast ISO-8859-1."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "Dla pól ISO-8859-1, zast±p poni¿szym zestawem znaków (tylko dla "
+#~ "ekspertów!): "
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "U¿yj niestandardowego zestawu znaków do odczytu tagów ID3: "
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "U¿yj niestandardowego zestawu znaków do zapisywania tagów ID3: "
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Ten zestaw znaków bêdzie u¿yty podczas zapisywania danych taga do "
+#~ "konwersji ka¿dego wiersza zapisanego w formacie ISO-8859-1 (dla tagów "
+#~ "ID3v2 i/lub IDv1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "Dla pól ISO-8859-1, zastosuj tak¿e te zasady, je¶li niektóre znaki nie "
+#~ "mog³y byæ przekonwertowane podczas zapisywania tagów:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Nie rób nic"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr "Wymu¶ u¿ywanie kodowania znaków i w³±cz t³umaczenie znaków"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr "Wymu¶ u¿ywanie kodowania znaków i odrzuæ niektóre znaki"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "Konwersja zestawu znaków z \"%s\"\n"
+#~ "na \"%s\" nie jest obs³ugiwana!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "B£¡D podczas otwierania pliku: \"%s\" (%s)."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
new file mode 100644
index 0000000..dea8aee
--- /dev/null
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..6292296
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,5033 @@
+# translation of pt_BR.po to Português do Brasil
+# Brazilian Portuguese translation of EasyTAG
+# Copyright (C) 2005-2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# doutor.zero <doutor.zero@gmail.com>, 2005.
+# Doutor.Zero <doutor.zero@gmail.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: easytag-2.0.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2007-05-03 14:48-0300\n"
+"Last-Translator: Doutor.Zero <doutor.zero@gmail..com>\n"
+"Language-Team: Brazilian Portuguese <kde-i18n-pt_br@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+"X-Poedit-Language: Portuguese\n"
+"X-Poedit-Country: BRAZIL\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG é um utilitário para visualizar e editar etiquetas em arquivos "
+"MP3, MP2, FLAC, Ogg Vorbis, MP4/AAC, MusePack e Monkey's Audio. Sua simples "
+"e prática interface em GTK+ facilita a edição de etiquetas no GNU/Linux."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Tradução alemã)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Tradução russa)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Tradução holandesa)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Tradução sueca)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Tradução húngara)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Tradução italiana)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Tradução japonesa)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Tradução ucraniana)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Tradução tcheca)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Tradução espanhola)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Tradução polonesa)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Tradução romena)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Tradução dinamarquesa)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Tradução grega)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Tradução português do Brasil)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(Tradução búlgara)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(Tradução chinesa)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Tradução grega)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Sobre..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Sobre"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(compilado: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(usando: GTK+ %d.%d.%d e id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(Suporte a arquivos MP3 desabilitado)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(Suporte a arquivos MP3 desabilitado)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(Suporte a arquivos MP3 desabilitado)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(Suporte a arquivos MP3 desabilitado)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Suporte a arquivos Ogg Vorbis desabilitado)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(Suporte a arquivos MP3 desabilitado)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(Suporte a arquivos FLAC desabilitado)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(Suporte a arquivos MP4/AAC desabilitado)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(Suporte a arquivos MP3 desabilitado)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Autor: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Página na Web: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Descrição:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Agradecimentos"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Traduções:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Principalmente:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Modificações"
+
+#: src/about.c:454
+#, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Não foi possível abrir o arquivo '%s' (%s)\n"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "ERRO ao abrir o arquivo: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Arquivo"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Organizar a lista por etiqueta"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Organizar a lista pela propriedade"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Ascendente pelo nome do arquivo"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Descendente pelo nome do arquivo"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Ascendente pela data de criação "
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Descendente pela data de criação"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Ascendente pelo número da faixa"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Descendente pelo número da faixa"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Ascendente pelo título"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Descendente pelo título"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Ascendente pelo artista"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Descendente pelo artista"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Ascendente pelo álbum"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Descendente pelo álbum"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Ascendente pelo ano"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Descendente pelo ano"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Ascendente pelo gênero"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Descendente pelo gênero"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Ascendente pelo comentário"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Descendente pelo comentário"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Ascendente pelo compositor"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Descendente pelo compositor"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Ascendente pelo artista original"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Descendente pelo artista original"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Ascendente pelo copyright"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Descendente pelo copyright"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Ascendente pela URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Descendente pela URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Ascendente pelo nome do codificador"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Descendente pelo nome do codificador"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Ascendente pelo tipo do arquivo"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Descendente pelo tipo do arquivo"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Ascendente pelo tamanho do arquivo"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Descendente pelo tamanho do arquivo"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Ascendente pela duração"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Descendente pela duração"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Ascendente pela taxa de bits"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Descendente pela taxa de bits"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Ascendente pela taxa de amostragem"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Descendente pelo taxa de amostragem"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Abrir Arquivo(s) com..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Selecionar Todos os Arquivos"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Deselecionar Todos os Arquivos"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Inverter a Seleção dos Arquivos"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Apagar Arquivo(s)"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Primeiro Arquivo"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Primeiro Arquivo"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "Arquivo _Anterior"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Arquivo Anterior"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "P_róximo Arquivo"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Próximo Arquivo"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "Úl_timo Arquivo"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Último Arquivo"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "V_erificar Arquivo(s)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Verificar Arquivo(s)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Remover Etiqueta(s)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Remover Etiqueta(s)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "_Desfazer a Última Modificação no(s) Arquivo(s)"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Desfazer a Última Modificação no(s) Arquivo(s)"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "Re_fazer a Última Modificação no(s) Arquivo(s)"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Refazer a Última Modificação no(s) Arquivo(s)"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Salvar Arquivo(s)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Salvar Arquivo(s)"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "_Forçar o Salvamento do Arquivo(s)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Forçar o Salvamento do Arquivo(s)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Desfazer as Útlimas Modificações"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Refazer as Útlimas Modificações"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "Sa_ir"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Sair"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Navegador"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Ir para o Diretório Home"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Ir para o Diretório Home"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Ir para o Diretório Padrão"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Ir para o Diretório Padrão"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Definir o _Caminho Atual como Padrão"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Definir o Caminho Atual como Padrão"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Visão em Ãrvore | Visão Artista-Ãlbum"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Renomear Diretório..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Recarregar Diretório"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Navegar no Diretório com..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Fechar Ãrvore"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Atualizar Ãrvore"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "V_erificador"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Preencher Etiqueta(s)..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Preencher Etiqueta(s)..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Renomear Arquivo(s) e Diretório..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Renomear Arquivo(s) e Diretório..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "Pr_ocessar Campo(s)..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Processar Campo(s)..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Diversos"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Procurar _Arquivo(s)..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Procurar Arquivo(s) ..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "Busca no Banco de Dados de CDs..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "Procurar no CDDB..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Carregar Nomes dos Arquivos de um TXT..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Gravar Lista de Músicas..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Executar Reprodutor de Ãudio"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Configurações"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Preferências..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Preferências..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Ajuda"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Sobre"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Parar a ação atual"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_Operação em Arquivos"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Procurar no CDDB pelo Arquivo(s)..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr "Log Limpo"
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Navegar nos _Subdiretórios"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Mostrar Diretórios Ocultos"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Mostrar o navegador em árvore / Exibir por Artista e Ãlbum"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Não foi possível unir a IU, o erro foi: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Pronto para começar..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Selecionado novo caminho padrão para arquivos"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Confirme..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Alguns arquivos modificados não foram salvos...\n"
+"Você quer salvá-los antes de mudar de diretório?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"O caminho escolhido é inválido!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Erro..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<Todos os álbuns>"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Erro: Procurando por %s, não pude encontrar o node %s na árvore."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Artista"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Ãlbuns"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Arquivos"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Ãlbum"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Ir para o diretório superior"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Escolha um diretório para navegar."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Ãrvore"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Artista & Ãlbum"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Renomear o diretório"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Renomear o diretório '%s' para: "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Usar a máscara:"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "Se ativada, máscaras serão usadas para renomear o diretório."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Selecione ou digite na máscara usando códigos (veja a Legenda na Janela do "
+"Verificador) para renomear o diretório à partir dos campos das etiquetas."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Máscara de Verificação Inválida"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Pré-visualização da renomeação do diretório..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Você deve digitar um nome para o diretório!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Não foi possível converter '%s' em um do nome de arquivo com essa "
+"codificação. Por favor use outro nome."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Não foi possível renomear porque esse nome de diretório já existe!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Não foi possível renomear o diretório \n"
+"'%s'\n"
+" para \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Diretório Renomeado"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Programa para executar:"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Escolha o programa para executar. Ele receberá o diretório atual como "
+"parâmetro."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Abrir Arquivo com..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Escolha o programa para executar. Ele receberá o arquivo atual como "
+"parâmetro."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Você deve digitar o nome do programa!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "O programa '%s' não foi encontrado!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Não foi possível executar %s (erro %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Não foi possível separar outro processo!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Comando executado: '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Artista / Ãlbum"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Categoria"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Nome da Faixa"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Tempo"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "Procurar no Banco de Dados de CDs"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Busca Automática"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr "Requisitar banco de dados de CD:"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Requisitar automaticamente o banco de dados CDDB usando os arquivos "
+"selecionados (a ordem é importante!) para gerar o CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Parar a busca..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr "Usar Cddb local"
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Ao ativar essa opção, após o carregamento dos campos, a verificação "
+"selecionada será executada (a janela do verificador deverá estar aberta)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Busca Manual"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Palavras:"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Digite as palavras para procurar (separadas por um espaço ou '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Buscar Em:"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Todos os Campos"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Outro"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Todas as Categorias"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Clássico"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Diversas"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Trilha Sonora"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "incluindo: funk, soul, rap, pop, industrial, metal, etc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "filmes, shows"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "outras que não se enquadrem nas categorias acima"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " Categorias "
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Resultados:"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Procurar:"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Digite as palavras para buscar na lista abaixo"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Procurar Próximo"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Procurar Anterior"
+
+#: src/cddb.c:571
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr ""
+"Mostrar apenas linhas vermelhas (ou mostrar todas as linhas) na lista "
+"'Artista / Ãlbum'"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Deselecionar todas as linhas"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Inverter linhas selecionadas"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Selecionar todas as linhas"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Selecione as linhas para 'aplicar' na sua lista de arquivos. Todas as linhas "
+"serão processadas se nenhuma linha for selecionada. Você pode ainda "
+"reordenar as linhas nessa lista antes de usar o botão 'aplicar'."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Definir Em:"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Todos"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Nome do Arquivo"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Título"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Ano"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Faixa #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# Faixas"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Gênero"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Executa a verificação atual para cada arquivo"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr "Coincidir linhas com o algoritmo Levenshtein"
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Se esta opção estiver ativada, o algoritmo Levenshtein (DLM: Damerau-"
+"Levenshtein Metric) será usado para comparar o título CDDB contra todos os "
+"nomes de arquivos no diretório atual, e para selecionar a melhor "
+"coincidência. Isto será usado ao selecionar o arquivo de áudio "
+"correspondente, ou ao aplicar os resultados CDDB, ao invés de usar "
+"diretamente a ordem na lista."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr ""
+"Carrega as linhas selecionadas ou todas as linhas (se nenhuma linha estiver "
+"selecionada)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Pronto para procurar..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Ãlbum: '%s', artista: '%s', duração: '%s', ano: '%s', gênero: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Inverter seleção"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Organizar pelo Número da Faixa"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Organizar pelo Nome da Faixa"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Determinando host '%s'..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Não foi possível determinar o host '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Não foi possível criar um novo socket (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Conectando ao host '%s', porta '%d'..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Não foi possível conectar ao host '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Conectado ao host '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Recebendo dados (%s)..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Erro ao ler a resposta do cddb (%s)!"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Não foi possível criar o arquivo '%s' (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Não foi possível abrir o arquivo '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Enviando requisição..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Não foi possível enviar a requisição (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Recebendo dados..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "O servidor retornou uma resposta incorreta!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "O servidor retornou uma resposta incorreta! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Desculpe, mas a busca na web não é possível no momento!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Encontrado(s) %d álbum(ns) iguais"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Recebendo dados da página %d..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Recebendo dados da página %d..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "Mais resultados para carregar..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Nenhum arquivo selecionado!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d arquivo(s) selecionado(s)!"
+
+#: src/cddb.c:2945
+msgid "Local CD search..."
+msgstr "Busca de CD local..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+"O caminho para o 'Banco de Dados de CDs Local' não foi definido!\n"
+"Preencha-o na janela de preferências."
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Enviando requisição (CddbId: %s, #faixas: %d, Duração do disco: %d)..."
+
+#: src/cddb.c:3231
+#, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Encontrados %d álbuns iguais para o DiscID '%s'"
+
+#: src/cddb.c:3327
+#, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Não foi possível carregar o arquivo: '%s' (%s)!"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Carregando lista das faixas do álbum..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Tenha cuidado, você está aplicando %d linhas dos resultados CDDB para %d "
+"linhas na lista de arquivos!\n"
+"\n"
+"Deseja continuar?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Gravar Etiqueta do CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Ãrabe (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Ãrabe (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Ãrabe (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Báltico (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Báltico (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Báltico (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Céltico (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Europeu Central (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Europeu Central (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Europeu Central (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinês Simplificado (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinês Simplificado (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinês Tradicional (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinês Tradicional (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirílico (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirílico (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirílico (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirílico (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirílico (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Cirílico/Russo (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Cirílico/Ucraniano (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Inglês (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Grego (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Grego (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hebraico (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebraico (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japonês (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonês (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonês (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Coreano (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nórdico (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Sul Europeu (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Tailandês (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Turco (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turco (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Turco (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamita (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamita (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebraico Visual (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Ocidental (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Ocidental (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Ocidental (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Ocidental (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "O nome do arquivo '%s' não pode ser convertido em UTF-8 (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "UTF-8 Inválido"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"A seqüência UTF-8 '%s' não pôde ser convertida na codificação do nome "
+"arquivo (%s)\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "A seqüencia '%s' não pôde ser convertida em UTF-8 (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Inicializando EasyTAG %s (PId: %d)..."
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Usando atualmente id3lib versão %d.%d.%d..."
+
+#: src/easytag.c:182
+#, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Usando atualmente id3lib versão %d.%d.%d..."
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr "Variável EASYTAGLANG definida. Configurando o local: '%s'"
+
+#: src/easytag.c:191
+#, c-format
+msgid "Setting locale : '%s'"
+msgstr "Configurando o local: '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "Usando atualmente o local '%s' (e eventualmente '%s')..."
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s por %s (compilado %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Página na Web: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr "Parâmetro desconhecido ou caminho '%s'\n"
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Navegador"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Arquivo"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Arquivo Somente Leitura"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Link de Arquivo Quebrado"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Camada ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Taxa de Bits:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Freq:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Modo:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Tamanho:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Tempo:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Etiqueta"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Comuns"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Título:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Etiquetar arquivos selecionados com esse título"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Artista:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Etiquetar arquivos selecionados com esse artista"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Ãlbum:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Etiquetar arquivos selecionados com esse nome do álbum"
+
+#. Disc Number
+#: src/easytag.c:642
+msgid "CD:"
+msgstr "CD:"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Etiquetar arquivos selecionados com esse número do disco"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Ano:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Etiquetar arquivos selecionados com esse ano"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Numerar os arquivos selecionados seqüencialmente. Começar com 01 em cada "
+"subdiretório."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Faixa #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Definir o número de arquivos, no mesmo diretório do arquivo exibido, para as "
+"faixas selecionadas."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Etiquetar os arquivos selecionados com esse número de faixa"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Gênero:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Etiquetar os arquivos selecionados com esse gênero"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Comentário:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Etiquetar os arquivos selecionados com esse comentário"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Compositor:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Etiquetar os arquivos selecionados com esse compositor"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Artista Orig.:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Etiquetar os arquivos selecionados com esse artista original"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Copyright:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Etiquetar os arquivos selecionados com esse copyright"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Etiquetar os arquivos selecionados com essa URL"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Codificado por:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Etiquetar os arquivos selecionados com esse nome do codificador"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Imagens"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Imagens:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Você pode usar 'arrastar e soltar' para adicionar uma imagem."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Etiqueta os arquivos selecionados com essas imagens"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Remover as imagens selecionadas, ou todas as imagens."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Adicionar imagens à etiqueta (também é possível 'arrastar e soltar')."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Salvar as imagens selecionadas no disco rígido."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Definir as propriedades dos arquivos selecionados."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Arquivos selecionados etiquetados com o título '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Remover o título dos arquivos selecionados."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Arquivos selecionados etiquetados com o artista '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Remover artista dos arquivos selecionados."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Arquivos selecionados etiquetados com o álbum '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Nome do álbum removido dos arquivos selecionados."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Arquivos selecionados etiquetados com o número do disco '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Número do disco removido dos arquivos selecionados."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Arquivos selecionados etiquetados com o ano '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Ano removido dos arquivos selecionados."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Arquivos selecionados etiquetados com a faixa como 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Arquivos selecionados etiquetados com a faixa como 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Número da faixa removido dos arquivos selecionados."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Faixas selecionadas numeradas seqüencialmente."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Arquivos selecionados etiquetados com o gênero '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Gênero removido dos arquivos selecionados."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Arquivos selecionados etiquetados com o comentário '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Comentário removido dos arquivos selecionados."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Arquivos selecionados etiquetados com o compositor '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Compositor removido dos arquivos selecionados."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Arquivos selecionados etiquetados com o artista original '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Artista original removido dos arquivos selecionados."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Arquivos selecionados etiquetados com o copyright '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Copyright removido dos arquivos selecionados."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Arquivos selecionados etiquetados com a URL '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "URL removida dos arquivos selecionados."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Arquivos selecionados etiquetados com o nome do codificador '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Nome do codificador removido dos arquivos selecionados."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Arquivos selecionados etiquetados com imagens."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Imagens removidas dos arquivos selecionados."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Seleciona Modo e Máscara, e refaz a mesma ação"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Todas as etiquetas foram verificadas"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Todas as etiquetas foram removidas"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Todas os arquivos foram salvos..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Arquivos foram parcialmente salvos..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Arquivos foram parcialmente apagados..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Todos os arquivos foram apagados..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Deseja gravar a etiqueta no arquivo\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Gravar Etiqueta..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Renomear Arquivo e Diretório..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Deseja renomear o arquivo e diretório \n"
+"'%s'\n"
+"para \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Renomear Diretório..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Deseja renomear o diretório \n"
+"'%s'\n"
+"para \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Renomear Arquivo..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Deseja renomear o arquivo \n"
+"'%s'\n"
+"para \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Gravando etiqueta em '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Etiqueta(s) gravada(s)"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Não foi possível gravar a etiqueta no arquivo '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Renomeando o arquivo '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Não foi possível renomear o arquivo '%s'\n"
+" para \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Arquivos não foram renomeados..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Não foi possível renomear o arquivo \n"
+"'%s'\n"
+"porque o seguinte arquivo já existe:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Não foi possível criar o diretório alvo\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Arquivo '%s' renomeado para '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Arquivos renomeados..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Não foi possível remover o diretório anterior:\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Arquivo '%s' movido para '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Arquivo(s) movidos..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Não foi possível mover o arquivo '%s'\n"
+" para \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Arquivo(s) não foram movidos..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Tem certeza que deseja apagar definitivamente o arquivo\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Apagar Arquivo..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Arquivo '%s' apagado"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Não foi possível ler o diretório:\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Busca em progresso..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Arquivo: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Encontrado(s) %d arquivo(s) nesse diretório e subdiretórios."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Encontrado(s) %d arquivo(s) nesse diretório."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u arquivo(s)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Nenhum arquivo encontrado nesse diretório e subdiretórios!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Nenhum arquivo encontrado nesse diretório!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Procurando..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " PARAR a busca... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Selecione um diretório para navegar!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Etiquetar arquivos selecionados com esse campo"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Converter '_' e '%20' para espaços"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Converter ' ' para '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Todas maiúsculas"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Todas minúsculas"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Primeira letra maiúscula"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Primeira letra de cada palavra maiúscula"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Remover espaços"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Inserir espaço antes da letra maiúscula"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Remover espaços e underscores duplicados"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Saída anormal! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, c-format
+msgid "Received signal %s (%d)"
+msgstr "Recebido o sinal %s (%d)"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Você provavelmente encontrou um bug no EasyTAG. Por favor, envie um aviso de "
+"bug com um backtrace do gdb ('gdb easytag core' então 'bt' e 'l') e "
+"informações para reproduzi-lo para easytag@gmail.com"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Sinal desconhecido"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Uso: easytag [opção] \n"
+" ou: easytag [diretório]\n"
+"\n"
+"Opção:\n"
+"-------\n"
+"-h, --help Exibir esse texto e sair.\n"
+"-v, --version Imprimir informações básicas e sair.\n"
+"\n"
+"Diretório:\n"
+"----------\n"
+"c:/caminho_para/arquivos Usar um caminho absoluto para carregar,\n"
+"/caminho_para/arquivos Usar um caminho absoluto para carregar,\n"
+"caminho_para/arquivos Usar um caminho relativo.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Saída normal."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Alguns arquivos modificados não foram salvos...\n"
+"Você deseja salvá-los antes de fechar o programa?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Tem certeza que deseja fechar o programa? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "Etiqueta ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Etiqueta Ogg Vorbis"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "Etiqueta FLAC"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "Etiqueta APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "Etiqueta MP4/M4A/AAC"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr "Etiqueta Wavpack"
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "Arquivo MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "Arquivo MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Arquivo Ogg Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Próximo Arquivo"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "Arquivo FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "Arquivo MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Arquivo Monkey's"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "Arquivo MP4/AAC"
+
+#: src/et_core.c:2599
+msgid "Wavpack File"
+msgstr "Arquivo Wavpack"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Imagens"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Não foi possível converter o nome do arquivo: '%s'\n"
+"em um nome de arquivo na codificação do sistema\n"
+"(Tente ajustar a variável de ambiente G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Tradução do nome do arquivo"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "O nome do arquivo '%s' excede %d caracteres e será truncado!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Codificador:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Canais:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "ERRO ao abrir o arquivo: '%s' como FLAC (%s)."
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ERRO: Falha ao gravar comentários no arquivo '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Gravada etiqueta de '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Removida etiqueta de '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Erro enquanto removia etiqueta ID3v1 de '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Erro enquanto removia etiqueta ID3v2 de '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Erro enquanto atualizava etiqueta ID3v2 de '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"Você tentou salvar essa etiqueta em Unicode mas foi detectado que sua versão "
+"do id3lib está com problemas.\n"
+"Se você recarregar esse arquivo, alguns caracteres na etiqueta podem não ser "
+"exibidos corretamente...\n"
+"Por favor, aplique o patch src/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug."
+"diff\n"
+"disponível no pacote das fontes do EasyTAG.\n"
+"Saiba que essa mensagem só aparecerá uma vez.\n"
+"\n"
+"Arquivo: %s"
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Erro enquanto atualizava etiqueta ID3v1 de '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Etiqueta atualizada de '%s'"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Nenhum erro reportado"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Sem memória disponível"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Sem dados para analisar"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Dados formatados incorretamente"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Sem buffer para gravar para"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Buffer é muito pequeno"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "ID do quadro inválido"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Campo requerido não encontrado"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Tipo de campo desconhecido"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Etiqueta já está anexada ao arquivo"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Versão da etiqueta inválida"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Nenhum arquivo para analisar"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Tentando gravar para um arquivo somente-leitura"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Erro na compressão/descompressão"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Mensagem de erro desconhecida!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Como o seguinte arquivo corrompido: '%s'\n"
+"iria causar um erro na id3lib, ele não será processado pelo programa."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Arquivo corrompido..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr "Log"
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Sim "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Não "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Aplicar "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Salvar "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Cancelar "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Fechar "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Gravar "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Executar "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " Procurar "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " Navegar... "
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Diretório selecionado..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Arquivo selecionado..."
+
+#: src/misc.c:886
+msgid "Warning..."
+msgstr "Atenção..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr "Nenhum reprodutor de áudio definido!"
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Não foi possível executar %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Gerar uma lista de músicas"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "Nome da Lista de músicas M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Usar o nome do diretório"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Editar Máscaras"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Opções da Lista de músicas"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Incluir somente os arquivos selecionados"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Se ativada, somente os arquivos selecionados serão gravados no arquivo de "
+"lista de músicas. Caso contrário, todos os arquivos serão gravados."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Usar o caminho absoluto para os arquivos na lista de músicas"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Usar o caminho relativo para os arquivos na lista de músicas"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Criar uma lista de músicas no diretório acima"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr "Se ativada, a lista de músicas será criada no diretório acima."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Usar separador de diretório DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Essa opção substitui o separador de diretório UNIX '/' por um separador DOS "
+"'\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Conteúdo da Lista de músicas"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Gravar somente a lista dos arquivos"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Gravar informações usando o nome do arquivo"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Gravar informações usando:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"O arquivo de lista de músicas '%s' já existe!\n"
+"Sobrescrever?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Gravar Lista de músicas..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Não foi possível gravar o arquivo de lista de músicas '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Gravando o arquivo de lista de músicas '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Faixa"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Comentário"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Compositor"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Artista Orig."
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Copyright"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Codificador por"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Procurar um arquivo"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Digite uma palavra para procurar nos arquivos. Ou não digite nada para "
+"exibir todos os arquivos."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "No:"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "Nome do Arquivo"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "Etiqueta"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Sensível à capitalização"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Encontrado: %d arquivo(s)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Carregar os nomes dos arquivos de um arquivo TXT"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Arquivo:"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Carregar "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Conteúdo do Arquivo Carregado:"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Lista dos Nomes de Arquivos:"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Ao ativar esse opção, após carregar os nomes de arquivos, o verificador "
+"selecionado atualmente será executado (a janela do verificador deverá estar "
+"aberta)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Inserir uma linha em branco"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Apagar essa linha"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Apagar todas as linhas em branco"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Recarregar"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Perfil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Ãudio"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "Formato MP4 inválido"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr "Estéreo"
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr "Estéreo combinado"
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr "Canal duplo"
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr "Canal único"
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Repetir a ação para o resto dos arquivos"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "O bitstream Ogg não contém dados vorbis."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "ERRO: Falha ao abrir o arquivo: '%s' como vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Atenção: O arquivo Ogg Vorbis '%s' contém uma etiqueta ID3v2."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Adicionar imagens"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Todos os Arquivos"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG e JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Propriedades da Imagem %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Tipo da Imagem"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Descrição da Imagem:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Salvar imagem %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"O seguinte arquivo já existe:\n"
+"'%s'\n"
+"Deseja sobrescrever?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Salvar arquivo..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "Imagem JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "Imagem PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Imagem desconhecida"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "32x32 pixels: ícone de arquivo PNG"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Outro ícone de arquivo"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Capa (frente)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Capa (atrás)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Página do folheto"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Media (ex. etiqueta lateral do CD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Artista principal/músico principal/solista"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Artista/músico"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Maestro"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Banda/Orquestra"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Letrista/escritor"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Local da gravação"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Duração da gravação"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Duração da performance"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Captura de tela de filme/vídeo"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Um peixe de cores fortes"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Ilustração"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Logotipo da banda/artista"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Logotipo do distribuidor/estúdio"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Tipo de imagem desconhecida"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "pixels"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Tipo"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Descrição"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Não foi possível exibir a imagem, porque não foram lidos dados suficientes "
+"para determinar como o buffer de imagem deve ser criado."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Carregando Arquivo de Imagem..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Não foi possível abrir o arquivo:\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "O arquivo de imagem não foi carregado..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Preferências..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Navegador de Arquivos"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Ir para o Diretório Padrão"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Especificar o diretório onde seus arquivos estão localizados. Esse caminho "
+"será carregado ao iniciar o EasyTAG sem nenhum parâmetro."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Procurar automaticamente por arquivos, ao iniciar o EasyTAG, nos seguintes "
+"diretórios. Observe que esse caminho pode ser sobreposto pelo parâmetro "
+"enviado ao Easytag (easytag /caminho_para/arquivos_mp3)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Procurar nos subdiretórios"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "Procurar nos subdiretórios por arquivos ao ler um diretório na árvore."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Exibir os subdiretórios ao selecionar um diretório"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Isto expande o node selecionado no navegador de arquivos para exibir os "
+"subdiretórios."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Procurar nos diretórios ocultos"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+"Procurar por arquivos nos diretórios ocultos (diretórios que começam com "
+"'.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Interface do Usuário"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Mostrar as informações do cabeçalho do arquivo"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Se ativada, as informações sobre os arquivos como a taxa de bits, o tempo, o "
+"tamanho, serão exibidas abaixo da entrada do nome do arquivo."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Exibir os arquivos modificados na lista em:"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Vermelho"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Negrito"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Opções de Organização em Lista"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Organizar a lista de arquivo por:"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Nome do arquivo ascendente"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Nome do arquivo descendente"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Número da faixa ascendente"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Número da faixa descendente"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Data de criação ascendente"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Data de criação descendente"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Título ascendente"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Título descendente"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Artista ascendente"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Artista descendente"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Ãlbum ascendente"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Ãlbum descendente"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Ano ascendente"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Ano descendente"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Gênero ascendente"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Gênero descendente"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Comentário ascendente"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Comentário descendente"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr ""
+"Selecionar o tipo de organização dos arquivos ao carregar um diretório."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "Se ativada, a organização da lista será dependente da capitalização."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Posição do Diálogo de Mensagens"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Sem posição específica"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Deixar o Gerenciador de Janela posicionar as janelas."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "Centro da janela principal"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "As janelas deverão ser posicionadas no centro da janela principal."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Centro da tela"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "As janelas deverão ser posicionadas no centro da tela."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Posição do mouse"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "As janelas deverão ser posicionadas na atual posição do mouse."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Reprodutor de Arquivos de Ãudio"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Executar o reprodutor:"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Escolha o programa usado para reproduzir os arquivos. Alguns argumentos "
+"podem ser passados para o programa (como 'xmms -p') antes que ele receba os "
+"arquivos e outros argumentos."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Configurações do Arquivo"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Opções de Arquivo"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+"Substituir caracteres ilegais no nome do arquivo (para Windows e CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Converter caracteres ilegais para sistemas de arquivos FAT32/16 e ISO9660 + "
+"Joliet ('\\', ':', ';', '*', '?', '\"', '<', '>', '|') no nome dos arquivos "
+"para evitar problemas ao renomear. Isso é útil ao renomear um arquivo com o "
+"verificador, a partir da etiqueta."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Converter a extensão do arquivo para:"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Minúscula"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Por exemplo, a extensão será convertida para '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Maiúscula"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Por exemplo, a extensão será convertida para '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Sem alteração"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "A extensão não será convertida"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Preservar a data de modificação do arquivo"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+"Preservar a data de modificação (nas propriedades do arquivo) ao salvar o "
+"arquivo."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Conjunto de Caracteres para o Nome do Arquivo"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Quando não for possível converter caracteres para a codificação de "
+"caracteres do sistema ao gravar o arquivo:"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Tentar outra codificação de caracteres"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Com essa opção, será tentada uma conversão para a codificação associada à "
+"seu local (por exemplo: ISO-8859-1 para 'fr', KOI8-R para 'ru', ISO-8859-2 "
+"para 'ro'). Se isso falhar, será usada a codificação de caracteres ISO-8859-"
+"1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+"Forçar o uso da codificação de caracteres do sistema e ativar a "
+"transliteração"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Com essa opção, quando um caractere não puder ser representado no conjunto "
+"de caracteres alvo, ele será aproximado através de um ou vários caracteres "
+"parecidos."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"Forçar o uso da codificação de caracteres do sistema e descartar "
+"silenciosamente alguns caracteres"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Com essa opção, quando um caractere não puder ser representado no conjunto "
+"de caracteres alvo, ele será descartado silenciosamente."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Ajustes das Etiquetas"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Opções das Etiquetas"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Auto-completar se a data não estiver completa"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Tentar completar o campo do ano se você digitar apenas os últimos números da "
+"data (por exemplo, se o ano atual for 2005: 5 => 2005, 4 => 2004, 6 => 2006, "
+"95 => 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Gravar o campo da faixa com o seguinte número de dígitos:"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Se ativada, o campo das faixas será gravado usando o número '0', como meio "
+"de obter um número com 'n' dígitos (ex. com dois dígitos: '05', '09', "
+"'10', ...). Caso contrário será mantido o valor 'bruto' da faixa."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Arquivos Ogg Vorbis: gravar também o comentário para o formato XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"O XMMS não usa corretamente a maneira de identificar um comentário em um "
+"arquivo Ogg Vorbis como outros aplicativos fazem. Na verdade, esse campo é "
+"normalmente marcado com 'comment=', enquanto o XMMS usa somente '='. Por "
+"favor, desmarque essa opção se você não quiser que outros aplicativos "
+"reclamem sobre um campo desconhecido. Apesar de que isso fará com que os "
+"comentários não sejam mostrados no XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"Focalizar o campo da etiqueta ao mudar de arquivos na lista com os atalhos "
+"Page Up/Page Down:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Manter o foco no mesmo campo da etiqueta"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Retornar o foco ao primeiro campo da etiqueta (ie. campo 'Título')"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "Configurações da Etiqueta ID3"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Regras para Etiquetas MP3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Gravar etiquetas ID3 em arquivos FLAC com a etiqueta FLAC"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Se ativada, etiquetas ID3 também serão adicionadas no arquivo FLAC (de "
+"acordo com duas regras acima, mais a etiqueta FLAC). Caso contrário as "
+"etiquetas ID3 serão removidas."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Remover etiquetas se todos os campos estiverem em branco"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Etiquetas ID3v2 podem conter outros dados além do Título, Artista, Ãlbum, "
+"Ano, Faixa, Gênero ou Comentário (como letras, imagens anexadas,...); essa "
+"opção permite que você remova a etiqueta inteira quando esses sete campos de "
+"dados estiverem em branco."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Converter automaticamente versões antigas de etiquetas ID3v2"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Se ativada, uma versão antiga de etiqueta ID3v2 será atualizada para a "
+"versão ID3v2.3."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Gravar etiqueta ID3v2.x"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Conjunto de caracteres para etiquetas ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Gravar etiqueta ID3v2.x"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Gravar etiqueta ID3v2.x"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Se ativada, uma etiqueta ID3v2 será adicionada ou atualizada no início do "
+"arquivo MP3. Caso contrário a etiqueta será removida."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Descrição:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Codificador por"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr ""
+"Conjunto de caracteres usado para gravar os dados da etiqueta no arquivo"
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " Não "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "Etiqueta ID3"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Gravar etiqueta ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Se ativada, uma etiqueta ID3v1.x será adicionada ou atualizada no fim do "
+"arquivo MP3. Caso contrário a etiqueta será removida."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr ""
+"Conjunto de caracteres usado para gravar os dados da etiqueta no arquivo"
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Conjunto de caracteres para etiquetas ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Esse conjunto de caracteres será usado ao ler os dados da etiqueta, para "
+"converter cada seqüência encontrada em um campo ISO-8859-1 na etiqueta (para "
+"etiquetas ID3v2 e/ou ID3v1).\n"
+"\n"
+"Por exemplo:\n"
+" - em versões anteriores do EasyTAG, você pode salvar seqüências UTF-8 em "
+"um campo ISO-8859-1. Isso não é o correto! Para converter essas etiquetas "
+"para o Unicode: habilite essa opção e selecione UTF-8. Você também deve "
+"ativar a opção acima 'Tentar salvar as etiquetas em ISO-8859-1. Se não for "
+"possível, usar então o UNICODE (recomendado)' ou 'Sempre salvar as etiquetas "
+"no conjunto de caracteres UNICODE'.\n"
+" - se o Unicode não for usado, russos podem selecionar o conjunto de "
+"caracteres 'Windows-1251' para carregar etiquetas gravadas no Windows. E "
+"'KOI8-R' para carregar etiquetas gravadas em sistemas Unix."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Conjunto de caracteres usado para ler os dados da etiqueta no arquivo."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Verificador"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Verificador de Preenchimento da Etiqueta - Conversão de Caracteres"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Converter caractere underscore '_' e a seqüencia '%20' para espaço ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Converter espaço ' ' para underscore '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Se ativada, essa conversão será usada ao aplicar a máscara do verificador de "
+"etiquetas."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Verificador de Renomeamento de Arquivos - Conversão de Caracteres"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Se ativada, essa conversão será usada ao aplicar a máscara do verificador de "
+"nome dos arquivos."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Verificador de Processamento dos Campos - Conversão de Caracteres"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+"Não converter em maiúsculas a primeira letra de palavras para algumas "
+"preposições e artigos."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Não converter a primeira letra de palavras como preposições, artigos e "
+"palavras como 'proeza.', ao usar o verificador 'Primeira letra de cada "
+"palavra maiúscula' (por exemplo, você obterá 'Texto em uma Entrada' ao invés "
+"de 'Texto Em Uma Entrada')."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Janela do Verificador"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Abrir a Janela do Verificador na inicialização"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Ative essa opção para abrir automaticamente a janela do verificador quando o "
+"EasyTAG iniciar."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Janela do verificador sempre no topo"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Se ativada, a janela que contém as máscaras estará sempre sobre a janela "
+"principal."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Campos"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Sobrescrever campos ao verificar as etiquetas"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Se ativada, o verificador substituirá o texto existente nos campos por um "
+"novo. Se desativado, somente os campos em branco da etiqueta serão "
+"preenchidos."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Definir esse texto como o comentário padrão:"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Ative essa opção se deseja colocar a seguinte seqüencia no campo de "
+"comentário ao usar o 'Verificador de Preenchimento'."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+"Usar CRC32 como o comentário padrão (somente para arquivos com etiquetas "
+"ID3)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Calcular o valor CRC-32 do arquivo e gravá-lo no campo de comentário ao usar "
+"o 'Verificador de Preenchimento'."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "Banco de Dados de CDs"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "Configurações do Servidor para Busca Automática"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Nome:"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Porta:"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "Caminho CGI:"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "Configurações do Servidor para Busca Manual"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+msgid "Local CD Data Base"
+msgstr "Banco de Dados de CDs Local"
+
+#: src/prefs.c:1203
+msgid "Path :"
+msgstr "Caminho:"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+"Especifique o diretório onde está localizado o banco de dados de cds local. "
+"O banco de dados de cds local contém os 11 seguintes diretórios 'blues', "
+"'classical', 'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', "
+"'soundtrack' e 'misc'.\""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Opções Proxy"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Usar um proxy"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Definir as opções ativas do servidor proxy."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Nome do Host:"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Nome do servidor proxy."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Porta do servidor proxy."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Nome do Usuário:"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Nome do usuário do servidor proxy."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Senha do Usuário:"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Senha do usuário para o servidor proxy."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Lista do Nome das Faixas"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"Selecionar o arquivo de áudio correspondente (de acordo com a posição ou com "
+"o DLM, se ativado abaixo)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Se ativada, ao selecionar uma linha na lista de nomes das faixas, o arquivo "
+"correspondente na lista principal também será selecionado."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Usar o algoritmo Levenshtein (DLM) para coincidir as linhas (usando o "
+"título) com os arquivos de áudio (usando o nome do arquivo)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Confirmação"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Confirmar ao sair do programa"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Se ativada, será aberta uma caixa de diálogo pedindo confirmação antes de "
+"fechar o programa."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Confirmar a gravação da etiqueta no arquivo"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Confirmar a renomeação do arquivo"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Confirmar a remoção do arquivo"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Confirmar a gravação da lista de músicas"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Aplicar modificações (mas não salvar) e fechar essa janela"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Fechar essa janela sem salvar"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Salvar modificações e fechar essa janela"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Exemplo: %.*d_-_Nome_da_faixa_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Modificações aplicadas"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Configuração salva"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Configuração inalterada"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" O caminho selecionado para 'Caminho padrão para arquivos' é inválido!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Não é um diretório"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "O reprodutor de áudio '%s' não foi encontrado!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Preencher Etiqueta"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Renomear Arquivo e Diretório"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Processar Campos"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Etiqueta verificada com sucesso..."
+
+#: src/scan.c:352
+#, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Etiqueta verificada com sucesso...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+"Verificador de etiqueta: estranho..., a extensão '%s' não foi encontrada no "
+"nome de arquivo '%s'!"
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr ""
+"Erro de Verificação: não foi possível achar o separador '%s' dentro de '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+"Não foi possível converter o nome do arquivo '%s' para um nome de arquivo na "
+"codificação do sistema."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Novo nome do arquivo verificado com sucesso..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Novo nome do arquivo verificado com sucesso...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Verificação da Etiqueta e do Nome do Arquivo"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Verificador:"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Selecionar o tipo do verificador"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Abrir janela do verificador / Verificar arquivos selecionados"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Opções do Verificador"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Mostrar / Esconder o Editor de Máscaras"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Mostrar / Esconder Legendas"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Fechar essa janela"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Selecione ou digite na máscara usando códigos (veja a Legenda) para analisar "
+"o nome do arquivo e o caminho. Usado para preencher campos das etiquetas."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Pré-visualização do preenchimento da etiqueta..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Prefixo da máscara no caminho atual"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Selecione ou digite na máscara usando códigos (veja a Legenda) para analisar "
+"os campos das etiquetas. Usado para renomear o arquivo. Use / para criar "
+"diretórios. Se o primeiro caractere for /, o caminho é absoluto, caso "
+"contrário é relativo ao caminho anterior."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Pré-visualização da renomeação do arquivo..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Campos selecionados:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Os botões a direita representam os campos que podem ser processados. "
+"Selecione os que lhe interessam."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "A"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Processar o campo do nome do arquivo"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Processar o campo do título"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Processar o campo do artista"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Processar o campo do álbum"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Processar o campo do gênero"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Processar o campo do comentário"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Processar o campo do compositor"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "A"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Processar o campo do artista original"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Processar o campo de copyright"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Processar o campo da URL"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "C"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Processar o campo do nome do codificador"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Inverter Seleção"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Selecionar/Deselecionar Todos."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Converter '_' e '%20' para ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Converter:"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "para: "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"O caractere undescore ou a seqüencia '%20' são substituídos por um espaço. "
+"Por exemplo, antes: 'Texto%20Em%20Uma_Entrada', depois: 'Texto Em Uma "
+"Entrada'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"O caractere de espaço é substituído por um underscore. Por exemplo, antes: "
+"'Texto Em Uma Entrada', depois: 'Texto_Em_Uma_Entrada'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Substituir um caractere por outro."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Converte todas as palavras em todos os campos para maiúsculas. Por exemplo, "
+"antes: 'Texto EM UMA entrada', depois: 'TEXTO EM UMA ENTRADA'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Converte todas as palavras em todos os campos para minúsculas. Por exemplo, "
+"antes: 'TEXTO EM uma entrada', depois: 'texto em uma entrada'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Converte a letra inicial da primeira palavra para maiúscula (em todos os "
+"campos). Por exemplo, antes: 'Texto EM Uma ENTRADA', depois: 'Texto em uma "
+"entrada'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Converte a letra inicial de cada palavra para maiúscula (em todos os "
+"campos). Por exemplo, antes: 'Texto em uma ENTRADA', depois: 'Texto Em Uma "
+"Entrada'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Insere um espaço antes de uma letra maiúscula"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Remove espaços ou underscores duplicados"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Todos os espaços entre palavras são removidos. Por exemplo, antes: 'Texto Em "
+"Uma Entrada', depois: 'TextoEmUmaEntrada'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Um espaço é inserido antes de cada letra maiúscula. Por exemplo, antes: "
+"'TextoEmUmaEntrada', depois: 'Texto Em Uma Entrada'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Espaços ou underscores duplicados serão removidos. Por exemplo, antes: "
+"'Texto__Em__Uma Entrada', depois: 'Texto_Em_Uma Entrada'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Legenda"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a: artista"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b: álbum"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c: comentário"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p: compositor"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r: copyright"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d: número do disco"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e: codificado por"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g: gênero"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i: ignorado"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l: número de faixas"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o: artista orig."
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n: faixa"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t: título"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u: URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y: ano"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Editor de Máscara"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Criar Nova Máscara"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Mover essa Máscara para Cima"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Mover essa Máscara para Baixo"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Duplicar Máscara"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Adicionar Máscaras Padrão"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Remover Máscara"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Salvar Máscaras"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Nova_máscara"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Copiar: Nenhuma coluna selecionada!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Remover: Nenhuma coluna selecionada!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Mover para Cima: Nenhuma coluna selecionada!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Mover para Baixo: Nenhuma coluna selecionada!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "ERRO: Não foi possível gravar o arquivo de configuração: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Não foi possível abrir o arquivo de configuração '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Carregando configuração padrão..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Não foi possível criar ou abrir o arquivo '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "ERRO: Não foi possível gravar a lista para o arquivo: %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Carregando as máscaras padrão de 'Preenchimento de Etiqueta..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Carregando as máscaras padrão de 'Renomear Arquivo'..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Carregando as máscaras padrão de 'Renomear Diretório'..."
+
+#: src/setting.c:1589
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr "ERRO: A variável de ambiente HOME não está definida!"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "ERRO: Não foi possível criar o diretório '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Entrada truncada ou vazia."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "A entrada não é um bitstream Ogg."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Erro ao ler a primeira página do bitstream Ogg."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Erro ao ler o pacote inicial do cabeçalho."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "O bitstream Ogg não contém dados vorbis."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Cabeçalho secundário corrompido."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF antes do fim dos cabeçalhos vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Dados corrompidos ou faltando, continuando..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Erro ao escrever o stream de saída. O stream de saída pode estar corrompido "
+"ou truncado."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr "A DLL '%s' não foi encontrada. Tente carregá-la..."
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr "A DLL '%s' não pôde ser carregada"
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr "Essa versão de '%s' contém '%s'"
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr "A função '%s não foi encontrada na dll '%s'"
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, c-format
+msgid "Audio player: '%s'"
+msgstr "Reprodutor de áudio: '%s'"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr "Diretório de configurações do EasyTAG: '%s'"
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Versão da etiqueta inválida"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Usar preenchimento"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Preencher as etiquetas ID3v2 para uma gravação mais rápida durante as "
+#~ "próximas modificações na etiqueta."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Sempre salvar as etiquetas no conjunto de caracteres ISO-8859-1"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Usar o conjunto de caracteres ISO-8859-1 (conjunto de caracteres de byte "
+#~ "único) para gravar a etiqueta. Esse conjunto de caracteres pode ser usado "
+#~ "para as etiquetas ID3v2 e ID3v1, mas observe que caracteres não-ISO-8859-"
+#~ "1 serão perdidos.\n"
+#~ "\n"
+#~ "Um conjunto de caracteres diferente será usado caso a opção 'Usar um "
+#~ "conjunto de caracteres fora do padrão para gravar as etiquetas ID3' seja "
+#~ "selecionada.\n"
+#~ "Outras regras também podem ser definidas se alguns caracteres não puderem "
+#~ "ser convertidos."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Tentar salvar as etiquetas em ISO-8859-1. Se não for possível, usar então "
+#~ "o UNICODE (recomendado)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "O conjunto de caracteres UNICODE será usado se a conversão para ISO-8859-"
+#~ "1 falhar. O Unicode pode ser usado para as etiquetas ID3v2 mas não para "
+#~ "as ID3v1 que usam somente um conjunto de caracteres de byte único (por "
+#~ "padrão o ISO-8859-1).\n"
+#~ "\n"
+#~ "Um conjunto de caracteres diferente será usado caso a opção 'Usar um "
+#~ "conjunto de caracteres fora do padrão para gravar as etiquetas ID3' seja "
+#~ "selecionada.\n"
+#~ "Outras regras também podem ser definidas se alguns caracteres não puderem "
+#~ "ser convertidos."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Sempre salvar as etiquetas no conjunto de caracteres UNICODE"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Usar o conjunto de caracteres UNICODE para as etiquetas ID3v2. As "
+#~ "etiquetas ID3v1 sempre são salvas com um conjunto de caracteres de byte "
+#~ "único (por padrão o ISO-8859-1).\n"
+#~ "\n"
+#~ "Um conjunto de caracteres diferente será usado caso a opção 'Usar um "
+#~ "conjunto de caracteres fora do padrão para gravar as etiquetas ID3' seja "
+#~ "selecionada."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "Para os campos em ISO-8859-1, sobrescrever com as seguintes codificações "
+#~ "de caracteres (somente para usuários experientes!): "
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr ""
+#~ "Usar um conjunto de caracteres fora do padrão para ler as etiquetas ID3:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr ""
+#~ "Usar um conjunto de caracteres fora do padrão para gravar as etiquetas "
+#~ "ID3:"
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Esse conjunto de caracteres será usado ao gravar os dados na etiqueta, "
+#~ "para converter cada seqüência salva em um campo ISO-8859-1 na etiqueta "
+#~ "(para etiquetas ID3v2 e/ou ID3v1)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "Para campos em ISO-8859-1, aplicar também estas regras se alguns "
+#~ "caracteres não puderem ser convertidos ao gravar as etiquetas:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Não fazer nada"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr "Forçar o uso da codificação de caracteres e ativar a transliteração"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr ""
+#~ "Forçar o uso da codificação de caracteres e descartar silenciosamente "
+#~ "alguns caracteres"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "O tradução do conjunto de caracteres '%s'\n"
+#~ "para '%s' não é suportado!"
+
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "ERRO ao abrir o arquivo: '%s' (%s)"
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Carregar na inicialização o diretório"
diff --git a/po/ro.gmo b/po/ro.gmo
new file mode 100644
index 0000000..3deb550
--- /dev/null
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..a699113
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,5151 @@
+# Romanian translation of EasyTAG.
+# Copyright (C) 2002-2005 Free Software Foundation, Inc.
+# Pauliuc George <pauliuc@gmx.net>, 2002, 2003, 2004, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 1.99.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2005-04-19 10:07+0200\n"
+"Last-Translator: Pauliuc George <romania@users.sourceforge.net>\n"
+"Language-Team: Romanian <pauliuc@gmx.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Romanian\n"
+"X-Poedit-Country: ROMANIA\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+
+#: src/about.c:122
+#, fuzzy
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG este un utilitar pentru afisarea, modificarea si scrierea "
+"etichtelor fisierelor MP3, MP2, FLAC, Ogg Vorbis, MusePack si Monkey Audio. "
+"Interfata sa simpla (GTK+) face etichetarea mai simpla."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Traducerea germana)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Traducerea rusã)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Traducerea olandezã)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Traducerea suedezã)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Traducerea ungarã)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Traducerea italianã)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Traducerea japonezã)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Traducerea ucrainianã)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Traducerea cehã)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Traducerea spaniolã)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Traducerea polonezã)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Traducerea românã)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Traducerea daneza)"
+
+#: src/about.c:157
+#, fuzzy
+msgid "(Greek translation)"
+msgstr "(Traducerea germana)"
+
+#: src/about.c:158
+#, fuzzy
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Traducerea japonezã)"
+
+#: src/about.c:159
+#, fuzzy
+msgid "(Bulgarian translation)"
+msgstr "(Traducerea ungarã)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(Traducerea japonezã)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Traducerea germana)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Despre..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Despre"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(compilat: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(folosind: GTK+ %d.%d.%d si id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(Suportul pentru FLAC dezactivat)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(Suportul pentru FLAC dezactivat)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(Suportul pentru FLAC dezactivat)"
+
+#: src/about.c:296
+#, fuzzy, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(Suportul pentru FLAC dezactivat)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Suportul pentru Ogg Vorbis dezactivat)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(Suportul pentru FLAC dezactivat)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(Suportul pentru FLAC dezactivat)"
+
+#: src/about.c:317
+#, fuzzy
+msgid "(MP4/AAC file support disabled)"
+msgstr "(Suportul pentru FLAC dezactivat)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(Suportul pentru FLAC dezactivat)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Autor: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Paginã de web: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Descriere:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Mulþumiri"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Traduceri:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "General:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Schimbari"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Nu pot deschide '%s' (%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "Eroare în timpul deschiderii fisierului: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Fisier"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Ordoneaza lista de etichete :"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Ordoneaza lista dupa proprietati"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Crescator dupa numele de fisier"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Descrescator dupa numele de fisier"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Crescator dupa data creatiei"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Descrescator dupa data creatiei"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Crescator dupa numarul pistei"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Descrescator dupa numarul pistei"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Crescator dupa titlu"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Descrescator dupa titlu"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Crescator dupa artist"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Descrescator dupa artist"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Crescator dupa album"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Descrescator dupa album"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Crescator dupa an"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Descrescator dupa an"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Crescator dupa gen"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Descrescator dupa gen"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Crescator dupa comentariu"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Descrescator dupa comentariu"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Crescator dupa compozitor"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Descrescator dupa compozitor"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Crescator dupa artistul initial"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Descrescator dupa artistul initial"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Crescator dupa dreptul de autor"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Descrescator dupa dreptul de autor"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Crescator dupa URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Descrescator dupa URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Crescator dupa numele codorului"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Descrescator dupa numele codorului"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Crescator dupa tipul de fisier"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Descrescator dupa tipul de fisier"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Crescator dupa dimensiunea fisierului"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Descrescator dupa lungimea fisierului"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Ordoneaza lista crescator dupa durata"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Ordoneaza lista descrescator dupa durata"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Ordoneaza lista crescator dupa bitrate"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Ordoneaza lista descrescator dupa bitrate"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Ordoneaza lista crescator dupa rata de esantionare"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Ordoneaza lista descrescator dupa rata de esantionare"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Deschide fisierul(-ele) cu ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Alege toate fisierele"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Deselecteaza toate fisierele"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Inveseaza alegerea"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Sterge fisierul(-ele)..."
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "Primul _fisier"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Primul fisier"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "_Precedentul fisier"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "/Fisier/_Precedentul fisier"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "/Fisier/Urmatorul fisier"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Urmatorul fisier"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "Ultimu_l fisier"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Ultimul fisier"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "Examineaza fi_sierul(-ele)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Examineaza fisierul(-ele)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "Ste_rge eticheta(-ele)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "/Fisier/Ste_rge eticheta(-ele)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "An_uleaza ultimele schimbari"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "An_uleaza ultimele schimbari"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "R_efa ultimele schimbari"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Refa ultimele schimbari"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "S_alveaza fisierul(-ele)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Salveaza fisierul(-ele)"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "_Force Saving File(s)"
+msgstr "Examineaza fi_sierul(-ele)"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "Force Saving File(s)"
+msgstr "Examineaza fisierul(-ele)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Anuleaza ultimele schimbari"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Refa ultimele schimbari"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Iesire"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Iesi"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Navigator"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Mergi în directorul _personal"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Mergi în directorul personal"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Mergi în _directorul implicit"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Mergi în directorul implicit"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Fixeaza _calea curenta ca implicita"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Fixeazã calea curentã ca implicitã"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Arborescenta|Artist-Album"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Redenumeste directorul..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Reîncarcã directorul"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Navigheazã directorul cu ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Pliaza arborele"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Reîmprospateaza arborele"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "_Examinator"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Completeaza eticheta(-ele)..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Completeaza eticheta(-ele)..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Redenumeste fisierul(ele) si directorul..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Redenumeste fisierul(ele) si directorul"
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Prelucreaza cimpurile"
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Prelucreaza cimpurile"
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Diverse"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Cauta _fisierul(-ele)..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Cauta fisierul(-ele)..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "Cauta _baza de date CD..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "Cautare CDDB"
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Încarca numele de fisiere din TXT..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Scriu playlist..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Executã playerul audio"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Setari"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Preferinte..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Preferinte..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Ajutor"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Despre"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Opreºte acþiunea curentã"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "Optiuni ale numelui de _fisier"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Cauta fisierul(ele) in CDDB..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Navigheaza _subdirectoarele"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+#, fuzzy
+msgid "Show Hidden Directories"
+msgstr "Cauta directoarele ascunse"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Arata navigaotrul arborelui / Afiseaza dupa Artist si Album"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Nu pot uni interfata, eroarea a fost: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Gata sã pornesc..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Nouã cale implicitã pentru fiºierele alese"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Confirmãri..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Unele fiºiere au fost modificate dar nu au fost salvate...\n"
+"Doriþi sã le salvez înainte de a schimba directorul?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Calea introdusã nu este validã!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Eroare..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "# Albume"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Eroare: cautind %s, nu am gasit nodul %s in arbore."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Artist"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Albume"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Fisiere"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Mergi în directorul parinte"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Introduceþi un director de navigat."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Arbore"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Artist si Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Redenumeºte directorul"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Redenumeºte directorul '%s' : "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Foloseste masca:"
+
+#: src/browser.c:3217
+#, fuzzy
+msgid "If activated, it will use masks to rename directory."
+msgstr "Daca este activata, lista va fi creata in directorul parinte.."
+
+#: src/browser.c:3236
+#, fuzzy
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Alegeþi sau introduceti un mask folosind codurile (vezi legenda) pentru a "
+"examina numele de fiºiere ºi calea. Folosit pentru a completa cîmpurile "
+"etichetei."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Mask de examinare invalid"
+
+#. Preview label
+#: src/browser.c:3262
+#, fuzzy
+msgid "Rename directory preview..."
+msgstr "Previziualizeazã redenumirea fiºierului"
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Trebuie sã introduceþi un nume de director!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr "Nu pot converti '%s' in codarea fisierului. Alegeti alt nume."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Nu pot redenumi pentru cã acest nume de director existã deja!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nu pot redenumi directorul\n"
+"'%s'\n"
+"în \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Director redenumit"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Program de executat :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Introduceþi programul de executat. O sã primeascã directorul curent ca "
+"parametru."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Deschide fisierul cu ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Introduceþi programul de executat. El va primi fiºierul curent ca parametru."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Trebuie sã introduceþi un nume de fiºier!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr ""
+
+#: src/browser.c:4019 src/misc.c:943
+#, fuzzy, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Nu pot executa %s (%s)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Nu pot porni (fork) alt proces!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Comanda executatã : '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Artist / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Categorie"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Numãrul pistei"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Timp"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "Cautare CD in baza de date"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Cautare automata"
+
+#: src/cddb.c:284
+#, fuzzy
+msgid "Request CD database :"
+msgstr "Cere baza de date FreeDB:"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Cere automat baza CDDB folosit fisierele alese (ordinea e importanta!) "
+"pentru a genera CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr " Opreste cautarea... "
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Cind este activata aceasta optiune, dupa incarcarea cimpurilor, examinatorul "
+"curent va fi rulat (fereastra examinatorului trebuie sa fie deschisa)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Cautare manuala"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Cuvinte :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Introduceþi cuvintele de cãutat (separate de un spaþiu sau '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Cautã în :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Toate cîmpurile"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Altele"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Toate categoriile"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Clasic"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Diverse"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Raggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "ColoanãSonorã"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "inclus: funk, soul, rap, pop, industrial, metal, etc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "filme, spectacole"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "altele care nu se încadreazã în categoriile de mai sus"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " Categorii "
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Rezultate :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Cãutare :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Introduceti cuvintele de cautat in lista de mai jos"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Cauta urmatorul"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Cauta precedentul"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "Afisaza doar liniile rosii/toate liniile"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Deselecteaza toate liniile"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Inverseaza alegerea liniilor"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Alege toate liniile"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Alegeti liniile care se vor aplica listei dvs de fisiere. Toate liniile vor "
+"fi prelucrate daca nu este selectata nici o linie.\n"
+"De asemenea, puteti reordona liniile in aceasta lista inainte sa apasati "
+"butonul \"Aplica\"."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Fixeazã în :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Toate"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Numele fiºierlui"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Titlu"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "An"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Pistã #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# Piste"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Gen"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Ruleaza examinatorul curent pentru fiecare fisier"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr ""
+"Incarca liniile alese sau toate liniile (daca nici una nu a fost aleasa)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Gata sã caut..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr "Album: '%s', artist: '%s', lungime: '%s', an: '%s', gen: '%s', ID '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Inverseaza alegerea"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Ordoneaza lista crescator dupa numar"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Ordoneaza dupa numele pistei"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Rezolv gazda '%s'..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Nu pot rezolva gazda '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Nu pot crea o nouã mufã (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Mã conectez la gazda '%s', port '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Nu mã pot conecta la gazda '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Conectat la gazda '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Primesc datele (%s) ..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Eroare în timp ce ºtergeam eticheta ID3v1 de la '%s' (%s)\n"
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Nu pot crea sau deschide '%s' (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Nu pot deschide '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Trimit cerere ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Nu pot trimite cerere (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Primesc datele ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+#, fuzzy
+msgid "The server returned a wrong answer!"
+msgstr "Serverul a intors un raspuns gresit! (%s)"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Serverul a intors un raspuns gresit! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Regret, cautarea web este inaccesibila"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Am gãsit %d album(e)"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Primesc datele (%s) ..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Primesc datele (%s) ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Nici un fisier ales!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d fisier(e) alese!"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Gata sã caut..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Trimit cererea (CddbId: %s, #piste: %d, Lungime disc: %d)..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Am gãsit %d album(e)"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Nu pot deschide '%s' (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Încarc lista de piste a albumului"
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Atentie, adaugati %d linii din rezultatele CDDB la %d linii in lista de "
+"fisiere!\n"
+"\n"
+"Continuati?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Scrie eticheta din CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arab (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arab (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arab (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltic (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltic (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Baltic (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtic (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Central-european (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Central-european (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Central-european (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinezã simplificatã (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinezã simplificatã (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinezã tradiþionalã (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinezã tradiþionalã (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Chirilic (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Chirilic (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Chirilic (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Chirilic (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Chirilic (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Chirilic/Rusã (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Chirilic/Ucrainianã (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Englezã (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Greacã (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Greacã (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Ebraicã (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Ebraicã (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japonezã (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonezã (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonezã (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Coreanã (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordicã (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Sud-europeanã (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Tailandezã (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Turcã (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turcã (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Turcã (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamezã (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamezã (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Ebraicã vizualã (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Vestic (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Vestic (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Vestic (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Vestic (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "Unicode invalid(UTF-8)"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Pornesc EasyTAG %s (Pld: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Folosesc id3lib versiunea %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Folosesc id3lib versiunea %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Redenumesc fiºierul '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr ""
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s de %s (compilat %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Paginã de web: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Navigator"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Fiºier"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Fiºier doar citire"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Legãturã fiºier incorectã"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Strat ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Bitrate:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Frecvenþã:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Mod:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Lungime:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Timp:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Etichetã"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Comun"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Titlu:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Eticheteaza fisierele alese cu titlul acesta"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Artist:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Eticheteaza toate fisierele cu artistul acesta"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Eticheteaza fisierele alese cu albumul acesta"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Eticheteaza fisierele alese cu acest numar de disc"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "An:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Eticheteaza fisierele alese cu anul acesta"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Numara pistele alese secvential. Porneste de la 01 în fiecare subdirector"
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Pistã #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Alegeti numarul de fisiere, din acelasi director cu fisierul afisat, pentru "
+"pistele alese"
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Eticheteaza fisierele alese cu acest numar de piste"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Gen"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Eticheteaza fisierele alese cu acest gen"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Comentariu:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Eticheteaza fisierele alese cu acest comentariu"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Compozitor:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Eticheteaza fisierele alese cu acest compozitor"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Artist initial:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Eticheteaza toate fisierele cu artistul initial acesta"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Drept de autor:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Eticheteaza toate fisierele cu 'dreptul de autor' acesta"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Eticheteaza fisierele alese cu URL-ul acesta"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Codor:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Eticheteaza fisierele alese cu acest codor"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Imagini"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Imagini:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Puteti folosi 'drag and drop' pentru a adauga o imagine."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Eticheteaza fisierele alese cu aceste imagini"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Sterge imaginile alese sau toate imaginile."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Adauga imagini etichetei ('drag and drop' este disponibil)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Salveaza imaginile alese pe hard disc"
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Alegeti proprietatile imaginilor alese."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Fisierele alese etichetate cu titlul '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Sters titlul din fisierele alese."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Toate fisierele etichetate cu artistul '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Sters artistul din toate fisierele."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Fisierele alese etichetate cu albumul '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Sters albumul din fisierele alese."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Fisierele alese etichetate cu numarul de disc '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Sters numarul de disc din fisierele alese."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Fisierele alese etichetate cu anul '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Sters anul din fisierele alese."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Fisierele alese etichetate cu pista 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Fisierele alese etichetate cu pista 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Sters numarul pistei din fisierele alese."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Pistele alese etichetate secvential."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Fisierele alese etichetate cu genul '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Sters genul din fisierele alese."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Fisierele alese etichetate cu comentariul '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Sters comentariul din fisierele alese."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Fisierele alese etichetate cu compozitorul '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Sters compozitorul din fisierele alese."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Toate fisierele etichetate cu artistul initial '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Sters artistul intial din toate fisierele."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Toate fisierele etichetate cu 'dreptul de autor' '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Sters 'dreptul de autor' din toate fisierele."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Fisierele alese etichetate cu URL '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Sters URL din fisierele alese."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Fisierele alese etichetate cu codorul '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Sters codorul din fisierele alese."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Fisierele alese etichetate cu imagini '%s'."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Sters imaginile din fisierele alese."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Alegeþi modul ºi masca ºi refã aceeaºi actiune"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Toate etichetele au fost examinate"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Toate etichetele au fost ºterse"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Toate fiºierele au fost salvate..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Fiºierele au fost parþial salvate..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Fisierele au fost partial sterse..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Toate fisierele au fost sterse..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Doriþi sã scrieþi eticheta fiºierului\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Scriu eticheta..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+#, fuzzy
+msgid "Rename File and Directory..."
+msgstr "Redenumeste fisierul si directorul"
+
+#: src/easytag.c:2475
+#, fuzzy, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Doriþi sã redenumiþi fiºierul \n"
+"'%s'\n"
+"în \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+#, fuzzy
+msgid "Rename Directory..."
+msgstr "Redenumeste directorul..."
+
+#: src/easytag.c:2481
+#, fuzzy, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Doriþi sã redenumiþi fiºierul \n"
+"'%s'\n"
+"în \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Redenumeºte fiºierul..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Doriþi sã redenumiþi fiºierul \n"
+"'%s'\n"
+"în \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Scriu eticheta la '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Eticheta(le) scris(e)"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Nu pot scrie eticheta în fiºierul '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Redenumesc fiºierul '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nu pot redenumi fiºierul '%s'\n"
+" în \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Fiºierul(ele) neredenumite..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Nu pot redenumi fiºierul\n"
+"'%s'\n"
+"pentru cã urmãtorul fiºier deja existã:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nu pot crea directorul\n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Fiºier redenumit '%s' în '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Fisierul(ele) redenumite..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, fuzzy, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nu pot citi directorul :\n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, fuzzy, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Fiºier redenumit '%s' în '%s'\n"
+
+#: src/easytag.c:2877
+#, fuzzy
+msgid "File(s) moved..."
+msgstr "Fisierul(ele) redenumite..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, fuzzy, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Nu pot redenumi fiºierul '%s'\n"
+" în \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+#, fuzzy
+msgid "File(s) not moved..."
+msgstr "Fiºierul(ele) neredenumite..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Sigur doriti sa stergeti definitiv fisierul\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "ªterge fiºierul..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Fisierul '%s' a fost sters"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Nu pot citi directorul :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Cãutare în curs..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Fiºier: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Gasit %d fisier(e) în acest director si subdirectoare."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Gasit %d fisier(e) în acest director."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u fisier(e)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Nici un fiºier nu a fost gãsit în acest director ºi subdirectoare!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Nici un fiºier nu a fost gãsit în acest director!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Caut..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " Opreºte cãutarea... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Alegeþi un director de navigat!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Eticheteaza fisierele alese cu titlul acesta"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Schimbã '_' ºi '%20' în spaþii"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Schimbã ' ' în '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Toate majuscule"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Toate minuscule"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Prima literã majusculã"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Prima literã a fiecãrui cuvînt majusculã"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "ªterge spaþiile"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Introdu spaþiu înainte de majusculã"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "ªterge spaþiile si underscores multiple"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Ieºire anormalã! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "Primit semnalul %s (%d)\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+#, fuzzy
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Probabil ati gasit o problema cu EasyTAG. Va rog sa trimiteti un raport cu "
+"gdb backtrace ('gdb easytag core' apoi 'bt') la easytag@gmail.com\n"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Semnal necunoscut"
+
+#: src/easytag.c:4452
+#, fuzzy
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Folosire: easytag [optiune] \n"
+" sau: easytag [director]\n"
+"\n"
+"Optiuni:\n"
+"--------\n"
+"-h, --help Afisaza acest text si iesi\n"
+"-v, --version Afisaza informatii de baza si iesi\n"
+"\n"
+"Director:\n"
+"---------\n"
+"/calea_spre/fisiere Folositi o cale absoluta pentru a încarca\n"
+"., ./ Încarca directorul curent\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Ieºire normalã."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Unele fiºiere au fost modificate dar nu ºi salvate...\n"
+"Doriþi sã le salvez înainte de ieºire?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " Sigur vreþi sã ieºiti din program? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "Etichetã ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Eticheta Ogg Vorbis"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "Eticheta FLAC Vorbis"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "Eticheta APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr ""
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "Fiºier MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "Fiºier MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Fiºier Ogg Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Urmatorul fisier"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "Fiºier FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "Fisier MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Fisier Monkey's Audio"
+
+#: src/et_core.c:2593
+#, fuzzy
+msgid "MP4/AAC File"
+msgstr "Fiºier MP2"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "Fisier MusePack"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Imagini"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Nu pot converti numele de fisier: '%s'\n"
+"in codarea sistemului de fisiere\n"
+"(Incercati sa modificati variabila de mediu G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Optiuni ale conversiei numelui de fisier"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr ""
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Codor:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+#, fuzzy
+msgid "Channels:"
+msgstr "Schimbari"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"Eroare în timpul deschiderii fisierului: '%s' (%s).\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "Eroare: Am eºuat sã scriu comentariile în fiºierul '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Eticheta de la '%s' scrisã"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "ªters eticheta de la '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Eroare în timp ce ºtergeam eticheta ID3v1 de la '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Eroare în timp ce ºtergeam eticheta ID3v2 de la '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Eroare în timp ce actualizam eticheta ID3v2 de la '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Eroare în timp ce actualizam eticheta ID3v1 de la '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Eticheta de la '%s' actualizatã"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Fãrã erori"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Nu este destulã memorie"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Nici o informaþie de examinat"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Date incorect formatate"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Nici o memorie tampon în care sã scriu"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Memoria tampon este prea micã"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Frame ID incorect"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Cîmpul cerut negasit"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Tip de cîmp necunoscut"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Eticheta este deja ataºatã unui fiºier"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Versiune de etichetã incorectã"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Nici un fiºier de examinat"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Încercare de scriere a unui fiºier disponibil doar pentru citire"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Eroare la compresie/decompresie"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Mesaj de eroare necunoscut!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+
+#: src/id3_tag.c:1214
+#, fuzzy
+msgid "Corrupted file..."
+msgstr "Salvati fisierul..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " OK "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " Da "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " Nu "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " Aplica "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " Salveazã "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " Anuleazã "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " Închide "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " Scrie "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " Executã "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " Cautã "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " Navigheazã... "
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Alegeþi directorul..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Alegeþi fiºierul..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "Caut..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Nu pot executa %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Genereazã un playlist"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "Numele M3U playlist"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Foloseºte numele de director"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Modificã mask"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Opþiuni playlist"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Include doar fisierele alese"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Daca se activeaza doar fisierele alese vor fi scrise in \"playlist\". Altfel "
+"toate vor fi scrise."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Foloseºte calea completã pentru fiºierele din playlist"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Foloseºte calea relativã pentru fiºierele din playlist"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Creaza playlist in directorul parinte"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr "Daca este activata, lista va fi creata in directorul parinte.."
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Foloseste separatorul de directoare din DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"Aceasta optiune schimba separatorul de directoare UNIX '/' in separatorul "
+"DOS '\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Conþinutul playlist"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Listã de fiºiere disponibile doar pentru scriere"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Scrie informaþiile folosind numele de fiºier"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Scrie informaþiile folosind :"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Fiºierul playlist '%s' existã deja!\n"
+"Suprascriu?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Scriu playlist..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Nu pot scrie fiºierul playlist '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Am scris fiºierul playlist '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Pistã"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Comentariu"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Compozitor"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Artist initial"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Drept de autor"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Codor"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Cautã un fiºier"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Introduceti cuvintul de cautat in fisiere. Sau nu scrieti nimic pentru a "
+"afisa toate fisierele."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "În :"
+
+#: src/misc.c:1985
+#, fuzzy
+msgid "the File Name"
+msgstr "Nume de fiºier"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+#, fuzzy
+msgid "the Tag"
+msgstr "Scriu eticheta..."
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Cu majuscule seminifcative"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Gasit : %d fiºier(e)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Încarcã numele de fiºier dintr-un fiºier TXT"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Fiºier :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Încarcã "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Conþinutul fiºierului încarcat :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Lista numelor de fiºiere :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"Cind este activata aceasta optiune, dupa incarcarea numelor de fisier, "
+"examinatorul curent va fi rulat (fereastra examinatorului trebuie sa fie "
+"deschisa)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Introdu o linie goalã"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "ªterge aceastã linie"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "ªterge toate liniile goale"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Reîncarcã"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr ""
+
+#: src/mp4_header.c:131
+#, fuzzy
+msgid "Unknown"
+msgstr "Imagine necunoscuta"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr ""
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, fuzzy, c-format
+msgid "~%d kb/s"
+msgstr "%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Repetã acþiunea pentru celelalte fiºiere"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Fluxul Ogg nu conþine date vorbis."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "Eroare: Am eºuat sã deschis fiºierul: '%s' ca vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Atentie: Fisierul Ogg Vorbis '%s' contine o eticheta ID3V2."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Adauga imagini"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Toate fisierele"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG si JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Proprietatile imaginii %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Tipul imaginii"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Descriere imagine:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Salveaza imaginea %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Acest fisier deja exista: \n"
+"'%s'\n"
+"Vreti sa suprascrieti?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Salvati fisierul..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "Imagine JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "Imagine PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Imagine necunoscuta"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "Icon PNG de 32x32 pixeli"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Alt icon"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Coperta (fata)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Coperta (spate)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Pagina brosura"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Media (ex. cotorul CD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Artistul de baza/solo"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Artist/interpret"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Dirijor"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Formatie/Orchestra"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Versuri/textier"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Locul inregistrarii"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "In timpul inregistrarii"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "In timpul spectacolului"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Captura de ecran"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Un peste colorat intens"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Ilustratie"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Emblema formatie/artist"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Emblema distribuitor/studio"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Tip de imagine necunoscut"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "pixeli"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Tip"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Descriere"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr ""
+
+#: src/picture.c:1080
+#, fuzzy, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr "Nu pot deschide '%s' (%s)\n"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr ""
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Preferinþe..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Navigator de fiºiere"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Mergi în directorul implicit"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Specifcaþi directorul în care se aflã fiºierele. Calea va fi încãrcatã cînd "
+"EasyTAG porneºte fãrã parametru."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Automat cautã fiºierele, cînd EasyTAG porneºte, în urmãtoarele directoare. "
+"De remarcat: calea poate fi datã de parametrul dat easytag (easytag /"
+"calea_spre/fiºierele_mp3)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Cautã subdirectoarele"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr ""
+"Cautã subdirectoarele pentru fiºiere cînd deschid un director in arbore."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Aratã subdirectoarele cînd aleg un director"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Aceasta extinde nodul ales în navigatorul de fiºiere pentru a afiºa "
+"subdirectoarele."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Cauta directoarele ascunse"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+"Cauta subdirectoarele pentru fisiere cînd deschid un director in arbore."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Interfaþa cu utilizatorul"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Aratã informaþiile din antetul fiºierului"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Dacã este activatã, informaþiile despre fiºier cum ar fi bitrate, timpul, "
+"lungimea vor fi afiºate sub numele de fiºier."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr ""
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr ""
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr ""
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Optiunile de ordonare a listei"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Ordoneazã lista de fiºiere :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Crescãtor dupã numele de fiºier"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Descrescãtor dupã numele de fiºier"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Crescãtor dupã numãrul pistei"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Descrescãtor dupã numãrul pistei"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Crescãtor dupã data creaþiei"
+
+#: src/prefs.c:305
+#, fuzzy
+msgid "Descending creation date"
+msgstr "Descrescator dupa data creatiei"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Crescãtor dupã titlu"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Descrescãtor dupã titlu"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Crescãtor dupã artist"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Descrescãtor dupã artist"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Crescãtor dupã album"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Descrescãtor dupã album"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Crescãtor dupã an"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Descrescãtor dupã an"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Crescãtor dupã gen"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Descrescãtor dupã gen"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Crescãtor dupã comentariu"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Descrescãtor dupã comentariu"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Alegeþi tipul de ordonare a fiºierelor la încãrcarea unui director."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "Dacã este activatã, ordonarea listei va fi þine seama de majuscule."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Poziþia ferestrei de dialog"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Nici o poziþie aleasã"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Lasã administratorul de ferestre sã poziþioneze ferestrele."
+
+#: src/prefs.c:350
+#, fuzzy
+msgid "Center of the main window"
+msgstr "Centrul ecranului"
+
+#: src/prefs.c:354
+#, fuzzy
+msgid "Windows should be placed in the center of the main window."
+msgstr "Ferestrele ar trebui poziþionate în centrul ecranului."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Centrul ecranului"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Ferestrele ar trebui poziþionate în centrul ecranului."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Poziþia cursorlui"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Ferestrele ar trebui poziþionate la pozitia curentã a cursorului"
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Player pentru fisiere audio"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Player de rulat:"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Introduceþi programul folosit sã ruleze fiºierele. Unele argumente pot fi "
+"transferate programului (ca 'xmms -p') înainte sã primeascã fiºierele ca "
+"argumente."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+#, fuzzy
+msgid "File Settings"
+msgstr "_Setari"
+
+#. File (name) Options
+#: src/prefs.c:426
+#, fuzzy
+msgid "File Options"
+msgstr "Opþiuni ale numelui de fiºier"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr ""
+"Înlocuieste caracterele gresite din numele de fisier (pentru Windows si CD-"
+"ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Schimba caracterele nepermise pentru sistemul de fisiere al windows ('\\', "
+"':', '*', '?', '\"', '<', '>', '|') din numele de fisiere pentru a evita "
+"problemele cînd redenumiti fisierul. Aceasta este folositoare cînd se "
+"redenumeste fisierul cu informatia din eticheta de catre examinator."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Conversie extensie de fisier la:"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Minuscule"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "De ex. extensia va fi convertita la '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Majuscule"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "De ex. extensia va fi convertita la '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Nici o schimbare"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "Extensia nu va fi convertita"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr ""
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+
+#. Character Set for File Name
+#: src/prefs.c:473
+#, fuzzy
+msgid "Character Set for File Name"
+msgstr "Setul de caractere pentru etichetele ID3"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr ""
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Setari etichete"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Opþiunile etichetei"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Autocompletarea datelor daca nu sint complete"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Încearcã sã completezi cîmpul anului dacã introduc doar ultimele cifre ale "
+"datei (de ex., daca anul curent este 2005: 5 => 2005, 4 => 2004, 6 => 1996 "
+"95 => 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Scrie cîmpul pistei cu urmatorul numar de cifre :"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Daca este activata, cîmpul pista este scris folosind numarul '0' in "
+"completare pentru a obtine un numar cu 'n' cifre (Ex. cu doua cifre : '05, "
+"'09', '10',...). Altfel pastreaza valoarea 'bruta' a pistei."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Fiºiere Ogg Vorbis : scrie comentariul ºi în formatul XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS nu foloseºte corect identificatorul de comentariu din fiºierele Ogg "
+"Vorbis aºa cum fac celelate aplicaþii. De fapt, acest cîmp este în mod "
+"normal etichetat cu 'comment=', iar XMMS foloseºte doar '='. Va rog sã "
+"debifati aceastã opþiune dacã nu vreþi ca celelalte aplicaþii sã se plingã "
+"de un cîmp necunoscut. Comentariile nu o sã aparã în XMMS însã."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr ""
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+#, fuzzy
+msgid "ID3 Tag Settings"
+msgstr "Setari etichete"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Regulile etichetei ID3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Scrie etichete ID3 in fisierele FLAC cu etichete FLAC"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Daca este activata, o eticheta ID3v1 va fi adaugata sau actualizata la "
+"sfîrsitul fisierelor MP3. Altfel va fi stearsa."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Sterge etichetele dacã toate cîmpurile sînt goale"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Pentru cã etichetele ID3v2 pot conþine ºi alte date decît titlu, artist, "
+"album, an, pistã, gen sau comentariu (cum ar fi o imagine ataºatã, versuri, "
+"etc.), aceastã opþiune permite ºtergerea întregii etichete cînd cele ºapte "
+"cîmpuri standard sînt goale."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Schimbã automat versiunile vechi de etichete ID3v2"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Dacã este activatã, o veche versiune de etichetã ID3v2 (cum ar fi ID3v2.2) "
+"va fi actualizatã la versiunea ID3v2.3."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Scrie etichetã ID3v2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Setul de caractere pentru etichetele ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Scrie etichetã ID3v2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Scrie etichetã ID3v2"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Dacã este activatã, o etichetã ID3v2 va fi adãugatã sau actualizatã la "
+"începutul fiºierelor MP3. Altfel eticheta va fi ºtearsã."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Descriere:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Codor"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Setul de caractere folsit pentru a scrie etichetele in fisier."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " Nu "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "Etichetã ID3"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Scrie etichetã ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Dacã este activatã, o etichetã ID3v1 va fi adãugatã sau actualizatã la "
+"sfîrºitul fiºierelor MP3. Altfel va fi ºtearsã."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Setul de caractere folsit pentru a scrie etichetele in fisier."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Setul de caractere pentru etichetele ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr ""
+"Setul de caractere folsit pentru a citi informatiile din etichete din fisier."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Examinator"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Schimba caracterele"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Schimbã '_' ºi '%20' în spaþii ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Schimbã spaþiile în '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Daca este activata, aceasta conversie va fi folosita cind se aplica masca "
+"examinatorului de etichete."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Schimba caracterele"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Daca este activata, conversia va fi folosita cind se aplica masca "
+"examinatorului de fisiere."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Process Fields Scanner - Character Conversion"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+
+#: src/prefs.c:994
+#, fuzzy
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Nu converti prima litera a cuvintelor cum ar fi prepozitiile, articolele, "
+"etc cind este folosit examinatorul 'Prima litera majuscula in fiecare "
+"cuvint'."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Fereastra examinatorului"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Deschide fereastra examinatorului la pornire"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Activaþi aceastã opþiune pentru a deschide automat freastra examinatorului "
+"cînd EasyTAG este pornit."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Fereastra examinatorului tot timpul deasupra"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Dacã este activatã, fereastra care conþine mask va fi tot timpul peste "
+"fereastra principalã."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Cîmpuri"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Suprascrie cîmpurile cînd examinezi etichetele"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Dacã este activatã, examinatorul va înlocui textul existent în cîmpuri cu "
+"noul text. Dacã este dezactivatã, numai cîmpurile goale ale etichetei vor fi "
+"completate."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Fixeazã acest text drept comentariu implicit :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Activaþi aceastã opþiune dacã vreþi sã puneþi urmãtorul ºir în cîmpul "
+"comentariu cînd folosiþi 'Completeazã eticheta'."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+"Foloseste CRC32 drept comentariu implicit (numai pentru fisierele cu "
+"etichete ID3)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Activati aceasta optiune daca vreti sa puneti urmatorul sir în cîmpul "
+"comentariu cînd folositi 'Completeaza eticheta'."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "Baza de date CD"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+#, fuzzy
+msgid "Server Settings for Automatic Search"
+msgstr "Cautare automata"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Nume :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Port :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "Calea CGI :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "Setãri server"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "Baza de date CD"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "Calea CGI :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Setãri proxy"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Foloseºte proxy"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Fixeazã active setãrile serverului proxy."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Nume gazda :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Numele serverlui proxy."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Portul serverlui proxy"
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Nume utilizator:"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Numele utilizatorului serverlui proxy."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Parola utilizatorului:"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Parola utilizatorului serverlui proxy."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Lista numelor de pista"
+
+#: src/prefs.c:1305
+#, fuzzy
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr "Alegeti fisierul corespondent (conform cu pozitia sau DLM)"
+
+#: src/prefs.c:1309
+#, fuzzy
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Daca este activata, cind alegeti o linie in lista numelor de piste, fisierul "
+"corespunzator in lista principala va fi ales de asemenea."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Confirmãri"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Confirmã ieºirea din program"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Dacã este activatã, deschide o fereastrã de dialog sã cearã confirmarea "
+"înainte de pãrasirea programului."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Confirmã scrierea etichetei fiºierului"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Confirmã redenumirea fiºierului"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Confirma stergerea fisierului"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Confirmã scrierea playlist"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Aplicã modificãrile (dar nu salva) ºi închide aceastã fereastrã"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Închide fereastra fãrã sã salvezi"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Salveazã schimbãrile ºi închide fereastra"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr ""
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Schimbãrile aplicate"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Configuraþia salvatã"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Configuraþia neschimbatã"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" Calea aleasã pentru 'Calea implicitã spre fiºierele' nu este corectã!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Nu este director"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr ""
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Completeazã eticheta"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Redenumeste fisierul si directorul"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Prelucreazã fiºierele"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Eticheta examinatã cu succes..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Eticheta examinata cu succes...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Eroare la examinare: nu pot gãsi separatorul '%s' în '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+"Nu am putut converti numele de fisier '%s' in codarea sistemului de fisiere."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Noul nume de fiºier examinat cu succes..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Noul nume de fiºier examinat cu succes...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Examinarea etichetei ºi numelui de fiºier"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Examinator :"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Alegeþi tipul de examinator"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Deschide fereastra examinatorului / Examinati fisierele alese"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Opþiunile examinatorului"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Aratã / ascunde editorul mask"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Aratã / ascunde legenda"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Închide aceastã fereastrã"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Alegeþi sau introduceti un mask folosind codurile (vezi legenda) pentru a "
+"examina numele de fiºiere ºi calea. Folosit pentru a completa cîmpurile "
+"etichetei."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Completeaza previzualizarea etichetei..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Pune calea actuala inaintea mastii"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Alegeti sau introduceti o masca utilizind codurile (v. Legenda) pentru a "
+"parcurge cimpurile etichetelor. Folosit pentru a redenumi fisierul.\n"
+"Folositi / pentru a crea directoare. Daca primul caracter este / va fi o "
+"cale absoluta, altfel este relativ la vechea cale."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Previziualizeazã redenumirea fiºierului"
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Alegeþi cîmpurile:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Butoantele de pe dreapta reprezintã cîmpurile care pot fi prelucrate. "
+"Alegeþi acelea care vã intereseazã."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Prelucrez cîmpul nume de fiºier"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Prelucrez cîmpul titlu"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Prelucrez cîmpul artist"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Prelucrez cîmpul album"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Prelucrez cîmpul gen"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Prelucrez cîmpul comentariu"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Prelucrez cîmpul compozitor"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Prelucrez cîmpul artist initial"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Prelucrez cîmpul 'drept de autor'"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Prelucrez cîmpul URL"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Prelucrez cîmpul nume de codor"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Inveseazã alegerea"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Alege/dealege toate."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Schimbã '_' ºi '%20' în ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Conversie :"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "la : "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Caracterul '_' sau ºirul '%20' sînt înlocuite de un spaþiu. Exemplu, "
+"înainte: 'Text%20Introdus_înainte', dupã: 'Text Introdus înainte'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Spaþiul este înlocuit de un '_'. Examplu, înainte: 'text introdus', dupã: "
+"'text_introdus'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Inlocuiti caracterul cu un altul."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Schimbã toate cuvintele în toate cîmpurile în majuscule. Exemplu, înainte "
+"'Text INTROUDS', dupã: 'TEXT INTRODUS'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Schimbã toate cuvintele în toate cîmpurile în minuscule. Exemplu, înainte: "
+"'TEXT Înainte', dupã: 'text înainte'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Schimbã iniþiala primului cuvînt în toate cîmpurile în majusculã. Exemplu "
+"înainte: 'tEXt înainte', dupã: 'Text Înainte'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Schimbã iniþiala fiecãrui cuvînt în toate cîmpurile în majusculã. Exemplu "
+"înainte: 'tEXt înainte', dupã: 'Text Înainte'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Introdu un spaþiu înainte de o majusculã"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "ªterge spaþiile sau '_' multiple"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Toate paþiile dintre cuvinte sã fie ºterse. Exemplu, înainte: 'Text "
+"Înainte', dupã: 'TextÎnainte'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Un spaþiu este introdus înainte de fiecare majusculã. Exemplu, înainte: "
+"'TextÎnainte', dupã: 'Text Înainte'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Spaþiile sau '_' multiple sînt ºterse. Exemplu, înainte: 'Text__Înainte', "
+"dupã: 'Text_Înainte'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Legendã"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : artist"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : comentariu"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%c : compozitor"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r: drept autor"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr ""
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e: codat de"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : gen"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ignorat"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : numãr de piste"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%a : artist initial"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : pistã"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : titlu"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : an"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Editor de mãºti"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Creazã o mascã nouã"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Mutã sus aceastã mascã"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Mutã jos aceastã mascã"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Copiazã masca"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Adaugã o mascã implicitã"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "ªterge masca"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Salveazã masca"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Mascã nouã"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Copiazã: Nici un rînd ales!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "ªterge: Nici un rînd ales!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Mutã sus: Nici un rînd ales!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Mutã jos: Nici un rînd ales!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "Eroare: Nu pot scrie fisierul configuratie: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Nu pot deschide fiºierul configuraþie '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Încarc configuraþia implicitã..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Nu pot crea sau deschide '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+"Eroare: Nu pot scrie lista în fisier: %s (%s)\n"
+""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Încarc mask 'Completeazã eticheta' implicit..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Încarc mask-ul 'Redenumeºte fiºierul' implicit..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+#, fuzzy
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Încarc mask-ul 'Redenumeºte fiºierul' implicit..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"Eroare: Variabila de mediu $HOME nu este definitã!\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "Eroare: Nu pot crea directorul '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Intrarea truchiatã sau goalã."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Intrarea nu este un flux Ogg."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Eroare la citirea primei pagini a fluxului Ogg."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Eroare la citirea pachetului antet iniþial."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Fluxul Ogg nu conþine date vorbis."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Antet secundar incorect."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF înainte de sfîrºitul anteletolor vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Date incorete sau lipsã, continui..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Eroare la scrierea fluxului la ieºire. Fluxul de ieºire poate fi incorect "
+"sau trunchiat."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "Executã playerul audio"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Versiune de etichetã incorectã"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Foloseste completarea"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Completeaza etichetele ID3v2 pentru scriere mai rapida la urmatoarele "
+#~ "schimbari in eticheta."
+
+#, fuzzy
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr ""
+#~ "Foloseste setul de caractere ISO-8859-1 standard pentru etichetele ID3 "
+#~ "(recomandat)"
+
+#, fuzzy
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr ""
+#~ "Foloseste setul de caractere ISO-8859-1 standard pentru etichetele ID3 "
+#~ "(recomandat)"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "Schimbarea setului de caractere de la '%s'\n"
+#~ "la '%s' nu este suportatã!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "Eroare în timpul deschiderii fisierului: '%s' (%s).\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Încarcã la pornire directorul"
+
+#~ msgid "#:"
+#~ msgstr "#:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "Fixeazã fundal galben pentru ponturi"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "Daca este activatã, fundalul ponturilor va fi colorat în galben, neþinînd "
+#~ "seama de administratorul de ferestre."
+
+#, fuzzy
+#~ msgid "Can't execute %s (%d)!\n"
+#~ msgstr "Nu pot executa %s (%s)!\n"
+
+#~ msgid "Set new style for displaying list items"
+#~ msgstr "Alegeti un nou stil pentru afisarea listelor"
+
+#~ msgid ""
+#~ "If activated, items in list will be styled black and bold instead of red "
+#~ "and gray (example : for changed and not saved files)."
+#~ msgstr ""
+#~ "Daca este activat, elementele listei vor fi negre si ingrosate in loc de "
+#~ "rosu si gri (ex. pentru fisiere modificate si nesalvate)."
+
+#~ msgid "Save _Configuration Now"
+#~ msgstr "Salveaza _configuratia acum"
+
+#~ msgid "Save Configuration Now"
+#~ msgstr "Salveaza configuratia acum"
+
+#~ msgid "Set main window size"
+#~ msgstr "Fixeazã dimensiunea ferestrei principale"
+
+#~ msgid "Width :"
+#~ msgstr "Lãþime :"
+
+#~ msgid "Height :"
+#~ msgstr "Înãlþime :"
+
+#~ msgid " Get current size "
+#~ msgstr " Obþine dimensiunea curentã "
+
+#~ msgid ""
+#~ "Specify the default size for the main window. You must restart the "
+#~ "program to apply the new size. For your display, the max values are: "
+#~ "width=%d and height=%d."
+#~ msgstr ""
+#~ "Specificaþi dimensiunea implicitã pentru fereastra principalã. Trebuie sã "
+#~ "reporniþi programul pentru a aplica noua dimensiune. Pentru ecranul dvs., "
+#~ "valorile maxime sînt: lãþime=%d ºi înãlþime=%d."
+
+#~ msgid "Width: set -1 for automatic size"
+#~ msgstr "Lãþimea: alegeþi -1 pentru dimensionarea automatã"
+
+#~ msgid "Heigth: set -1 for automatic size"
+#~ msgstr "Înãlþimea: alegeþi -1 pentru dimensionarea automatã"
+
+#~ msgid "Set vertical right pane handle position"
+#~ msgstr "Alegeti pozitia panoului vertical din dreapta"
+
+#~ msgid "Position :"
+#~ msgstr "Poziþia :"
+
+#~ msgid " Get current position "
+#~ msgstr " Obþine poziþia curentã "
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser frame and the tag frame. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Specificati pozitia implicita pentru panoul aflat intre rama "
+#~ "navigatorului si rama etichetei. Modificarile vor fi aplicate la "
+#~ "urmatoarea pornire."
+
+#~ msgid "Position: set -1 for automatic positioning"
+#~ msgstr "Poziþia: alegeþi -1 pentru poziþionarea automatã"
+
+#~ msgid "Set vertical left pane handle position"
+#~ msgstr "Alegeti pozitia panoului vertical din stinga"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser tree and the list of files. Changes will be applied the next "
+#~ "start."
+#~ msgstr ""
+#~ "Specificati pozitia implicita pentru panoul aflat intre arborele "
+#~ "navigatorului si lista de fisiere. Modificarile o sa fie aplicate la "
+#~ "urmatoarea pornire."
+
+#~ msgid "Set horizontal pane handle position"
+#~ msgstr "Alegeti pozitia panouluiorizontal"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "artist list and album list. Changes will be applied the next start."
+#~ msgstr ""
+#~ "Specificati pozitia implicita pentru panoul aflat intre lista cu artisti "
+#~ "si lista de albume. Modificarile o sa fie aplicate la urmatoarea pornire."
+
+#~ msgid "Set scanner window position"
+#~ msgstr "Fixeazã poziþia ferestrei examinatorului"
+
+#~ msgid ""
+#~ "If activated, the scanner window will appear at the specified coordinates "
+#~ "relative to the main window. Use it if you want to keep the same position "
+#~ "of the scanner window each times you open it. If deactivated, the window "
+#~ "manager determines the position."
+#~ msgstr ""
+#~ "Dacã este activatã, fereastra examinatorului va apãrea la coordonatele "
+#~ "specificate, relativ la fereastra principalã. Folosiþi aceastã opþiune "
+#~ "pentru a pãstra aceeaºi poziþie a ferestrei examinatorului de fiecare "
+#~ "datã cînd o deschideþi. Dacã o dezactivaþi, administratorul de ferestre "
+#~ "va fixa poziþia."
+
+#~ msgid "X :"
+#~ msgstr "X :"
+
+#~ msgid "Y :"
+#~ msgstr "Y :"
+
+#~ msgid "CD Data Base Window"
+#~ msgstr "Fereastra bazei de date CD"
+
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "Fixeaza dimensiunea ferestrei CDDB"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "Specificã dimensiunea implicitã pentru fereastra CDDB."
+
+#~ msgid "Set pane handle position"
+#~ msgstr "Alegeti potizia panoului"
+
+#~ msgid "Specify the default position for the pane handle in the CDDB window."
+#~ msgstr "Specificati pozitia implicita pentru panoul ferestrei CDDB."
+
+#~ msgid " Window height (%d) is bigger than screen height (%d)! "
+#~ msgstr ""
+#~ " Înãlþimea ferestrei (%d) este mai mare decît înalþimea ecranului (%d)! "
+
+#~ msgid "Size Error..."
+#~ msgstr "Eroare de dimensiune..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr "Lãþimea ferestrei (%d) este mai mare decît lãþimea ecranului (%d)! "
+
+#~ msgid "The scanner window must be open to get its current position!"
+#~ msgstr ""
+#~ "Fereastra examinatorului trebuie sã fie deschisã pentru a-i obþine "
+#~ "poziþia curentã"
+
+#~ msgid "The CDDB window must be open to get its current position!"
+#~ msgstr ""
+#~ "Fereastra CDDB trebuie sã fie deschisã pentru a-i obþine poziþia curentã!"
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "Salveazã configuraþia înainte de ieºirea din program"
+
+#~ msgid ""
+#~ "If activated, the configuration will be automatically saved before "
+#~ "exiting the program."
+#~ msgstr ""
+#~ "Dacã este activatã, configuraþia va fi automat salvatã inainte de "
+#~ "pãrãsirea programului."
+
+#, fuzzy
+#~ msgid ""
+#~ "...and apply these rules if conversion to character set for writing ID3 "
+#~ "tags fails:"
+#~ msgstr ""
+#~ "Foloseste setul de caractere ISO-8859-1 standard pentru etichetele ID3 "
+#~ "(recomandat)"
+
+#~ msgid "Unicode (UTF-32BE)"
+#~ msgstr "Unicode (UTF-32BE)"
+
+#~ msgid "Unicode (UTF-32LE)"
+#~ msgstr "Unicode (UTF-32LE)"
+
+#, fuzzy
+#~ msgid ""
+#~ "If activated, the ID3 tag will be written with the ISO-8859-1 character "
+#~ "set. Note that non-ISO-8859-1 characters will be lost. Note also that "
+#~ "ID3v2.3 tags support only ISO-8859-1 and UTF-16. If disabled, it will "
+#~ "check automatically the right encoding to use."
+#~ msgstr ""
+#~ "Daca este activata, eticheta ID3 va fi scrisa cu setul de caractere ISO-"
+#~ "8859-1. Remarcati ca etichetele ID3v2.3 accepta doar ISO-8859-1 si UTF16"
+
+#, fuzzy
+#~ msgid "Use this character set translation for ID3 tags (for expert user) :"
+#~ msgstr ""
+#~ "Foloseste aceasta conversie pentru setul de caractere al etichetelor ID3:"
+
+#, fuzzy
+#~ msgid ""
+#~ "If activated, this character set translation will be used for reading and "
+#~ "writing ID3 tag (for MP3 and MP2 files only)."
+#~ msgstr ""
+#~ "Daca este activata, conversia va fi folosita pentru citirea si scrierea "
+#~ "etichetelor ID3 (pentru fisiere mp3 si mp2)."
+
+#~ msgid "Convert character set from :"
+#~ msgstr "Setul de caractere convertit din:"
+
+#~ msgid "to :"
+#~ msgstr "la :"
+
+#, fuzzy
+#~ msgid ""
+#~ "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+#~ "To fix : this file name musn't be in UTF-8 encoding. So specify the right "
+#~ "encoding for file name in the G_FILENAME_ENCODING environment variable "
+#~ "(for example : export G_FILENAME_ENCODING=ISO-8859-1).\n"
+#~ msgstr ""
+#~ "Numele de fisier '%s' nu a putut fi convertit la UTF-8 (%s).\n"
+#~ "Rezolvare: acest nume de fisier nu trebuie sa fie codat UTF-8. "
+#~ "Specificati codarea corecta pentru numele de fisiere in variabila de "
+#~ "mediu G_FILENAME_ENCODING (ex.: export G_FILENAME_ENCODING=ISO-8859-16).\n"
+
+#~ msgid "Currently using G_FILENAME_ENCODING=%s ...\n"
+#~ msgstr "Folosesc G_FILENAME_ENCODING=%s ...\n"
+
+#~ msgid "Currently using G_BROKEN_FILENAMES=%s ...\n"
+#~ msgstr "Flosesc acum G_BROKEN_FILENAME=%s ...\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR while opening file: '%s'(%s).\n"
+#~ ""
+#~ msgstr ""
+#~ "Eroare în timpul deschiderii fisierului: '%s' (%s).\n"
+#~ ""
+
+#, fuzzy
+#~ msgid "AAC/MPEG-4 File"
+#~ msgstr "Fiºier MP3"
+
+#~ msgid "Use DLM to match lines with files"
+#~ msgstr "Foloseste DLM pentru a asocia liniile cu fisierele"
+
+#~ msgid ""
+#~ "When activating this option, matching of lines with files is done by a "
+#~ "fuzzy string matching, instead of direct position."
+#~ msgstr ""
+#~ "Cind este aceasta optiune activata, liniile sint asociate cu fisiere "
+#~ "folosid "
+
+#~ msgid "Use title case while making first letter uppercase of each word."
+#~ msgstr "Use title case while making first letter uppercase of each word."
diff --git a/po/ru.gmo b/po/ru.gmo
new file mode 100644
index 0000000..c92ac16
--- /dev/null
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..b5f4014
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,5210 @@
+# Russian catalog for EasyTAG.
+# Copyright (C) 2000-2005 Free Software Foundation, Inc.
+# Serg Zhumatiy <serg@guru.ru>, 2000, 2001.
+# Andrey Astafiev <andrei@altlinux.ru>, 2001, 2002, 2003, 2004, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Easytag 1.99.11\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2005-12-24 12:57+0300\n"
+"Last-Translator: Andrey Astafiev <andrei@altlinux.ru>\n"
+"Language-Team: ALT Linux Translation <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Russian\n"
+"X-Poedit-Country: RUSSIAN FEDERATION\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG -- Ñто программа Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра и Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² в файлах "
+"MP3, MP2, FLAC, MusePack, MP4/AAC, Monkey's Audio и Ogg Vorbis Ñ ÑƒÐ´Ð¾Ð±Ð½Ñ‹Ð¼ "
+"интерфейÑом GTK+ Ð´Ð»Ñ GNU/Linux."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(перевод на немецкий)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(перевод на руÑÑкий)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(перевод на голландÑкий)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(перевод на шведÑкий)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(перевод на венгерÑкий)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(перевод на итальÑнÑкий)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(перевод на ÑпонÑкий)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(перевод на украинÑкий)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(перевод на чешÑкий)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(перевод на иÑпанÑкий)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(перевод на польÑкий)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(перевод на румынÑкий)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(перевод на датÑкий)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(перевод на гречеÑкий)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(перевод на бразильÑкий португальÑкий)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(перевод на болгарÑкий)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(перевод на ÑпонÑкий)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(перевод на гречеÑкий)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "О программе..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "О программе"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(Ñкомпилировано: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(иÑпользуютÑÑ: GTK+ %d.%d.%d и id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(поддержка MP3 отключена)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(поддержка MP3 отключена)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(поддержка MP3 отключена)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(поддержка MP3 отключена)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(поддержка Ogg Vorbis отключена)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(поддержка MP3 отключена)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(поддержка FLAC отключена)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(поддержка MP4/AAC отключена)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(поддержка MP3 отключена)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Ðвтор: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "Эл. адреÑ: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Веб-Ñтраница:"
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "ОпиÑание:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "БлагодарноÑти"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Переводы:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Общее:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "ИзменениÑ"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Ðе открываетÑÑ Ñ„Ð°Ð¹Ð» '%s' (%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "ОШИБКРпри открытии файла: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Файл"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Сортировка ÑпиÑка по тегу"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Сортировка ÑпиÑка по ÑвойÑтву"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ имени файла"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ имени файла"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ дате ÑозданиÑ"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ дате ÑозданиÑ"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ номеру дорожки"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ номеру дорожки"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ названию"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ названию"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ иÑполнителю"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ иÑполнителю"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ альбому"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ альбому"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ году"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ году"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ жанру"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ жанру"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ комментарию"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ комментарию"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ композитору"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ композитору"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ первому иÑполнителю"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ первому иÑполнителю"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ владельцу авторÑких прав"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ владельцу авторÑких прав"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑÑылке (URL)"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑÑылке (URL)"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ названию кодировщика"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ кодировщику"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ типу файла"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ типу файла"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ размеру файла"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ размеру файла"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ продолжительноÑти"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ продолжительноÑти"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑкороÑти потока"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑкороÑти потока"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ чаÑтоте диÑкретизации"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ чаÑтоте диÑкретизации"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Открыть файл(Ñ‹) Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Выделить вÑе файлы"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Убрать выделение Ñо вÑех файлов"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Инвертировать выделение файлов"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Удалить файл(ы)"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "П_ервый файл"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Первый файл"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "_Предыдущий файл"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Предыдущий файл"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "_Следующий файл"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Следующий файл"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "П_оÑледний файл"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "ПоÑледний файл"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "_Сканировать файл(ы)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Сканировать файл(ы)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Удалить тег(и)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Удалить тег(и)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "_Отменить поÑл. Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² файлах"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Отменить поÑл. Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² файлах"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "_Вернуть поÑл. Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Вернуть поÑл. Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Сохранить файл(ы)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Сохранить файл(ы)"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "Сохранить _принудительно файл(ы)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Сохранить принудительно файл(ы)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Отменить поÑледнее изменение"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Вернуть поÑледнее изменение"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "В_ыйти"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Выйти"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Браузер"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "Перейти к _домашнему каталогу"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "Перейти к домашнему каталогу"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Перейти к _каталогу по умолчанию"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Перейти к каталогу по умолчанию"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Открывать _Ñтот каталог по умолчанию"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Открывать Ñтот каталог по умолчанию"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Дерево каталогов | Группировка по иÑполнителю и альбому"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Переименовать к_аталог..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Обновить каталог"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "ПроÑмотреть каталог Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Свернуть дерево"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Обновить дерево"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "С_канер"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Заполнить тег(и)..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Заполнить тег(и)..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "Переименовать файл(ы) и к_аталог..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Переименовать файл(ы) и каталог..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Обработать полÑ..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Обработать полÑ..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Разное"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "ПоиÑк _файла(ов)..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "_Ðайти файл(Ñ‹)..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "ПоиÑк в CDD_B..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "ПоиÑк в CDDB..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Загрузить ÑпиÑок файлов из файла"
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Сохранить ÑпиÑок запиÑей..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "ЗапуÑтить проигрыватель"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_УÑтановки"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_ÐаÑтройки..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "ÐаÑтройки..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Справка"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_О программе"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "ОÑтановить текущее дейÑтвие"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_ДейÑÑ‚Ð²Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "Ðайти файл(Ñ‹) в CDDB..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "ПроÑматривать _подкаталоги"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Показать Ñкрытые каталоги"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Показывать дерево каталогов / Отображать по иÑполнителю и альбому"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Ðе могу объединить, ошибка: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Готов к запуÑку..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Выбран новый путь по умолчанию Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Подтвердить..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"Ðекоторые файлы были изменены, но не Ñохранены...\n"
+"Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ Ñменой каталога?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Введённый путь недопуÑтим!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Ошибка..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "# Ðльбомы"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Ошибка: ПоиÑк %s, не удалоÑÑŒ найти узел %s в дереве."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "ИÑполнитель"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Ðльбомы"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Файлы"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Ðльбом"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Перейти на уровень выше"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Перейти к каталогу"
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Дерево"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "ИÑполнитель и альбом"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Переименовать каталог"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Переименовать каталог '%s' в:"
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "ИÑпользовать маÑку:"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "ЕÑли выбрано, маÑки будут иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð²."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Выберите или введите маÑку, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ñ€Ð¸Ð²ÐµÐ´Ñ‘Ð½Ð½Ñ‹Ðµ в подÑказке, Ð´Ð»Ñ "
+"Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° из полей тегов."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¼Ð°Ñка Ð´Ð»Ñ Ñканера"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Предварительное переименование каталогов..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Ðеобходимо ввеÑти Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"'%s' Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ в кодировку имени файла. ИÑпользуйте другое "
+"название."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Ðевозможно переименовать, так как каталог Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðе удалоÑÑŒ переименовать каталог \n"
+"'%s'\n"
+" в \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Каталог переименован"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Программа Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка:"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Введите Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹. Ð’ качеÑтве параметра ей будет передан текущий каталог."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Открыть файл Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Введите Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹. Ð’ качеÑтве параметра ей будет передан текущий файл."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Ðеобходимо ввеÑти название программы!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Программа '%s' не найдена!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Ðе могу выполнить %s (ошибка %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Ðе удалоÑÑŒ Ñоздать новый процеÑÑ!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Ð’Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "ИÑполнитель / альбом"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "КатегориÑ"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Ðазвание дорожки"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "ВремÑ"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "ПоиÑк в базе данных компакт-диÑков"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "ÐвтоматичеÑкий поиÑк"
+
+#: src/cddb.c:284
+#, fuzzy
+msgid "Request CD database :"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ðº базе FreeDB:"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"ÐвтоматичеÑки обращатьÑÑ Ðº базе CDDB, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ðµ файлы (порÑдок "
+"важен!), Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "ОÑтановить поиÑк..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"ЕÑли выбрано, поÑле загрузки к полÑм будет применено выбранное дейÑтвие "
+"Ñканера, при уÑловии что окно Ñканера открыто."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "СамоÑтоÑтельный поиÑк"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Слова:"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Введите Ñлова Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка, разделённые пробелами или '+'"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "ПоиÑк в:"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Ð’Ñе полÑ"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Прочее"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Ð’Ñе категории"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Блюз"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "КлаÑÑика"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Кантри"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Фолк"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Джаз"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Разное"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "ÐÐ¾Ð²Ð°Ñ Ð²Ð¾Ð»Ð½Ð°"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Регги"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Рок"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Дорожка к фильму"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "включает: фанк, Ñоул, Ñ€Ñп, поп, индаÑтриал, метал и Ñ‚.д."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "фильмы, поÑтановки"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "оÑтальные, не попавшие в указанные категории"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr "Категории"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Результаты:"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "ПоиÑк:"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Введите Ñлова Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка в ÑпиÑке внизу"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "ПоиÑк вперёд"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "ПоиÑк назад"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "Показывать краÑные Ñтроки / вÑе Ñтроки"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Отменить выделение"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Инвертировать выделение"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Выделить вÑе Ñтроки"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Выберите Ñтроки, которые будут помещены в ÑпиÑок файлов. ЕÑли выделенных "
+"Ñтрок нет, будут обработаны вÑе файлы.\n"
+"Строки в ÑпиÑке можно переÑортировать вручную."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "УÑтановить в:"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Ð’Ñе"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Ðазвание"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Год"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Дорожка #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# дорожки"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Жанр"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Выполнить Ñканирование Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ файла"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"ЕÑли выбрано, алгоритм Левенштайна (DLM: Damerau-Levenshtein Metric) будет "
+"иÑпользоватьÑÑ Ð´Ð»Ñ ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ð¹ из CDDB Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ файлов в текущем "
+"каталоге и выбора лучших Ñовпадений."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Загрузить выделенные Ñтроки или вÑе Ñтроки (еÑли нет выделенных)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Готов к поиÑку..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Ðльбом: '%s', иÑполнитель: '%s', общее времÑ: '%s', год: '%s', жанр: '%s', "
+"ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Инвертировать выделение"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Сортировать по номеру дорожки"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Сортировать по имени дорожки"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "ПоиÑк узла '%s' ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Ðе удалоÑÑŒ найти узел '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Ðе удалоÑÑŒ Ñоздать новое Ñоединение (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Подключение к Ñерверу '%s', порт '%d'..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Ðе удалоÑÑŒ подключитьÑÑ Ðº Ñерверу '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "УÑтановлено Ñоединение Ñ '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Получение данных (%s) ..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Ошибка при удалении тега ID3v1 в '%s' (%s)\n"
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Ðе удалоÑÑŒ Ñоздать или открыть файл '%s' (%s)\n"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Ðе открываетÑÑ Ñ„Ð°Ð¹Ð» '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "ОтправлÑетÑÑ Ð·Ð°Ð¿Ñ€Ð¾Ñ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Ðе удалоÑÑŒ отправить Ð·Ð°Ð¿Ñ€Ð¾Ñ (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Получение данных..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+#, fuzzy
+msgid "The server returned a wrong answer!"
+msgstr "Сервер вернул неправильный ответ! (%s)"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Сервер вернул неправильный ответ! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "ПоиÑк в веб ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÐ´Ð¾Ñтупен!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Ðайдено %d подходÑщих альбомов"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Получение данных (%s) ..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Получение данных (%s) ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Ðет выделенного файла!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "Выделено %d файл(ов)!"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Готов к поиÑку..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "ОтправлÑетÑÑ Ð·Ð°Ð¿Ñ€Ð¾Ñ (CddbId: %s, #дорожек: %d, общее времÑ: %d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Ðайдено %d подходÑщих альбомов"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Ðе открываетÑÑ Ñ„Ð°Ð¹Ð» '%s' (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "ЗагружаетÑÑ ÑпиÑок дорожек альбома..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Попытка запиÑать %d результатов запроÑа к CDDB к %d Ñтрокам в ÑпиÑке "
+"файлов!\n"
+"\n"
+"Продолжить?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "ЗапиÑываетÑÑ Ñ‚ÐµÐ³ из CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "ÐрабÑÐºÐ°Ñ (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "ÐрабÑÐºÐ°Ñ (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "ÐрабÑÐºÐ°Ñ (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "БалтийÑÐºÐ°Ñ (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "ÐрабÑÐºÐ°Ñ (ISO-8859-6)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "БалтийÑÐºÐ°Ñ (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "КельтÑÐºÐ°Ñ (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Центрально-европейÑÐºÐ°Ñ (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Южно-европейÑÐºÐ°Ñ (ISO-8859-3)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Центрально-европейÑÐºÐ°Ñ (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "КитайÑÐºÐ°Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰Ñ‘Ð½Ð½Ð°Ñ (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "КитайÑÐºÐ°Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰Ñ‘Ð½Ð½Ð°Ñ (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Ð¢Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÐºÐ¸Ñ‚Ð°Ð¹ÑÐºÐ°Ñ (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Ð¢Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÐºÐ¸Ñ‚Ð°Ð¹ÑÐºÐ°Ñ (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Кириллица (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "ÐрабÑÐºÐ°Ñ (ISO-8859-6)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Кириллица (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Кириллица (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Кириллица (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Кириллица/РуÑÑÐºÐ°Ñ (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Кириллица/УкраинÑÐºÐ°Ñ (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "ÐнглийÑÐºÐ°Ñ (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "ГречеÑÐºÐ°Ñ (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "ГречеÑÐºÐ°Ñ (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Иврит (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Иврит (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "ЯпонÑÐºÐ°Ñ (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "ЯпонÑÐºÐ°Ñ (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "ЯпонÑÐºÐ°Ñ (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "КорейÑÐºÐ°Ñ (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Ð¡ÐµÐ²ÐµÑ€Ð½Ð°Ñ (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Южно-европейÑÐºÐ°Ñ (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "ТайÑÐºÐ°Ñ (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Ð¢ÑƒÑ€ÐµÑ†ÐºÐ°Ñ (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "ÐрабÑÐºÐ°Ñ (ISO-8859-6)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Ð¢ÑƒÑ€ÐµÑ†ÐºÐ°Ñ (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Юникод (Unicode) (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "ВьетнамÑÐºÐ°Ñ (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "ВьетнамÑÐºÐ°Ñ (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Визуальный иврит (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "ЗападноевропейÑÐºÐ°Ñ (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "ЗападноевропейÑÐºÐ°Ñ (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "ЗападноевропейÑÐºÐ°Ñ (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "ЗападноевропейÑÐºÐ°Ñ (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° '%s' невозможно преобразовать в UTF-8 (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ñтрока UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"Строку UTF-8 '%s' невозможно преобразовать в кодировку имени файла (%s)\n"
+
+#: src/charset.c:705
+#, fuzzy, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° '%s' невозможно преобразовать в UTF-8 (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "ЗапуÑкаетÑÑ EasyTAG %s, (pid %d)\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ id3lib %d.%d.%d\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ id3lib %d.%d.%d\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Переименование файла '%s'"
+
+#: src/easytag.c:195
+#, fuzzy, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "ИÑпользуетÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒ '%s' (и, возможно, '%s')...\n"
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s %s (Ñкомпилировано %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Веб-Ñтраница: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Браузер"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Файл"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Файл только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "ÐедейÑÑ‚Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑÑылка на файл"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Уровень ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "СкороÑÑ‚ÑŒ потока:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? кб/c"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "ЧаÑтота:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Гц"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Режим:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Размер:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? кб"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "ВремÑ:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Тег"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Общее"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Ðазвание:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "ЗапиÑать в теги выделенных файлов название"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "ИÑполнитель:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "ЗапиÑать в теги выделенных файлов иÑполнителÑ"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Ðльбом:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "ЗапиÑать в теги выделенных файлов название альбома"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "ЗапиÑать в теги выделенных файлов номер диÑка"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Год:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "ЗапиÑать в теги выделенных файлов год"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Выбранные дорожки поÑледовательно нумеруютÑÑ. Ð’ каждом подкаталоге Ð½ÑƒÐ¼ÐµÑ€Ð°Ñ†Ð¸Ñ "
+"начинаетÑÑ Ñ '01'."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Ðомер дорожки:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"ЗапиÑать чиÑло, равное количеÑтву файлов в том же каталоге Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÐµÐ¼Ñ‹Ð¼ "
+"файлом, в выделенные файлы."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "ЗапиÑать в теги выделенных файлов чиÑло дорожек"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Жанр:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "ЗапиÑать в теги выделенных файлов жанр"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Комментарий:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "ЗапиÑать в теги выделенных файлов комментарий"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Композитор:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "ЗапиÑать в теги выделенных файлов композитора"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Первый иÑполнитель:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "ЗапиÑать в теги выделенных файлов первого иÑполнителÑ"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "ÐвторÑкое право:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "ЗапиÑать в теги выделенных файлов авторÑкое право"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "СÑылка (URL):"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "ЗапиÑать в теги выделенных файлов ÑÑылку (URL)"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Кодировщик:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "ЗапиÑать в теги выделенных файлов кодировщик"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Картинки"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Картинки:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸ можно иÑпользовать перетаÑкивание."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "ЗапиÑать картинки в теги выделенных файлов"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Удалить вÑе или выбранные картинки"
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Добавить картинки в тег."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Сохранить выделенные картинки на диÑк."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "УÑтановить ÑвойÑтва Ð´Ð»Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ñ… картинок."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑано название '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Ð’ выбранных файлах удалено поле 'Ðазвание'."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан иÑполнитель '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Ð’ выбранных файлах удалено поле 'ИÑполнитель'."
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан альбом '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Ð’ выбранных файлах удалено поле 'Ðльбом'."
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан номер диÑка '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Ð’ выбранных файлах удалено поле 'Ðомер диÑка'."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан год '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "В выбранных файлах удалено поле 'Год'."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Ð’ выделенных файлах поле 'Дорожка' будет выглÑдеть так: 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Ð’ выделенных файлах поле 'Дорожка' будет выглÑдеть так: 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Ð’ выбранных файлах удалено поле 'Ðомер дорожки'."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Выделенные дорожки поÑледовательно пронумерованы."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан жанр '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "В выбранных файлах удалено поле 'Жанр'."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан комментарий '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "В выбранных файлах удалено поле 'Комментарий'."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан композитор '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "В выбранных файлах удалено поле 'Композитор'."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан первый иÑполнитель '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Ð’ выбранных файлах удалено поле 'Первый иÑполнитель'."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑано авторÑкое право '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Ð’ выбранных файлах удалено поле 'ÐвторÑкое право'."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑана ÑÑылка (URL) '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Ð’ выбранных файлах удалено поле 'СÑылка (URL)'."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Ð’ теги выделенных файлов запиÑан кодировщик '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "В выбранных файлах удалено поле 'Кодировщик'."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Ð’ выделенные файлы запиÑаны картинки"
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Картинки удалены из выделенных файлов"
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Выберите Режим и МаÑку и повторите дейÑтвие еще раз"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Ð’Ñе теги были проÑканированы"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Ð’Ñе теги были удалены"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Ð’Ñе файлы были Ñохранены..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "ЧаÑÑ‚ÑŒ файлов была Ñохранена..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "ЧаÑÑ‚ÑŒ файлов была удалена..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Ð’Ñе файлы были удалены..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"ЗапиÑать тег в файл\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "ЗапиÑÑŒ тега..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Переименование файла и каталога..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Переименовать файл и каталог\n"
+"'%s'\n"
+"в\n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Переименование каталог..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Переименовать каталог\n"
+"'%s'\n"
+"в\n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Переименование файла..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Переименовать файл\n"
+"'%s'\n"
+"в\n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "ЗапиÑываетÑÑ Ñ‚ÐµÐ³ файла '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Тег(и) запиÑан(Ñ‹)"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Ðе удалоÑÑŒ запиÑать тег в файл '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Переименование файла '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðе удалоÑÑŒ переименовать файл '%s'\n"
+" в \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Файл(ы) не переименован(ы)..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Ðе могу переименовать файл\n"
+"'%s'\n"
+"Файл Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðе удалоÑÑŒ Ñоздать каталог:\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Файл '%s' переименован в '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Файл(ы) переименован(ы)..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðевозможно удалить Ñтарый каталог\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Файл '%s' переименован в '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Файл(ы) перемещены..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðевозможно перемеÑтить файл '%s'\n"
+" в \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Файл(ы) не перемещены..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Удалить файл\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Удалить файл..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Файл '%s' удалён"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Ðе удалоÑÑŒ прочитать каталог:\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "ВыполнÑетÑÑ Ð¿Ð¾Ð¸Ñк..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Файл: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Ðайдено %d файлов в каталоге и его подкаталогах."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "В каталоге найдено %d файл(ов)."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u файл(ов)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Ð’ Ñтом каталоге и его подкаталогах файлы не найдены!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Ð’ Ñтом каталоге файлы не найдены!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "ПоиÑк..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr "ОÑтановить поиÑк..."
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Выберите каталог Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "ЗапиÑать Ñто поле в теги выделенных файлов"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Преобразовать '_' и '%20' в пробелы"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Преобразовать ' ' в '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Ð’ÑÑ‘ заглавными"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Ð’ÑÑ‘ Ñтрочными"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Каждое Ñлово начинаетÑÑ Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹ буквы"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Удалить пробелы"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Ð’Ñтавить пробел перед заглавной буквой"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "УдалÑÑ‚ÑŒ повторÑющиеÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ñ‹ и подчёркиваниÑ"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Выход из-за ÑбоÑ!. (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "Получен Ñигнал %s (%d)\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Возможно, вы нашли ошибку в EasyTAG. ПожалуйÑта, отправьте Ñообщение об "
+"ошибке Ñ Ñ‚ÐµÐºÑтом обратной траÑÑировки, Ñоздаваемым программой gdb ('gdb "
+"easytag core' затем 'bt' и 'l') по адреÑу easytag@gmail.com"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "ÐеизвеÑтный Ñигнал"
+
+#: src/easytag.c:4452
+#, fuzzy
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"ИÑпользование: easytag [параметр]\n"
+"или: easytag [каталог]\n"
+"\n"
+"Параметры:\n"
+"----------\n"
+"-h,| --help Показать Ñтот текÑÑ‚.\n"
+"-v,| --version ВывеÑти информацию о верÑии.\n"
+"\n"
+"Каталог:\n"
+"--------\n"
+"/путь_к/файлам ИÑпользовать полный путь,\n"
+"путь_к/файлам ИÑпользовать отноÑительный путь.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Выход."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"ЕÑÑ‚ÑŒ неÑохраненные изменениÑ...\n"
+"ЗапиÑать их перед выходом?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr "Ð’Ñ‹ дейÑтвительно хотите закрыть программу?"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "Тег ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Тег Ogg Vorbis"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "Тег FLAC Vorbis"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "Тег APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "Тег MP4/M4A/AAC"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "файл MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "файл MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "файл Ogg Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Следующий файл"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "файлов FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "файл MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "файл Monkey's Audio "
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "файл MP4/AAC"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "файл MusePack"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Картинки"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d кб/Ñ"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Гц"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Ðе удалоÑÑŒ преобразовать Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: '%s'\n"
+"в ÑиÑтемную кодировку Ð´Ð»Ñ Ð¸Ð¼Ñ‘Ð½ файлов\n"
+"(Попробуйте уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Перевод имени файла"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "Длина имени файла '%s' больше, чем %d, и будет уÑечено!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Кодировщик:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Каналы:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"ОШИБКРпри открытии файла: '%s' (%s).\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ОШИБКÐ: Ðе удалоÑÑŒ запиÑать комментарии в файл '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "ЗапиÑан тег файла '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Удалён тег в '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Ошибка при удалении тега ID3v1 в '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Ошибка при удалении тега ID3v2 в '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Ошибка при обновлении тега ID3v2 в '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Ошибка при обновлении тега ID3v1 в '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Обновлён тег в '%s'"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Сообщений об ошибках не было"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Ðе хватает памÑти"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Ðет данных Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Ðеправильно отформатированные данные"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Ðет буфера Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Буфер Ñлишком мал"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "ÐедопуÑтимый ID фрейма"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Запрашиваемое поле не найдено"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "ÐеизвеÑтный тип полÑ"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Тег уже прикреплён к файлу"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñ‚ÐµÐ³Ð°"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Ðет файла Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Попытка запиÑи в файл только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Ошибка при компреÑÑии/декомпреÑÑии"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "ÐеизвеÑтное Ñообщение об ошибке!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Повреждённый файл: '%s'\n"
+"приведёт к ошибке в библиотеке id3lib, поÑтому не будет обрабатыватьÑÑ."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Повреждённый файл..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr "OK"
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr "Да"
+
+#: src/misc.c:221
+msgid " No "
+msgstr "Ðет"
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr "Применить"
+
+#: src/misc.c:231
+msgid " Save "
+msgstr "Сохранить"
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr "Отменить"
+
+#: src/misc.c:241
+msgid " Close "
+msgstr "Закрыть"
+
+#: src/misc.c:246
+msgid " Write "
+msgstr "ЗапиÑать"
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr "Выполнить"
+
+#: src/misc.c:256
+msgid " Search "
+msgstr "ПоиÑк"
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "ПроÑмотр..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Выберите каталог..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Выберите файл..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "ПоиÑк..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Ðе удалоÑÑŒ выполнить %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "Б"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "КБ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "МБ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "ГБ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "ТБ"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Создать ÑпиÑок запиÑей"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "Ðазвание ÑпиÑка запиÑей M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "ИÑпользовать Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Редактировать маÑки"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Параметры ÑпиÑка запиÑей"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Включать только выделенные файлы"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"ЕÑли выбрано, только выделенные файлы будут помещатьÑÑ Ð² ÑпиÑок запиÑей, "
+"иначе будут иÑпользованы вÑе файлы."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "ИÑпользовать абÑолютный путь Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² в ÑпиÑке запиÑей"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "ИÑпользовать отноÑительный путь Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² в ÑпиÑке запиÑей"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Создавать ÑпиÑок запиÑей в родительÑком каталоге"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr "ЕÑли выбрано, ÑпиÑок запиÑей будет ÑоздаватьÑÑ Ð² родительÑком каталоге"
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "ИÑпользовать разделитель каталогов DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr "Заменить разделитель каталогов '/' на разделитель в Ñтиле DOS '\\'."
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Содержимое ÑпиÑка запиÑей"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "ЗапиÑать только ÑпиÑок файлов"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "ЗапиÑать информацию, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "ЗапиÑать информацию иÑпользуÑ:"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Файл ÑпиÑка запиÑей '%s' уже ÑущеÑтвует!\n"
+"ПерезапиÑать его?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Сохранить ÑпиÑок запиÑей..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Ðе удалоÑÑŒ Ñохранить ÑпиÑок запиÑей '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Сохранён ÑпиÑок запиÑей '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Дорожка"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Комментарий"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Композитор"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Первый иÑполнитель"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "ÐвторÑтво"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "СÑылка (URL)"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Кодировщик"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "ИÑкать файл"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr "Введите Ñлово Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка в файлах. "
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "Ð’:"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "Тег"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Учитывать региÑÑ‚Ñ€"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Ðайден(о): %d файл(ов)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Загрузить имена файлов из файла"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Файл:"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr "Загрузить"
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Загружено Ñодержимое файла:"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "СпиÑок имён файлов:"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"ЕÑли выбрано, то поÑле загрузки вÑех имен файлов текущие уÑтановки Ñканера "
+"будут применены (окно Ñканера должно быть открыто)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Ð’Ñтавить пуÑтую Ñтроку"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Удалить Ñту Ñтроку"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Удалить вÑе пуÑтые Ñтроки"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Перезагрузить"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Профиль:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "ÐудиозапиÑÑŒ"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "ÐеизвеÑтен"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "неверный формат MP4"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d кбит/c"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "Повторить дейÑтвие Ð´Ð»Ñ Ð¾ÑтавшихÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð²"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Поток Ogg не Ñодержит данных Vorbis."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "Ошибка при попытке открыть файл '%s' как Vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Внимание: Файл Ogg Vorbis '%s' Ñодержит тег ID3v2."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Добавить картинки"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Ð’Ñе файлы"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG и JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "СвойÑтва картинки %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "Тип картинки"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "ОпиÑание картинки:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Сохранить картинку %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Файл уже ÑущеÑтвует:\n"
+"'%s'\n"
+"ПерезапиÑать?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Сохранить файл..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "Картинка JPEG"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "Картинка PNG"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "ÐеизвеÑтное тип картинки"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "Пиктограмма размером 32x32 формата PNG"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Ð”Ñ€ÑƒÐ³Ð°Ñ Ð¿Ð¸ÐºÑ‚Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° файла"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Обложка (Ñпереди)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Обложка (Ñзади)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Обложка внутри"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "ÐоÑитель (например, Ð»Ð¸Ñ†ÐµÐ²Ð°Ñ Ñторона компакт-диÑка)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "СолиÑÑ‚/вокалиÑÑ‚"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "ÐртиÑÑ‚/иÑполнитель"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Дирижёр"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Группа/оркеÑÑ‚Ñ€"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Ðвтор Ñтихов/текÑта"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "МеÑто запиÑи"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿Ð¸Ñи"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Во Ð²Ñ€ÐµÐ¼Ñ Ð¸ÑполнениÑ"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Кадр из фильма/Ñъёмки"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "Ярко раÑÐºÑ€Ð°ÑˆÐµÐ½Ð½Ð°Ñ Ñ€Ñ‹Ð±Ð°"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "ИллюÑтрациÑ"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Логотип иÑполнителÑ"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Логотип Ñтудии/издателÑ"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "ÐеизвеÑтный тип изображениÑ"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "пикÑели"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Тип"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "ОпиÑание"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Ðевозможно показать изображение. ÐедоÑтаточно данных Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±ÑƒÑ„ÐµÑ€Ð°."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "ЗагружаетÑÑ Ñ„Ð°Ð¹Ð» изображениÑ..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Ðе могу открыть файл:\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼ на загружен..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "ÐаÑтройки..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Браузер файлов"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Перейти к каталогу по умолчанию"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr "Каталог, файлы из которого будут загружатьÑÑ Ð¿Ñ€Ð¸ запуÑке EasyTAG."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"ÐвтоматичеÑки иÑкать файлы при запуÑке в указанном каталоге. Путь может быть "
+"переопределен, еÑли указать его в качеÑтве параметра командной Ñтроки "
+"(easytag /путь_к/звуковым_файлам)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "ПоиÑк в подкаталогах"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "ИÑкать файлы в подкаталогах при чтении Ñодержимого каталога."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Показывать подкаталоги при выборе каталога"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr "Выбранный узел в дереве каталогов будет показан Ñ Ð²Ñеми подкаталогами."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "ПоиÑк в Ñкрытых каталогах"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "ИÑкать файлы в Ñкрытых каталогах (имена которых начинаютÑÑ Ñ '.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "ПользовательÑкий интерфейÑ"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Показывать информацию о файле из заголовка"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"ЕÑли выбрано Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ файле, Ñ‚Ð°ÐºÐ°Ñ ÐºÐ°Ðº ÑкороÑÑ‚ÑŒ потока, времÑ, размер "
+"будут отображатьÑÑ Ð¿Ð¾Ð´ полем Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ файла."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Показать изменённые файлы в ÑпиÑке иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ :"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "КраÑный цвет"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Полужирный Ñтиль"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Параметры ÑпиÑка Ñортировки"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Сортировать ÑпиÑок файлов по:"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ имени файла"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ имени файла"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ номеру дорожки"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ номеру дорожки"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ дате ÑозданиÑ"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Сортировка по дате ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ (убывающаÑ)"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ названию"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ названию"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ иÑполнителю"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ иÑполнителю"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ альбому"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ альбому"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ году"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ году"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ жанру"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ жанру"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Ð’ порÑдке возраÑÑ‚Ð°Ð½Ð¸Ñ Ð¿Ð¾ комментарию"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Ð’ порÑдке ÑƒÐ±Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ комментарию"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Выберите тип Ñортировки при загрузке каталога."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "ЕÑли выбрано, то при Ñортировке будет учитыватьÑÑ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€ Ñимволов."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð¾ÐºÐ½Ð° Ñообщений"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ðµ определена"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Позволить оконному менеджеру размещать окна."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "Центр главного окна"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Окна должны поÑвлÑÑ‚ÑŒÑÑ Ð² центре главного окна."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Середина Ñкрана"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Окна должны поÑвлÑÑ‚ÑŒÑÑ Ð² центре Ñкрана."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ ÐºÑƒÑ€Ñора"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Окна должны поÑвлÑÑ‚ÑŒÑÑ Ð² текущей позиции мыши."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "Проигрыватель звуковых файлов"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Проигрыватель Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка:"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Введите название программы, воÑпроизводÑщей файлы. Программе можно передать "
+"некоторые аргументы (например, xmms -p) перед ÑпиÑком файлов в качеÑтве "
+"оÑтальных аргументов."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Файловые наÑтройки"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Параметры файла"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "ЗаменÑÑ‚ÑŒ недопуÑтимые Ñимволы в имени файлы (Ð´Ð»Ñ Windows и CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Преобразовать некорректные Ñимволы Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ñ… ÑиÑтем FAT32/16, ISO9660 и "
+"Joliet ('\\', ':', ';', '*', '?', '\"', '<', '>', '|') Ð´Ð»Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼ "
+"при переименовании файла. Полезно при автоматичеÑком переименовании Ñ "
+"помощью Ñканера."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Преобразовать раÑширение в:"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Ðижний региÑÑ‚Ñ€"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Ðапример, раÑширение будет преобразовано в '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Верхний региÑÑ‚Ñ€"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Ðапример, раÑширение будет преобразовано в '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Без изменений"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "РаÑширение не будет преобразовано"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Сохранить Ð²Ñ€ÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ файла"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr "Сохранить Ð²Ñ€ÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ файла при Ñохранении."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Кодировка Ð´Ð»Ñ Ð¸Ð¼Ñ‘Ð½ файлов"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Правила, выполнÑемые, еÑли некоторые Ñимволы невозможно преобразовать в "
+"ÑиÑтемную кодировку при запиÑи имени файла:"
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Пробовать другую кодировку"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"ЕÑли выбрано, будет оÑущеÑтвлена попытка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² кодировку, "
+"Ñоответвующую текущей локали (например: ISO-8859-1 Ð´Ð»Ñ 'fr', KOI8-R Ð´Ð»Ñ "
+"'ru', ISO-8859-2 Ð´Ð»Ñ 'ro'). Ð’ Ñлучае ошибки будет выбрана кодировка ISO-8859-"
+"1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+"Принудительно иÑпользовать ÑиÑтемную кодировку и активировать транÑлитерацию"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"ЕÑли выбрано, Ñимвол, которого нет в целевой кодировке, может быть "
+"предÑтавлен Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ одного или неÑкольких похожих Ñимволов."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"Принудительно иÑпользовать ÑиÑтемную кодировку и игнорировать некорректные "
+"Ñимволы"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"ЕÑли выбрано, Ñимвол, которого нет в целевой кодировке, будет пропущен."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "ÐаÑтройки тегов"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Параметры тега"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Ðвтодополнение даты, еÑли введена не полноÑтью"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"ПытатьÑÑ ÑƒÐ³Ð°Ð´Ð°Ñ‚ÑŒ год, который имелÑÑ Ð² виду, еÑли были введены только "
+"поÑледние цифры (например, еÑли ÑÐµÐ¹Ñ‡Ð°Ñ 2005 год: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "ЗапиÑывать в поле Дорожка указанное количеÑтво цифр:"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"ЕÑли выбрано, в поле Дорожка запиÑываютÑÑ Ñимволы '0' Ð´Ð»Ñ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾ "
+"'n' знаков. (Ðапример, Ð´Ð»Ñ Ð´Ð²ÑƒÑ… знаков: '05', '09', '10',...). Иначе "
+"иÑпользуетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ вид чиÑла."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Файлы Ogg Vorbis: ЗапиÑать комментарий также и в формате XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"Ð’ отличие от оÑтальных приложений XMMS иÑпользует некорректный ÑпоÑоб "
+"Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð² файле Ogg Vorbis. Обычно Ñто поле обозначаетÑÑ "
+"префикÑом 'comment=', а XMMS иÑпользует только '='. Отключите Ñтот параметр, "
+"еÑли вы не хотите, чтобы другие Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñообщали о неизвеÑтном поле. "
+"Однако в Ñтом Ñлучае комментарии не будут отображатьÑÑ Ð² XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"ФокуÑировка Ð¿Ð¾Ð»Ñ Ñ‚ÐµÐ³Ð° при выборе файлов в ÑпиÑке клавишами Page Up/Page Down:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "ОÑтавлÑÑ‚ÑŒ Ñ„Ð¾ÐºÑƒÑ Ð² том же поле тега"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Вернуть Ñ„Ð¾ÐºÑƒÑ Ð½Ð° первое поле тега (поле 'Ðазвание')"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "ÐаÑтройки тегов ID3"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Правила тегов ID3"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "ЗапиÑывать в файлы FLAC теги ID3 вмеÑте Ñ Ñ‚ÐµÐ³Ð°Ð¼Ð¸ FLAC"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"ЕÑли выбрано, теги ID3 будут добавлÑÑ‚ÑŒÑÑ Ðº файлам FLAC (в ÑоответÑтвии Ñ "
+"определёнными выше Ð´Ð²ÑƒÐ¼Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°Ð¼Ð¸) наравне Ñ Ñ‚ÐµÐ³Ð°Ð¼Ð¸ FLAC, иначе теги ID3 "
+"будут удалены."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Удалить теги, еÑли вÑе Ð¿Ð¾Ð»Ñ Ð¿ÑƒÑÑ‚Ñ‹"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Так как теги ID3v2 могут Ñодержать не только Ðазвание, ИÑполнителÑ, Ðльбом, "
+"Год, Дорожку, Жанр, Комментарий и Ñ‚.д., Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет удалить веÑÑŒ "
+"тег, еÑли вÑе полÑ, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ работает EasyTAG пуÑÑ‚Ñ‹."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "ÐвтоматичеÑки преобразовывать Ñтарые верÑии тегов ID3v2"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"ЕÑли выбрано, теги ID3v2 более ранних верÑий будут обновлÑÑ‚ÑŒÑÑ Ð´Ð¾ верÑии "
+"ID3v2.3"
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "ЗапиÑывать тег ID3v2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Кодировка Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð² ID3"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "ЗапиÑывать тег ID3v2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "ЗапиÑывать тег ID3v2"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"ЕÑли выбрано, теги ID3v2 будут добавлены или обновлены в начале МР3 файлов. "
+"Иначе они будут отрезаны."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "ОпиÑание:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Юникод (Unicode) (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Кодировщик"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Кодировка, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи тега в файл."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr "Ðет"
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "Тег ID3"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "ЗапиÑывать тег ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"ЕÑли выбрано, теги ID3v1 будут добавлены или обновлены в конце МР3 файлов. "
+"Иначе они будут отрезаны."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Кодировка, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи тега в файл."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Кодировка Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð² ID3"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Эта кодировка будет иÑпользоватьÑÑ Ð¿Ñ€Ð¸ чтении тегов Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ Ñтрок "
+"тегов Ñохранённых в кодировке ISO-8859-1 (Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð² ID3v1 и/или ID3v2).\n"
+"\n"
+"Ðапример:\n"
+"- в предыдущих верÑиÑÑ… EasyTAG можно было ÑохранÑÑ‚ÑŒ Ñтроки UTF-8 в поле ISO-"
+"8859-1, что некорректно. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ Ñтих тегов в Unicode: выберите "
+"Ñту опцию и выделите UTF-8.- еÑли Unicode не иÑпользуетÑÑ, можно выбрать "
+"другую корировку."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Кодировка, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð° в файле."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Сканер"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Сканер Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² - Преобразование Ñимволов"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "ЗаменÑÑ‚ÑŒ Ð¿Ð¾Ð´Ñ‡ÐµÑ€ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ '_' и Ñтроки '%20' на пробелы ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Преобразовывать пробел ' ' в подчёркивание '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"ЕÑли выбрано, Ñто Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ выполнено при применении маÑки из "
+"Ñканера Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð²."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Сканер Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² - Преобразование Ñимволов"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"ЕÑли выбрано, Ñто преобразование будет выполнено при применении маÑки из "
+"Ñканера Ð´Ð»Ñ Ð¸Ð¼Ñ‘Ð½ файлов."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Сканер обработки полей - Преобразование Ñимволов"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr "Ðе переводить в верхний региÑÑ‚Ñ€ первые буквы предлогов и артиклей."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Ðе преобразовывать первые буквы предлогов, артиклей в Ñередине предложений и "
+"Ñлов, начинающихÑÑ Ñо Ñтрочной буквы, при иÑпользовании Ñканера 'Каждое "
+"Ñлово начинаетÑÑ Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹ буквы'."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Окно Ñканера"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Открывать окно Ñканера при запуÑке"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"ЕÑли выбрано, окно Ñканера будет поÑвлÑÑ‚ÑŒÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки при загрузке "
+"EasyTAG."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Окно Ñканера вÑегда поверх других окон"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"ЕÑли выбрано, окно Ñ Ð¼Ð°Ñками будет вÑегда находитьÑÑ Ð¿Ð¾Ð²ÐµÑ€Ñ… главного окна."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "ПолÑ"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "ЗаменÑÑ‚ÑŒ Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð¸ Ñканировании тегов"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"ЕÑли выбрано, Ñканер будет заменÑÑ‚ÑŒ ÑущеÑтвующий текÑÑ‚ в полÑÑ… на новый, "
+"иначе будут заполнÑÑ‚ÑŒÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ пуÑтые полÑ."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Комментарий по умолчанию:"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"ЕÑли выбрано, ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ñтрока будет запиÑыватьÑÑ Ð² поле ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ "
+"иÑпользовании Ñканера Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð²."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+"ЗапиÑывать контрольную Ñумму CRC32 в поле 'Комментарий' (только Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð² "
+"ID3)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"ВычиÑлÑет значение CRC-32 Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° и запиÑывает его в поле ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ "
+"иÑпользовании Ñканера Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð²."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "База данных CD"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+#, fuzzy
+msgid "Server Settings for Automatic Search"
+msgstr "ÐвтоматичеÑкий поиÑк"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "ИмÑ:"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Порт Ñервера:"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "Путь к CGI:"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "УÑтановки Ñервера"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "База данных CD"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "Путь к CGI:"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "ÐаÑтройки прокÑи-Ñервера"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "ИÑпользовать прокÑи"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Ðктивировать наÑтройки прокÑи-Ñервера."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Ð˜Ð¼Ñ Ñервера:"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¾ÐºÑи-Ñервера."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Порт прокÑи-Ñервера."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Ð˜Ð¼Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸ на прокÑи-Ñервере."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Пароль:"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Ð˜Ð¼Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸ на прокÑи-Ñервере."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "СпиÑок названий дорожек"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr "Выберите ÑоответÑтвующий файл (в завиÑимоÑти от позиции или DLM)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"ЕÑли выбрано, при выборе Ñтроки в ÑпиÑке названий дорожек в главном ÑпиÑке "
+"будет выделен ÑоответÑтвующий файл."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"ИÑпользовать алгоритм Левенштайна (DLM) Ð´Ð»Ñ ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ð¹ в теге Ñ "
+"именем файла."
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "ПодтверждениÑ"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Подтверждать выход из программы"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"ЕÑли выбрано, перед выходом из Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ поÑвлÑÑ‚ÑŒÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð²Ð¾Ðµ окно "
+"Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Подтверждать запиÑÑŒ тега в файл"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Подтверждать Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Подтверждать удаление файла"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Подтверждать Ñохранение ÑпиÑка запиÑей"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Применить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (но не ÑохранÑÑ‚ÑŒ) и закрыть Ñто окно"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Закрывать Ñто окно без ÑохранениÑ"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ закрыть окно"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Пример : %.*d_-_Ðазвание_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ñ‹"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "ÐаÑтройки Ñохранены"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "ÐаÑтройки не изменилиÑÑŒ"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" Стартовый каталог указан неверно!\n"
+"'%s'\n"
+" (%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Ðе ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "Проигрыватель аудиофайлов '%s' не найден!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Заполнить тег"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Переименовать файл и каталог"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Обработать полÑ"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Теги уÑпешно прочитаны..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Теги уÑпешно прочитаны...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Ошибка ÑканированиÑ: не найден разделитель '%s' в '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "Ðе удалоÑÑŒ преобразовать '%s' в ÑиÑтемную кодировку Ð´Ð»Ñ Ð¸Ð¼Ñ‘Ð½ файлов."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Ðовое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° было проÑканировано..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Ðовое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° было проÑканировано...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Сканер тегов и имён файлов"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Сканер:"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Выберите тип иÑпользуемого Ñканера"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Открыть окно Ñканера / Сканировать выбранные файлы"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Параметры Ñканера"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Показать/Ñкрыть редактор маÑок"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Показать/Ñкрыть подÑказку"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Закрыть Ñто ок_но"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Выберите или введите маÑку, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ñ€Ð¸Ð²ÐµÐ´Ñ‘Ð½Ð½Ñ‹Ðµ в подÑказке, Ð´Ð»Ñ Ñ€Ð°Ð·Ð±Ð¾Ñ€Ð° "
+"пути и имени файла. ИÑпользуетÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ¹ тегов."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Предварительный проÑмотр Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð°"
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Добавить к маÑке текущий путь"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Выберите или введите маÑку, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ñ€Ð¸Ð²ÐµÐ´Ñ‘Ð½Ð½Ñ‹Ðµ в подÑказке коды, Ð´Ð»Ñ "
+"разбора полей тегов. ИÑпользуетÑÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð².\n"
+"Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð² иÑпользуйте '/'. ЕÑли первый Ñимвол '/', значит путь "
+"абÑолютный, иначе отноÑительный."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Предварительный проÑмотр Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Выбрать полÑ:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Кнопки Ñправа ÑоответÑтвуют полÑм, которые можно обработать. Выберите те, "
+"которые Ð²Ð°Ñ Ð¸Ð½Ñ‚ÐµÑ€ÐµÑуют."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Обработать поле 'Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°'"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Обработать поле 'Ðазвание'"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Обработать поле 'ИÑполнитель'"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Обработать поле 'Ðльбом'"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Обработать поле 'Жанр'"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Обработать поле 'Комментарий'"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Обработать поле 'Композитор'"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Обработать поле 'Первый иÑполнитель'"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Обработать поле 'ÐвторÑкое право'"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Обработать поле 'СÑылка (URL)'"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Обработать поле 'Кодировщик'"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Инвертировать выделение"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Выделить/СнÑÑ‚ÑŒ выделение"
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Преобразовать '_' и '%20' в ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Преобразовать:"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "в: "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Подчеркивание или подÑтрока '%20' будет заменены на пробел. Ðапример, 'ТекÑÑ‚%"
+"20Ð’_Поле' будет заменено на 'ТекÑÑ‚ Ð’ Поле'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Пробел будет заменён на подчеркивание. Ðапример, 'ТекÑÑ‚ Ð’ Поле' будет "
+"заменено на 'ТекÑÑ‚_Ð’_Поле'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Заменить один Ñимвол на другой."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Ð’Ñе Ñлова во вÑех полÑÑ… будут переведены в верхний региÑÑ‚Ñ€. Ðапример, 'ТекÑÑ‚ "
+"В Поле' будет заменено на 'ТЕКСТ В ПОЛЕ'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Ð’Ñе Ñлова во вÑех полÑÑ… будут переведены в нижний региÑÑ‚Ñ€. Ðапример, 'ТекÑТ "
+"Ð’ Поле' будет заменено на 'текÑÑ‚ в поле'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Первые Ñлова во вÑех полÑÑ… будут начинатьÑÑ Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹ буквы. Ðапример, "
+"'текÑÑ‚ Ð’ Поле' будет заменено на 'ТекÑÑ‚ в поле'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Ð’Ñе Ñлова во вÑех полÑÑ… будут начинатьÑÑ Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ð¾Ð¹ буквы. Ðапример, 'текÑÑ‚ "
+"в Поле' будет заменено на 'ТекÑÑ‚ Ð’ Поле'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Ð’Ñтавить пробел перед заглавной буквой"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Удалить повторÑющиеÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ñ‹ или подчёркиваниÑ"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Ð’Ñе пробелы между Ñловами будут удалены. Ðапример, 'ТекÑÑ‚ Ð’ Поле' будет "
+"заменено на 'ТекÑтВПоле'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Перед каждой заглавной буквой будет вÑтавлен пробел. Ðапример, 'ТекÑтВПоле' "
+"будет заменено на 'ТекÑÑ‚ Ð’ Поле'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"ПовторÑющиеÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ñ‹ и Ð¿Ð¾Ð´Ñ‡Ñ‘Ñ€ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ удалены. Ðапример, "
+"'ТекÑÑ‚__Ð’__Поле' будет заменено на 'ТекÑÑ‚_Ð’_Поле'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "ПодÑказка"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a: ИÑполнитель"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b: Ðльбом"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c: Комментарий"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p: Композитор"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r: ÐвторÑкое право"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d: номер диÑка"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e: Кодировщик"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g: Жанр"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i: Ðе иÑпользуетÑÑ"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l: КоличеÑтво дорожек"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o: Первый иÑполнитель"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n: Дорожка"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t: Ðазвание"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u: СÑылка (URL)"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y: Год"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Редактор маÑок"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Создать новую маÑку"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "ПеремеÑтить выбранную маÑку вверх"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "ПеремеÑтить выбранную маÑку вниз"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Дублировать маÑку"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Удалить маÑки по умолчанию"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Удалить маÑку"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Сохранить маÑки"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "ÐоваÑ_маÑка"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Копирование: Ðет выбранных Ñтрок!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Удаление: Ðет выбранных Ñтрок!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Вниз: Строка не выбрана!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Вверх: Строка не выбрана!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr ""
+"ОШИБКÐ: Ðе удалоÑÑŒ Ñохранить файл наÑтроек: %s (%s)\n"
+""
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Ðе удалоÑÑŒ открыть файл наÑтроек '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "ЗагружаютÑÑ Ð½Ð°Ñтройки по умолчанию..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Ðе удалоÑÑŒ Ñоздать или открыть файл '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+"ОШИБКÐ: Ðе удалоÑÑŒ Ñохранить ÑпиÑок в файл: %s (%s)\n"
+""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Загрузка маÑок по умолчанию Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð²..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Загрузка маÑок по умолчанию Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Загрузка начальных маÑок Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð²..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"ОШИБКÐ: ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ HOME не определена!\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "ОШИБКÐ: Ðе удалоÑÑŒ Ñоздать каталог '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Ввод пуÑÑ‚ или урезан."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Вход не ÑвлÑетÑÑ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð¼ Ogg."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Ошибка при чтении первой Ñтраницы потока Ogg."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Ошибка ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ заголовочного пакета."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Поток Ogg не Ñодержит данных Vorbis."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Повреждён вторичный заголовок."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "Ðе удалоÑÑŒ прочитать заголовки Vorbis "
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Данные повреждены или отÑутÑтвуют, продолжаем..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Ошибка при запиÑи потока. Выходной поток может быть повреждён или уÑечён."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "ЗапуÑтить проигрыватель"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñ‚ÐµÐ³Ð°"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Юникод (Unicode) (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Юникод (Unicode (UTF-16BE))"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Юникод (Unicode (UTF-16LE))"
+
+#~ msgid "Use padding"
+#~ msgstr "ИÑпользовать набивку"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "ИÑпользовать набивку в тегах ID3v2 Ð´Ð»Ñ Ð±Ñ‹Ñтрой запиÑи поÑледующих "
+#~ "изменений в теге."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Ð’Ñегда ÑохранÑÑ‚ÑŒ теги в кодировки ISO-8859-1"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "ИÑпользовать кодировку ISO-8859-1 Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи тегов. Эту кодировку можно "
+#~ "иÑпользовать Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð² ID3v1 и ID3v2, при Ñтом однобайтовые Ñимволы из "
+#~ "других кодировок будут потерÑны.\n"
+#~ "\n"
+#~ "ЕÑли некоторые Ñимволы невозможно перекодировать, можно иÑпользовать "
+#~ "дополнительные правила."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "ПытатьÑÑ ÑохранÑÑ‚ÑŒ теги в кодировке ISO-8859-1. ЕÑли Ñто невозможно, "
+#~ "иÑпользовать UNICODE (рекомендуетÑÑ)."
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "ЕÑли перекодировка в ISO-8859-1 невозможна, будет иÑпользована UNICODE. "
+#~ "Unicode можно иÑпользовать в тегах ID3v2. Ð’ тегах ID3v1 можно "
+#~ "иÑпользовать только однобайтные кодировки (по умолчанию ISO-8859-1).\n"
+#~ "\n"
+#~ "ЕÑли в поле 'ИÑпользовать неÑтандартную кодировку Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи тегов ID3' "
+#~ "выбрана Ð´Ñ€ÑƒÐ³Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°, то она будет иÑпользоватьÑÑ Ð²Ð¼ÐµÑто ISO-8859-1.\n"
+#~ "Ð”Ð»Ñ Ñимволов, перекодировка которых невозможна, можно иÑпользовать "
+#~ "Ñпециальные правила."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Ð’Ñегда ÑохранÑÑ‚ÑŒ теги в кодировке UNICODE"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "ИÑпользовать UNICODE Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи тегов ID3v2. Ð’ тегах ID3v1 можно "
+#~ "иÑпользовать только однобайтные кодировки (по умолчанию ISO-8859-1).\n"
+#~ "\n"
+#~ "ЕÑли в поле 'ИÑпользовать неÑтандартную кодировку Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи тегов ID3' "
+#~ "выбрана Ð´Ñ€ÑƒÐ³Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°, то она будет иÑпользоватьÑÑ Ð²Ð¼ÐµÑто ISO-8859-1."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "ÐŸÐ¾Ð»Ñ Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹ ISO-8859-1 будут перепиÑаны в какзанных кодировках (Ð´Ð»Ñ "
+#~ "ÑкÑпертов):"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "ИÑпользовать неÑтандартную кодировку Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² ID3:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "ИÑпользовать неÑтандартную кодировку Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи тегов ID3:"
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Эта кодировка будет иÑпользоватьÑÑ Ð¿Ñ€Ð¸ запиÑи тегов Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ "
+#~ "Ñтрок тегов Ñохранённых в кодировке ISO-8859-1 (Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð² ID3v1 и/или "
+#~ "ID3v2)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "ПрименÑÑ‚ÑŒ Ñти правила Ð´Ð»Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ ISO-8859-1, еÑли некоторые Ñимволы "
+#~ "невоможно перекодировать при запиÑи тегов:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Ðичего не делать"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr "Принудительно иÑпользовать кодировку и иÑпользовать транÑлитерацию"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr ""
+#~ "Принудительно иÑпользовать кодировку и игнорировать некоторые Ñимволы"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "Перекодировка из '%s' в\n"
+#~ "в '%s' не поддерживаетÑÑ!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "ОШИБКРпри открытии файла: '%s' (%s).\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Читать каталог при запуÑке"
+
+#~ msgid "#:"
+#~ msgstr "â„–:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "ИÑпользовать жёлтый фон Ð´Ð»Ñ Ð²Ñплывающих подÑказок"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "ЕÑли выбрано, фон вÑплывающих подÑказок будет жёлтым вне завиÑимоÑти от "
+#~ "выбранного в оконном менеджере."
+
+#~ msgid "Save _Configuration Now"
+#~ msgstr "Сохранить _наÑтройки"
+
+#~ msgid "Save Configuration Now"
+#~ msgstr "Сохранить наÑтройки"
+
+#~ msgid "Set main window size"
+#~ msgstr "УÑтановить размер главного окна"
+
+#~ msgid "Width :"
+#~ msgstr "Ширина:"
+
+#~ msgid "Height :"
+#~ msgstr "Ð’Ñ‹Ñота:"
+
+#~ msgid " Get current size "
+#~ msgstr "Получить текущий размер"
+
+#~ msgid ""
+#~ "Specify the default size for the main window. You must restart the "
+#~ "program to apply the new size. For your display, the max values are: "
+#~ "width=%d and height=%d."
+#~ msgstr ""
+#~ "УÑтановите размер по умолчанию Ð´Ð»Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ окна. Изменение вÑтупит в "
+#~ "Ñилу поÑле перезапуÑка приложениÑ. МакÑимальные значениÑ: ширина=%d и "
+#~ "выÑота=%d."
+
+#~ msgid "Width: set -1 for automatic size"
+#~ msgstr "Ширина: -1 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¿Ð¾Ð´Ð±Ð¾Ñ€Ð°"
+
+#~ msgid "Heigth: set -1 for automatic size"
+#~ msgstr "Ð’Ñ‹Ñота: -1 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¿Ð¾Ð´Ð±Ð¾Ñ€Ð°"
+
+#~ msgid "Set vertical right pane handle position"
+#~ msgstr "УÑтановить позицию Ð´ÐµÑ€Ð¶Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ панели"
+
+#~ msgid "Position :"
+#~ msgstr "ПозициÑ:"
+
+#~ msgid " Get current position "
+#~ msgstr "Получить текущую позицию"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser frame and the tag frame. Changes will be applied the next start."
+#~ msgstr ""
+#~ "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸, раÑположенной между панелью дерева "
+#~ "каталогов и панелью Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð°. Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ учтены при "
+#~ "Ñледующем запуÑке приложениÑ."
+
+#~ msgid "Position: set -1 for automatic positioning"
+#~ msgstr "ПозициÑ: введите -1 Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого размещениÑ"
+
+#~ msgid "Set vertical left pane handle position"
+#~ msgstr "УÑтановить позицию Ð´ÐµÑ€Ð¶Ð°Ñ‚ÐµÐ»Ñ Ð»ÐµÐ²Ð¾Ð¹ панели"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "browser tree and the list of files. Changes will be applied the next "
+#~ "start."
+#~ msgstr ""
+#~ "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸, раÑположенной между деревом каталогов и "
+#~ "ÑпиÑком файлов. Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ учтены при Ñледующем запуÑке приложениÑ."
+
+#~ msgid "Set horizontal pane handle position"
+#~ msgstr "УÑтановить позицию Ð´ÐµÑ€Ð¶Ð°Ñ‚ÐµÐ»Ñ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾Ð¹ панели"
+
+#~ msgid ""
+#~ "Specify the default position for the pane handle located between the "
+#~ "artist list and album list. Changes will be applied the next start."
+#~ msgstr ""
+#~ "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸, раÑположенной между ÑпиÑком иÑполнителей "
+#~ "и ÑпиÑком альбомов. Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ учтены при Ñледующем запуÑке "
+#~ "приложениÑ."
+
+#~ msgid "Set new style for displaying list items"
+#~ msgstr "УÑтановить новый Ñтиль Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñлементов ÑпиÑка"
+
+#~ msgid ""
+#~ "If activated, items in list will be styled black and bold instead of red "
+#~ "and gray (example : for changed and not saved files)."
+#~ msgstr ""
+#~ "ЕÑли выбрано, Ñлементы в ÑпиÑке будут отображатьÑÑ Ñ‡Ñ‘Ñ€Ð½Ñ‹Ð¼ и жирным "
+#~ "шрифтами, а не краÑным и Ñерым (например, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½Ð½Ñ‹Ñ… и не Ñохранённых "
+#~ "файлов)."
+
+#~ msgid "Set scanner window position"
+#~ msgstr "УÑтановить позицию окна Ñканера"
+
+#~ msgid ""
+#~ "If activated, the scanner window will appear at the specified coordinates "
+#~ "relative to the main window. Use it if you want to keep the same position "
+#~ "of the scanner window each times you open it. If deactivated, the window "
+#~ "manager determines the position."
+#~ msgstr ""
+#~ "ЕÑли выбрано, окно Ñканера будет поÑвлÑÑ‚ÑŒÑÑ Ð² указанной позиции "
+#~ "отноÑительно главного окна, иначе Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ определÑÑ‚ÑŒÑÑ Ð¾ÐºÐ¾Ð½Ð½Ñ‹Ð¼ "
+#~ "менеджером."
+
+#~ msgid "X :"
+#~ msgstr "X:"
+
+#~ msgid "Y :"
+#~ msgstr "Y:"
+
+#~ msgid "CD Data Base Window"
+#~ msgstr "Окно базы данных компакт диÑков"
+
+#, fuzzy
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "УÑтановить размер окна базы данных компакт диÑков"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "УÑтановить размер окна CDDB по умолчанию."
+
+#~ msgid "Set pane handle position"
+#~ msgstr "УÑтановить позицию Ð´ÐµÑ€Ð¶Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸"
+
+#~ msgid "Specify the default position for the pane handle in the CDDB window."
+#~ msgstr "УÑтановите позицию по умолчанию Ð´Ð»Ñ Ð´ÐµÑ€Ð¶Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸ в окне CDDB."
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "СохранÑÑ‚ÑŒ наÑтройки перед выходом из приложениÑ"
+
+#~ msgid ""
+#~ "If activated, the configuration will be automatically saved before "
+#~ "exiting the program."
+#~ msgstr ""
+#~ "ЕÑли выбрано, наÑтройки будут автоматичеÑки ÑохранÑÑ‚ÑŒÑÑ Ð¿ÐµÑ€ÐµÐ´ выходом из "
+#~ "программы."
+
+#~ msgid " Window height (%d) is bigger than screen height (%d)! "
+#~ msgstr "Ð’Ñ‹Ñота окна (%d) больше выÑоты Ñкрана (%d)!"
+
+#~ msgid "Size Error..."
+#~ msgstr "Ошибка размера..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr "Ширина окна (%d) больше ширины Ñкрана (%d)!"
+
+#~ msgid "The scanner window must be open to get its current position!"
+#~ msgstr "Окно Ñканера должно быть открыто Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ позиции!"
+
+#~ msgid "The CDDB window must be open to get its current position!"
+#~ msgstr "Окно CDDB должно быть открыто Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ позиции!"
+
+#~ msgid "Unicode (UTF-32BE)"
+#~ msgstr "Юникод (Unicode (UTF-32BE))"
+
+#~ msgid "Unicode (UTF-32LE)"
+#~ msgstr "Юникод (Unicode (UTF-32LE))"
+
+#~ msgid "Currently using G_FILENAME_ENCODING=%s ...\n"
+#~ msgstr "ИÑпользуетÑÑ G_FILENAME_ENCODING=%s ...\n"
+
+#, fuzzy
+#~ msgid "Currently using G_BROKEN_FILENAMES=%s ...\n"
+#~ msgstr "ИÑпользуетÑÑ G_BROKEN_FILENAME=%s ...\n"
+
+#~ msgid "File name"
+#~ msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#~ msgid ""
+#~ "If activated, the ID3 tag will be written with the ISO-8859-1 character "
+#~ "set. Note that ID3v2.3 tags support only ISO-8859-1 and UTF16."
+#~ msgstr ""
+#~ "ЕÑли выбрано, тег ID3 будет запиÑан в кодировке ISO-8859-1. Обратите "
+#~ "внимание на то, что теги верÑии 2.3 поддерживают только кодировки ISO-"
+#~ "8859-1 и UTF16."
+
+#~ msgid "Use this character set translation for ID3 tags :"
+#~ msgstr "ИÑпользовать Ñту перекодировку Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð² ID3:"
+
+#~ msgid ""
+#~ "If activated, this character set translation will be used for reading and "
+#~ "writing ID3 tag (for mp3 and mp2 files)."
+#~ msgstr ""
+#~ "ЕÑли выбрано, ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° будет иÑпользоватьÑÑ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ "
+#~ "запиÑи тегов ID3 (иÑпользуетÑÑ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² mp3 и mp2)."
+
+#~ msgid "Convert character set from :"
+#~ msgstr "Перекодировать из:"
+
+#~ msgid "to :"
+#~ msgstr "в:"
+
+#~ msgid "Use title case while making first letter uppercase of each word."
+#~ msgstr ""
+#~ "Учитывать правила напиÑÐ°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ переводе первых букв в верхний региÑÑ‚Ñ€."
+
+#~ msgid "Use DLM to match lines with files"
+#~ msgstr "ИÑпользовать DLM Ð´Ð»Ñ ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñтрок Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
+
+#~ msgid ""
+#~ "When activating this option, matching of lines with files is done by a "
+#~ "fuzzy string matching, instead of direct position."
+#~ msgstr ""
+#~ "ЕÑли выбрано, Ñравнение Ñтрок Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ выполнÑетÑÑ Ð¿Ð¾ нечёткому "
+#~ "Ñравнению, а не в завиÑимоÑти от позиции."
+
+#~ msgid "_Rename File(s) ..."
+#~ msgstr "_Переименовать файл(ы)..."
+
+#~ msgid "Rename File(s) ..."
+#~ msgstr "Переименовать файл(ы)..."
+
+#~ msgid ""
+#~ "The filename '%s' couldn't be converted to UTF-8. (Try setting the "
+#~ "environment variable G_FILENAME_ENCODING): %s\n"
+#~ msgstr ""
+#~ "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° '%s' Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ в кодировку UTF-8 (попробуйте "
+#~ "уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ G_FILENAME_ENCODING): %s\n"
+
+#~ msgid "Character set used for files on hard disk."
+#~ msgstr "Кодировка, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² на жёÑтком диÑке."
+
+#~ msgid "Rename File"
+#~ msgstr "Переименовать файл"
+
+#~ msgid "Scan Tag"
+#~ msgstr "Сканировать тег"
+
+#~ msgid "Scan File Name"
+#~ msgstr "Сканировать Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
diff --git a/po/sv.gmo b/po/sv.gmo
new file mode 100644
index 0000000..53e39b0
--- /dev/null
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..f05703d
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,5024 @@
+# Swedish catalog for EasyTAG.
+# Copyright (C) 2000-2006 Free Software Foundation, Inc.
+# Patrik Israelsson <fix@linux.nu>, 2000, 2001, 2002.
+# Anders Strömer <anders.stromer@comhem.se>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTAG 1.99.12\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2006-12-28 12:33+0100\n"
+"Last-Translator: Anders Strömer <anders.stromer@comhem.se>\n"
+"Language-Team: Swedish <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Swedish\n"
+"X-Poedit-Country: SWEDEN\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG är ett verktyg för läsning och editering av MP3, MP2, FLAC, Ogg "
+"Vorbis, MP4/AAC, MusePack och Monkey's Audio filer. Det är enkelt och har "
+"ett trevligt GTK+ gränssnitt vilket gör taggningen enklare i GNU/Linux."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(Tysk översättning)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(Rysk översättning)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(Holländsk översättning)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(Svensk översättning)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(Ungersk översättning)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(Italiensk översättning)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(Japansk översättning)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(Ukrainsk översättning)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(Tjeckisk översättning)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(Spansk översättning)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(Polsk översättning)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(Rumänsk översättning)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(Dansk översättning)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(Grekisk översättning)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(Brasilien Portugisisk översättning)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(Bulgarisk översättning)"
+
+#: src/about.c:160
+msgid "(Chinese translation)"
+msgstr "(Kinesisk översättning)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(Grekisk översättning)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "Om..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "Om"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(Kompilerad: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(använder: GTK+ %d.%d.%d och id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(Support för MP3 filer är avstängd)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(Support för MP3 filer är avstängd)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(Support för MP3 filer är avstängd)"
+
+#: src/about.c:296
+#, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(Support för MP3 filer är avstängd)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Support för Ogg Vorbis filer är avstängd)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(Support för MP3 filer är avstängd)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(Support för FLAC filer är avstängd)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(Support för MP4/AAC filer är avstängd)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(Support för MP3 filer är avstängd)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "Upphovsman: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-post: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Web-sida: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "Beskrivning:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "Tack"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "Översättningar:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "Allmänt:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "Ändringar"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "Kan inte öppna fil '%s' (%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "FEL vid försök att öppna fil: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "_Fil"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "Sortera efter taggar"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "Sortera efter egenskap"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "Stigande ordning efter filnamn"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "Fallande ordning efter filnamn"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "Stigande ordning efter ändringsdatum"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "Fallande ordning efter ändringsdatum"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "Stigande ordning efter spårnummer"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "Fallande ordning efter spårnummer"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "Stigande ordning efter titel"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "Fallande ordning efter titel"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "Stigande ordning efter artist"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "Fallande ordning efter artist"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "Stigande ordning efter album"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "Fallande ordning efter album"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "Stigande ordning efter år"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "Fallande ordning efter år"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "Stigande ordning efter genre"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "Fallande ordning efter genre"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "Stigande ordning efter kommentarer"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "Fallande ordning efter kommentarer"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "Stigande ordning efter kompositör"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "Fallande ordning efter kompositör"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "Stigande ordning efter original artist"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "Fallande ordning efter original artist"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "Stigande ordning efter copyright"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "Fallande ordning efter copyright"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "Stigande ordning efter URL"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "Fallande ordning efter URL"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "Stigande ordning efter omkodarens namn"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "Fallande ordning efter omkodarens namn"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "Stigande ordning efter filtyp"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "Fallande ordning efter filtyp"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "Stigande ordning efter filstorlek"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "Fallande ordning efter filstorlek"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "Stigande ordning efter varaktighet"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "Fallande ordning efter varaktighet"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "Stigande ordning efter bitrate"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "Fallande ordning efter bitrate"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "Stigande ordning efter samplerate"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "Fallande ordning efter samplerate"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "Öppna Fil(er) med ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "Välj Alla Filer"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "Avmarkera Alla Filer"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "Invertera Fil Val"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "Radera Fil(er)"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "_Första Filen"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "Första Filen"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "F_öregående Fil"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "Föregående Fil"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "_Nästa Fil"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "Nästa Fil"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "_Sista Filen"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "Sista Filen"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "S_canna Fil(er)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "Scanna Fil(er)"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "_Ta bort Tagg(ar)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "Ta bort Tagg(ar)"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "_Ångra Sista Filens(ernas) Ändringar"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "Ångra Sista Filens(ernas) Ändringar"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "Genom_för Sista Filens(ernas) Ändringar"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "Genomför Sista Filens(ernas) Ändringar"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "_Spara Filen(erna)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "Spara Filen(erna)"
+
+#: src/bar.c:204
+msgid "_Force Saving File(s)"
+msgstr "_Tvinga Spara Filen(erna)"
+
+#: src/bar.c:204
+msgid "Force Saving File(s)"
+msgstr "Tvinga Spara Filen(erna)"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "Ångra Sista Ändringarna"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "Genomför Sista Ändringarna"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "_Avsluta"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "Avsluta"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "_Bläddrare"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "GÃ¥ till _Hem Katalogen"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "GÃ¥ till Hem Katalogen"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "Gå till _Förvald Katalog"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "Gå till Förvald Katalog"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "Ställ in _Nuvarande Sökväg som Förvald"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "Ställ in Nuvarande Sökväg som Förvald"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "Träd Vy | Artist-Album Vy"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "Döp Om Katalogen"
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "Ladda Om Katalogen"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "Bläddra i Kataloger med ..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "_Slå ihop Träd Vyn"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "_Uppdatera Träd Vyn"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "S_canner"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "_Fyll Taggen(arna) ..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "Fyll Taggen(arna) ..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "_Byt Namn på Filen(erna) och Katalogen ..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "Byt Namn på Filen(erna) och Katalogen ..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "_Process Fält ..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "Process Fält ..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "_Diverse"
+
+#: src/bar.c:226
+msgid "Search _File(s) ..."
+msgstr "Söka _Fil(er) ..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "Söka Fil(er) ..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "CD Data _Bas Sökning ..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB Sökning ..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "Ladda Filnamn från TXT ..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "Skriv Spelningslista ..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "Starta Ljud Spelare"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "_Inställningar"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "_Preferenser ..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "Preferenser ..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "_Hjälp"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "_Om"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "Stoppa pågående åtgärd"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "_Fil Förfarande"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "CDDB Sökning Fil(er) ..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "Bläddra i _Under-kataloger"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "Visa Dolda Kataloger"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "Visa bläddrar träd / Visa Artist och Album"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr "Kunde inte slå samman UI, fel var: %s\n"
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "Färdig att starta ..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "Ny förinställd sökväg vald för filer"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "Bekräfta..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"En del filer har ändrats men inte sparats...\n"
+"Vill du spara dessa innan byte av katalog?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"Den inskrivna sökvägen är inte rätt!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "Fel..."
+
+#: src/browser.c:2016
+msgid "<All albums>"
+msgstr "<Alla album>"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr "Fel: Sökning efter %s, kunde inte finna nod %s i träd."
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "Artist"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# Album"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# Filer"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "Album"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "Gå till föräldra-katalog"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "Skriv in en katalog att bläddra i."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "Träd"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "Artist & Album"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "Byta namn på katalogen"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "Byta namn på katalogen '%s' till : "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "Använd mask :"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "Om aktiv, kommer den att använda mask för att ändra namn på katalogen."
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+"Välj eller skriv in den typ av mask (se Legend i Scanner fönstret) för att "
+"namnge katalogen från taggfältet."
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "Fel Scanner Mask"
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "Namnge förhandsvisning av katalog..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "Du måste skriva in ett katalognamn!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+"Kunde inte konvertera '%s' till omkodat filnamn. Vänligen använd ett annat "
+"namn."
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"Kunde inte ändra namnet, katalognamnet existerar redan!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan inte ändra namnet på katalogen \n"
+"'%s'\n"
+" till \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "Katalognamnet ändrades"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "Program att köra :"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+"Skriv in programmet du vill köra. Det kommer att få nuvarande katalog som "
+"parameter."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "Öppna fil med ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+"Skriv in programmet du vill köra. Det kommer att få nuvarande fil som "
+"parameter."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "Du måste skriva in ett programnamn!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "Programmet '%s' kunde inte hittas!"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "Kunde inte starta %s (fel %d)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "Kan inte starta en ny process!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "Exekverat kommando : '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "Artist / Album"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "Kategori"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "Spår Namn"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "Tid"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "CD Data Bas Sökning"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "Automatisk Sökning"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr " CD databas förfrågan :"
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+"Använd valda filer för att göra en automatisk förfrågan hos CDDB databas "
+"(ordningen är viktig!) för att generera CddbID."
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "Stoppa sökningen ..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"När denna option är aktiverad, efter att fälten har laddats, kommer den "
+"nuvarande valda scannern att köras (scanner fönstret måste vara öppnat)."
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "Manuell Sökning"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "Ord :"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "Skriv in sökorden (separerade med mellanslag eller '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "Sök I :"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "Alla Fält"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "Andra"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "Alla Kategorier"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "Blues"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "Klassiskt"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "Country"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "Folk"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "Jazz"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "Diverse"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "Newage"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "Rock"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "Soundtrack"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "inkluderat : funk, soul, rapp, pop, industriell, metall, etc."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "filmer, shower"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "annat som inte passar i ovanstående kategorier"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr "Kategorier"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "Resultat :"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "Sök :"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "Skriv in sökord på raden nedan"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "Sök Nästa"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "Sök Föregående"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr ""
+"Visa endast röda rader alternativt visa alla rader i 'Artist/Album' listan"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "Välj bort alla rader"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "Invertera rad valet"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "Välj alla raderna"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+"Välj rader att 'lägga' till din fil-lista. Alla raderna kommer att processas "
+"om ingen rad är vald.\n"
+"Du kan även spela in rader i denna list, innan du trycker på 'utför' knappen."
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "Sätt Till :"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "Alla"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "Filnamn"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "Titel"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "Ã…r"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "Spår #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# Spår"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "Genre"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr "Kör nuvarande scanner för varje fil"
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+"Om denna möjlighet aktiveras kommer Levenshtein algoritmen (DLM : Damerau-"
+"Levenshtein Metric) att användas för att matcha CDDB titeln gentemot alla "
+"filnamn i den aktuella katalogen, för att göra ett val baserat på den bästa "
+"matchningen. Detta kommer att användas vid val av motsvarande ljudfil, eller "
+"applicering av cddb resultatet, istället för att använda direkt positions "
+"ordning."
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr "Ladda dom valda raderna eller alla rader (om ingen rad är vald)."
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "Redo att söka..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"Album: '%s', artist: '%s', längd: '%s', år: '%s', genre: '%s', ID: '%s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "Invertera urvalet"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "Sortera efter Spårnummer"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "Sortera efter Spårnamn"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "Kopplar upp mot värd '%s' ..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "Kunde inte koppla upp mot värd '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "Kunde inte skapa en ny socket (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "Kopplar upp mot värd '%s', på port '%d' ..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "Kan inte kontakta värd '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "Uppkopplad mot värd '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "Emottager data (%s) ..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "Fel vid läsning av cddb svar (%s)!"
+
+#: src/cddb.c:1765
+#, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "Kan inte skapa fil '%s' (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "Kan inte öppna fil '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "Skickar förfrågan ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "Kan inte skicka förfrågan om (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "Emottager data ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr "Servern returnerade ett fel svar!"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "Servern returnerade ett fel svar! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr "Tyvärr, den web-baserade sökningen är för tillfället ur funktion!"
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "Hittade %d matchande album"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "Emottager data för sidan %d ..."
+
+#: src/cddb.c:2570
+#, c-format
+msgid "Receiving data of page %d ..."
+msgstr "Emottager data för sidan %d ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr "Flera resultat att ladda ..."
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "Ingen fil är vald!"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d fil(er) vald(a)!"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "Redo att söka..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr "Skickar förfrågan (CddbId: %s, #spår: %d, Disk längd: %d) ..."
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "Hittade %d matchande album"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "Kan inte öppna fil '%s' (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "Laddar albumets spår lista ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"Var försiktig, du håller på att lägga till %d rader av CDDB resultatet, till "
+"%d rader i listan över filer!\n"
+"\n"
+"Vill du fortsätta ?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "Skriv taggen från CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "Arabisk (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabisk (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "Arabisk (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltisk (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltisk (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "Baltisk (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltisk (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "Central Europeisk (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "Central Europeisk (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "Central Europeisk (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "Kinesisk Förenklad (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "Kinesisk Förenklad (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "Kinesisk Traditionell (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Kinesisk Traditionell (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "Kyrillisk (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kyrillisk (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kyrillisk (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kyrillisk (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kyrillisk (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "Kyrillisk/Ryskt (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "Kyrillisk/Ukrainsk (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "Engelska (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "Grekisk (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "Grekisk (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "Hebreisk (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebreisk (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "Japansk (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japansk (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "Japansk (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "Koreansk (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordisk (ISO-8859-10)"
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "Syd-Europeisk (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr "Thailändsk (TIS-620)"
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "Turkisk (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turkisk (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "Turkisk (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamesisk (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamesisk (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebreisk Visuell (ISO-8859-8)"
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "Western (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "Western (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "Western (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "Western (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Filnamnet '%s' kunde inte konverteras till UTF-8 (%s).\n"
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "Ogiltig UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+"UTF-8 strängen '%s' kunde inte konverteras till filnamnets kodning (%s)\n"
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr "Strängen '%s' kunde inte konverteras till UTF-8 (%s).\n"
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "Startar EasyTAG %s (PId: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "Förnärvarande används id3lib version %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "Förnärvarande används id3lib version %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "Ändrar namn på fil '%s'"
+
+#: src/easytag.c:195
+#, fuzzy, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr "Förnärvarande används läge '%s' (och eventuellt '%s')...\n"
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s av %s (kompilerat %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "Web Sida: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "Bläddrare"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "Fil"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "Endast Läsbar Fil"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "Fil-Länken är Bruten"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Lager ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "Bitvärde:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? kb/s"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "Frekvens:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? Hz"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "Typ:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "Storlek:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? kb"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "Tid:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "Tagg"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "Vanlig"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "Titel:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr "Tagga valda filer med denna titel"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "Artist:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr "Tagga valda filer med denna artist"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "Album:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr "Tagga valda filer med detta albums namn"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CD"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr "Tagga valda filer med detta disknummer"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "Ã…r:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr "Tagga valda filer med detta år"
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+"Numrera valda spår sekvensiellt. Med början vid 01 i vardera underkatalog."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "Spår #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+"Ställ in antalet filer, i samma katalog som den visade filen, till valda "
+"antal spår."
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr "Tagga Valda filer med dessa spårnummer"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "Genre:"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr "Tagga valda filer med denna genre"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr "Tagga valda filer med denna kommentar"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "Kompositör:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr "Tagga valda filer med denna kompositör"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "Orig. Artist:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr "Tagga valda filer med denna original artist"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "Copyright:"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr "Tagga valda filer med detta copyright"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr "URL:"
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr "Tagga valda filer med detta URL"
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "Kodat av:"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr "Tagga valda filer med denna avkodarens namn"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "Bilder"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "Bilder:"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "Du kan använda drag och släpp för att lägga till bilder."
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr "Tagga valda filer med dessa bilder"
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr "Ta bort valda bilder, annars alla bilder."
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr "Lägga till bilder till taggen (drag och släpp är också tillgängligt)."
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr "Spara de valda bilderna till hårddisken."
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr "Ställ in rättigheterna för de valda bilderna."
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "Tagga valda filer med denna titel '%s'."
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr "Avlägsna titel från valda filer."
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "Valda filer taggade med denna artist '%s'."
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr "Avlägsna artist från valda filer"
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "Valda filer taggade med detta album '%s'."
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr "Avlägsna albumnamn från valda filer"
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "Välj filer taggade med CD nummer '%s'."
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr "Avlägsna CD nummer från valda filer."
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "Valda filer taggade med år '%s'."
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr "Avlägsna år från valda filer"
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "Valda filer taggade med spårnummer på detta vis 'xx/%s'."
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr "Valda filer taggade med spårnummer på detta vis 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr "Avlägsna spårnummer från valda filer."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr "Valda spår numrerade sekvensiellt."
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "Valda filer taggade med genre '%s'."
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr "Avlägsna genre från valda filer."
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "Valda filer taggade med kommentar '%s'."
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr "Avlägsna kommentar från valda filer."
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "Valda filer taggade med kompositör '%s'."
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr "Avlägsna kompositör från valda filer."
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "Valda filer taggade med original artist '%s'."
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr "Avlägsna original artist från valda filer."
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "Valda filer taggade med copyright '%s'."
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr "Avlägsna copyright från valda filer."
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "Valda filer taggade med URL '%s'."
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr "Avlägsna URL från valda filer."
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "Valda filer taggade med avkodarens namn '%s'."
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr "Avlägsna avkodarens namn från valda filer."
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr "Valda filer taggade med bilder."
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr "Avlägsna bilder från valda filer."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "Välj Läge och Mask och förbered för liknande åtgärd"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "Alla taggarna har scannats"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "Alla taggarna har avlägsnats"
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "Alla filerna har sparats..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "Filer har delvis sparats..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "Filer har delvis raderats..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "Alla filerna har raderats..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"Vill du skriva taggen till filen\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "Skriv Tagg..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr "Ändra Namnet på Filen och Katalogen..."
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vill du ändra namnet på filen och katalogen \n"
+"'%s'\n"
+"till \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "Ändra Katalognamn..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vill du ändra namnet på katalogen \n"
+"'%s'\n"
+"till \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "Ändra Filnamn..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"Vill du ändra namnet på filen \n"
+"'%s'\n"
+"till \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "Skriver tagg i '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "Tagg(ar) skrevs"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"Kan inte skriva taggen i fil '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "Ändrar namn på fil '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan inte ändra namnet på filen '%s'\n"
+" till \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "Fil(er) inte omdöpta..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"Kan inte byta namnet på fil \n"
+"'%s'\n"
+"pågrund av att filen redan existerar:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan inte skapa målkatalog\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "Filnamnet '%s' ändrat till '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "Fil(erna) om döpta..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan inte flytta gamla katalogen\n"
+"'%s'!\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "Flyttade fil '%s' till '%s'"
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr "Fil(erna) flyttade..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan inte flytta fil '%s'\n"
+" till \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr "Fil(er) ej flyttade..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"Är du säker på att du definitivt vill radera fil\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "Radera Fil..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "Fil '%s' raderad"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"Kan inte läsa katalog :\n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "Sökning pågår..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "Fil: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "Hittade %d fil(er) i denna katalog och underkataloger."
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "Hittade %d fil(er) i denna katalog."
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u fil(er)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "Hittade ingen fil i denna katalog och underkataloger!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "Ingen fil hittades i denna katalog!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "Söker..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " STOPPA sökningen... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "Välj en katalog att bläddra i!"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr "Tagga valda filer med detta fält"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "Konvertera '_' och '%20' till mellanslag"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "Konvertera ' ' till '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "Enbart versaler"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "Enbart gemener"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "Första bokstaven versal"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "Första bokstaven versal i alla orden"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "Avlägsna mellanslag"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "Lägg in mellanslag före varje versal"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "Avlägsna dubbletter av mellanslag och nedsänkta streck"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: Onormal avstängning! (PId: %d)."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "Mottog signal %s (%d)\n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"Du har troligtvis funnit en bugg i EasyTAG. Vänligen sänd in en bugg rapport "
+"med en gdb bakåtspårning ('gdb easytag core' sedan 'bt' och 'l') och "
+"information om hur man kan upprepa detta till easytag@gmail.com"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "Okänd signal"
+
+#: src/easytag.c:4452
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"Användning: easytag [val] \n"
+" eller: easytag [katalog]\n"
+"\n"
+"Val:\n"
+"-------\n"
+"-h, --hjälp Visa denna text och avsluta.\n"
+"-v, --version Skriv basal information och avsluta.\n"
+"\n"
+"Katalog:\n"
+"----------\n"
+"c:/Sökväg_till/filer Använd en absolut sökväg att ladda,\n"
+"/Sökväg_till/filer Använd en absolut sökväg att ladda,\n"
+"Sökväg_till/filer Använd en relativ sökväg.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: Avslutades Normalt."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"Vissa filer har modifierats men inte sparats...\n"
+"Vill du spara dessa filer innan du avslutar programmet?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr "Vill du avsluta programmet?"
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3 Tagg"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis Tagg"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis Tagg"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE Tagg"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "MP4/M4A/AAC Tagg"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3 Fil"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2 Fil"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis Fil"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "Nästa Fil"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC Fil"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MusePack Fil"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey's Audio Fil"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "MP4/AAC Fil"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "MusePack Fil"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "Bilder"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d Hz"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+"Kunde inte konvertera filnamnet : '%s'\n"
+"till systemets filnamns kodning\n"
+"(Försök att ställa in miljövariabel G_FILENAME_ENCODING)."
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr "Översättning filnamn"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr "Filnamnet '%s' översteg %d tecken och kommer att förkortas!\n"
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "Kodare:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "Kanaler:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"FEL vid försök att öppna fil: '%s' (%s).\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "FEL: Misslyckades med att skriva kommentarer till filen '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "Skriver tagg av '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "Avlägsna taggen från '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "Fel vid borttagning av ID3v1 taggen från '%s' (%s)"
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "Fel vid borttagning av ID3v2 taggen från '%s' (%s)"
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "Fel vid uppdatering av ID3v2 taggen från '%s' (%s)"
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+"Du har försökt att spara denna tagg till Unicode men det har visat sig att "
+"din version av id3lib är buggig.\n"
+"Om du åter laddar denna fil kommer vissa tecken inte att återges korrekt...\n"
+"Vänligen, installera till id3lib patchen src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"som finns i EasyTAG paketets källkod.\n"
+"Notera att detta medelande endast visas en gång.\n"
+"\n"
+"Fil : %s"
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "Fel vid uppdatering av ID3v1 taggen från '%s' (%s)"
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "Uppdaterade taggen på '%s'"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "Inga fel rapporterades"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "Inte tillräckligt mycket minne"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "Ingen data att analysera"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "Inkorrekt formaterad data"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "Ingen buffert att skriva till"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "Bufferten är för liten"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "Inkorrekt ram ID"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "Efterfrågat fält kunde inte hittas"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "Okänd fält typ"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "Taggen är redan kopplad till en fil"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "Inkorrekt tagg version"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "Ingen fil att analysera"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "Försök att skriva till fil med enbart läs-rättigheter"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "Fel vid komprimering/av-komprimering"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "Okänt felmeddelande!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+"Eftersom följande korrupta fil: '%s'\n"
+"kommer att orsaka fel i id3lib, kommer den inte att köras av programmet."
+
+#: src/id3_tag.c:1214
+msgid "Corrupted file..."
+msgstr "Trasig fil..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr "OK"
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr "Ja"
+
+#: src/misc.c:221
+msgid " No "
+msgstr "Nej"
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr "Utför"
+
+#: src/misc.c:231
+msgid " Save "
+msgstr "Spara"
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr "Avbryt"
+
+#: src/misc.c:241
+msgid " Close "
+msgstr "Stäng"
+
+#: src/misc.c:246
+msgid " Write "
+msgstr "Skriv"
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr "Kör"
+
+#: src/misc.c:256
+msgid " Search "
+msgstr "Sök"
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr "Bläddra..."
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "Välj katalog..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "Välj fil..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "Söker..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "Kan inte köra %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "B"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "KB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "MB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "GB"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "TB"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "Generera en spel-lista"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "M3U Spel-lista Namn"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "Använd katalogens namn"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "Editera Maskar"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "Spel-lista valmöjligheter"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "Inkludera enbart de valda filerna"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+"Om aktiverad kommer enbart dom valda filerna att skrivas till spel-listans "
+"fil. Annars skrivs samtliga filer till spel-listans fil."
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "Använd fullständig sökväg för filerna i spel-listan"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "Använd relativ sökväg för filerna i spel-listan"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "Skapa en spel-lista i föräldra katalogen"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr "Om aktiverad kommer en spel-lista att skapas i föräldra katalogen"
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "Använd DOS-katalogs separering"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+"denna möjlighet byter UNIX katalog separation '/' till DOS separator '\\'"
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "Spel-lista Innehåll"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "Skriv enbart en lista över filerna"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "Använd filnamnet för att skriva info"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "Skriva info användandes :"
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"Spel-listan '%s' existerar redan!\n"
+"Skriva över?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "Skriva Spel-lista..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"Kan inte skriva spel-listan '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "Skrev Spel-lista '%s'"
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "CD"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "Spår"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "Kommentar"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "Kompositör"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "Orig. Artist"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "Copyright"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr "URL"
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "Kodad av"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "Sök efter fil"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+"Skriv in det ordet som du vill söka efter i filerna. Eller skriv inte in "
+"någonting för att visa alla filer."
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "I :"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "FilNamn"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "Taggen"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "Teckenkänsligt"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "Hittade : %d fil(er)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "Ladda filnamn från en TXT fil"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "Fil :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " Ladda"
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "Ladda Fil Innehåll :"
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "Filnamns-Lista :"
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+"När denna möjlighet aktiveras, efter att filnamn laddats kommer den valda "
+"scannern att köras (scanner fönstret måste vara öppnat)."
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "Lägg till en blank rad"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "Radera denna rad"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "Radera samtliga blanka rader"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "Ladda om"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr "Profil:"
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "Ljud"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "Okänd"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "MP4 formatet är ogiltigt"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr "~%d kb/s"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "upprepa åtgärden för resterande filer"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "Ogg-dataströmningen innehåller ingen vorbis-data."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "FEL: Misslyckades med att öppna filen: '%s' som en vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr "Varning : Ogg Vorbis filen '%s' innehåller en ID3v2 tagg."
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "Lägg till bilder"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "Alla Filer"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG och JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr "Bild Rättigheter %d/%d"
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "BildTyp"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "Bild Beskrivning:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr "Spara bild %d/%d"
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+"Följande fil existerar redan :\n"
+"'%s'\n"
+"Vill du skriva över den?"
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "Spara fil..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "JPEG bild"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "PNG bild"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "Okänd bild"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr "32x32 pixel PNG fils ikon"
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr "Annan fil ikon"
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr "Konvolut (framsida)"
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr "Konvolut (baksida)"
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr "Ströskrifts sida"
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr "Media (e.g. etikettsida av CD)"
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr "Lead artist/lead performer/solist"
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "Artist/performer"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "Dirigent"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "Band/Orkester"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr "Lyrik/text författare"
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr "Plats för inspelning"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr "Under inspelning"
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr "Under framträdande"
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr "Film/video upptagning"
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr "En ljust färgad fisk"
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr "Illustration"
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr "Band/Artist-logotyp"
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr "Utgivare/studio-logotyp"
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr "Okänd bildtyp"
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "pixtlar"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "Typ"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "Beskrivning"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+"Kan inte visa bilden då inte tillräckligt med data har lästs in för att "
+"kunna avgöra hur bild bufferten skall skapas."
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "Laddar bildfil..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"Kan inte öppna fil :\n"
+"'%s'!\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr "Bildfilen är inte laddad..."
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "Inställningar..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "Fil-Bläddrare"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "Gå till Förvald Katalog"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"Specificera katalogen där dina filer är lokaliserade. Denna sökväg kommer "
+"att laddas när EasyTAG startar utan parameter."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"Sök automatiskt efter filer i denna katalog när EasyTAG startas. Notera att "
+"denna sökväg kan komma att skrivas över av dom parametrar som ges till "
+"easytag (easytag /sökväg_till/mp3_filer)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "Söka i Underkataloger"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "Sök i underkataloger efter filer och läs in dom i trädstrukturen."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "Visa underkataloger vid val av katalog"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"Detta expanderar den valda noden i fil-bläddraren så att underkataloger "
+"visas."
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "Sök dolda kataloger"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "Sök i dolda kataloger efter filer (kataloger som börjar med en '.')."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "Användar-Gränsnitt"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "Visa huvudinformationen av fil"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"Om aktiverad kommer informationen om filen, såsom bitrate, tid och storlek "
+"att visas under filnamnet."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr "Använd följande för att visa ändrade filer :"
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr "Röd färg"
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr "Fet stil"
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "Möjligheter för sortering av lista"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "Sortera fil-listan efter :"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "Stigande filnamn"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "Fallande filnamn"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "Stigande spårnummer"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "Fallande spårnummer"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "Stigande datum för skapande av filen"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "Fallande datum för skapande av filen"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "Stigande titel"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "Fallande titel"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "Stigande artist"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "Fallande artist"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "Stigande album"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "Fallande album"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "Stigande år"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "Fallande år"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "Stigande genre"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "Fallande genre"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "Stigande kommentar"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "Fallande kommentar"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "Välj vilken typ av fil som skall sorteras när katalogen öppnas."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "Om aktiverad kommer sorteringen av filer att bero på detta val."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "Meddelandedialogens position"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "Ingen specifik position"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "Överlåt på Fönsterhanteraren att välja position för fönster."
+
+#: src/prefs.c:350
+msgid "Center of the main window"
+msgstr "I centrum av huvudfönstret"
+
+#: src/prefs.c:354
+msgid "Windows should be placed in the center of the main window."
+msgstr "Fönstret kommer att placeras i mitten av huvudfönstret."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "Centrerat på skärmen"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "Fönstret kommer att placeras i mitten av skärmen."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "Muspekarens position"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "Fönstret kommer att placeras där muspekaren befinner sig."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "LjudFils-spelare"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "Spelare att använda :"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+"Skriv in det namnet på den spelare du önskar använda för att spela "
+"ljudfiler. En del argument kan användas (ex 'xmms -p') i förväg för att ta "
+"emot filer som andra argument."
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "Fil-Inställningar"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "Fil-Möjligheter"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "Byt ut illegala tecken i filnamn (för Windows och CD-rom)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+"Konvertera illegala tecken för FAT32/16 och ISO9660 + Joliet filsystem "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') i filnamn för att undvika "
+"problem när filerna döps om. Detta är användbart när man döper om filer från "
+"taggarna med hjälp av scannern."
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "Konvertera filändelser till :"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "Gemener"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr "Exempelvis kommer ändelsen att konvertera till '.mp3'"
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "Versaler"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr "Exempelvis kommer ändelsen att konvertera till '.MP3'"
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "Ändra Inte"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr "Ändelsen kommer inte att konverteras"
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr "Bevara ändringstiden på filen"
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr "Bevarar tiden för filens ändring (i fil-egenskaperna) när den sparas."
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr "Tecken-Uppsättning för Filnamn"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+"Regler att applicera om tecken inte kan konverteras till systemets "
+"teckenkodning vid skrivning av filnamn."
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "Pröva en annan teckenkodning"
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+"Med denna möjlighet, kommer programmet att försöka att konvertera till den "
+"teckenkodning som systemet använder lokalt (exempelvis : ISO-8859-1 för "
+"'fr', KOI8-R för 'ru', ISO-8859-2 för 'ro'). om detta inte lyckas, kommer "
+"programmet att försöka med tecken kodningen ISO-8859-1."
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+"Tvinga fram användande av systemets teckenkodning och aktivera översättningen"
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+"Med denna möjlighet, när ett tecken inte kan representeras av "
+"teckensnittstabellen så kan den eventuellt representeras av en eller flera "
+"liknande tecken."
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+"Tvinga fram användande av systemets teckenkodning och avlägsna somliga "
+"tecken i tysthet"
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+"Med denna möjlighet, när ett tecken inte kan representeras av "
+"teckensnittstabellen så kommer den i tysthet att uteslutas."
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "Tagg-Inställningar"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "Tagg-Möjligheter"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "Om ej komplett, fyll i datum automatiskt"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"Försök att komplettera års fältet om enbart sista siffrorna skrivs in av "
+"årtalet (exempelvis, om valt år är 2005: 5 => 2005, 4 => 2004, 6 => 1996, 95 "
+"=> 1995, ...)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "Fyll i spårfältet med följande siffror :"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+"Om aktiverat så kommer spårfältet att fyllas i med siffran '0' som inledande "
+"nummer, för att använda en nummerserie med 'n' antal siffror (Ex. med två "
+"siffror : '05', '09', '10',...). I annat fall bevaras det 'råa' spårvärdet."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "Ogg Vorbis Filer : Skriv även kommentarer för XMMS formatet"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+"XMMS gör inte bruk av identiteten på Ogg Vorbis filer på rätt sätt som andra "
+"applikationer gör. Faktum är att detta fält vanligtvis innehåller en "
+"'kommentar=', där XMMS enbart använder `='. Vänligen avmarkera detta om du "
+"inte vill att andra applikationer ska klaga på ett okänt fält. Kommentarerna "
+"kommer ändå inte att visas i XMMS."
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+"Sätt fokus på taggfältet när byte sker mellan filer med kortkommandona Sida "
+"Upp/Sida Ned:"
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr "Bevarar fokus för samma tagg-fält"
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr "Sätt åter fokus på första tagg-fältet ('Titel'-fältet)"
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+msgid "ID3 Tag Settings"
+msgstr "Inställningar för ID3 Taggar"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "Regler för ID3 Taggar"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+#, fuzzy
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr "Skriv ID3 taggar i FLAC filer med FLAC tagg"
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"Om aktiverad kommer en ID3 tagg att läggas till FLAC filen (i enlighet till "
+"de två reglerna ovan, plus FLAC taggen). I annat fall kommer ID3 taggen att "
+"tas bort."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "Ta bort taggen om alla fält är tomma"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"Eftersom en ID3v2 tagg kan innehålla annan data än Titel, Artist, Album, År, "
+"Spår, Genre eller Kommentarer ( som tillexempel tillhörande bilder, "
+"lyrik, ...), så ger dej detta möjligheten att ta bort hela taggen när dessa "
+"sju standardfält har tömts."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "Konvertera automatiskt äldre ID3v2 tagg versioner"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"Om aktiverad kommer en äldre verision av ID3v2 (som ID3v2.2) taggen att "
+"uppdateras till ID3v2.3 versionen."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "Skriv ID3v2 tagg"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "Ställ in teckenuppsättning för ID3 taggar"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "Skriv ID3v2 tagg"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "Skriv ID3v2 tagg"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"Om aktiverad kommer en ID3v2 tagg att läggas till eller uppdateras i slutet "
+"av MP3 filen. I annat fall kommer den att tas bort."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "Beskrivning:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "Unicode (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "Kodad av"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "Teckenuppsättning att använda för att skriva in data i filens tagg."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr "Nej"
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3 Tagg"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "Skriv ID3v1.x taggen"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"Om aktiverad kommer en ID3v1 tagg att läggas till eller uppdateras i slutet "
+"av MP3 filen. I annat fall kommer den att tas bort."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "Teckenuppsättning att använda för att skriva in data i filens tagg."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "Ställ in teckenuppsättning för ID3 taggar"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+"Denna teckensnittskodningen kommer att användas vid läsning av tagg data för "
+"att konvertera till ISO-8859-1 i tagg fälten (för ID3v2 och/eller ID3v1 "
+"taggar).\n"
+"\n"
+"Exempelvis :\n"
+" - i tidigare versioner av EasyTAG kan du spara UTF-8 strängar i ett ISO-"
+"8859-1 fält. Detta är inte korrekt! För att konvertera dessa taggar till "
+"Unicode: aktivera denna möjlighet och välj UTF-8. Du måste även aktivera "
+"möjligheten 'Försök att spara taggar i ISO-8859-1. Om det inte är möjligt "
+"att använda UNICODE (rekommenderas)' eller 'Alltid spara taggar i UNICODE's "
+"teckenuppsättning'.\n"
+" - Om unicode inte användes, så kan Rysk-talande människor välja "
+"teckensnittskodningen 'Windows-1251' för att ladda taggar skrivna i Windows. "
+"Och 'KOI8-R' för att ladda taggar skrivna i Unix system."
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "Teckenuppsättning att använda för att läsa data i filens tagg."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "Scanner"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "Fyll Tagg-Fält Scanner - Tecken Konvertering"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "Konvertera nedsänkta streck '_' och '%20' strängar till mellanslag ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "Konvertera mellanslag ' ' till nedsänkta streck '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+"Om aktiverad kommer denna konvertering att användas vid applicering av en "
+"mask från scannern av taggar."
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "Döpa om Filer Scanner - Tecken Konvertering"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+"Om aktiverad så kommer denna konvertering användas när mask läggs till från "
+"scanner till filnamnen."
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "Bearbeta Fält Scanner - Tecken konvertering"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+"Gör inte om begynnelsebokstaven till versal i ord för prepositioner och "
+"artiklar."
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+"Gör inte om begynnelsebokstaven till versal i ord för prepositioner, "
+"artiklar och prestation., vid användning av scanner 'Gör om första bokstav "
+"av varje ord till versal' (exempelvis, resultatet kommer att bli 'En "
+"inledande text' istället för 'En Inledande Text')."
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "Scanner-Fönster"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "Öppna Scanner-Fönstret vid start"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"Aktivera denna möjlighet för att automatiskt öppna scanner-fönstret vid "
+"start av EasyTAG."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "Scanner-fönstret alltid överst"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"Om aktiverad så kommer fönstret som innehåller maskningen att alltid ligga "
+"ovan på huvud fönstret."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "Fält"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "Skriv över fälten när taggar scannas"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+"Om aktiverad så kommer alltid texten i tagg fälten att skrivas över med den "
+"nya texten. Om avaktiverad så fylls enbart de blanka fälten i taggen med ny "
+"text."
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "Använd denna text som förvald kommentar :"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+"Aktivera denna möjlighet om du vill lägga till denna sträng till kommentar-"
+"fältet vid användning av 'Fyll Tagg'-scannern."
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "Använd CRC32 som förvald kommentar (endast för filer med ID3 taggar)."
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+"Beräkna värdet av CRC-32 i filen och skriv in detta i kommentar fältet vid "
+"användning av 'Fyll Tagg' scannern."
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "CD Data Bas"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr "Server Inställningar för Automatisk Sökning"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "Namn :"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "Port :"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI Sökväg :"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+msgid "Server Settings for Manual Search"
+msgstr "Server Inställningar för Manuell Sökning"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "CD Data Bas"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "CGI Sökväg :"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "Proxy Inställningar"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "Använd en proxy"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "Aktivera inställningarna för proxy servern."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "Värd Namn :"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "Namnge proxy servern."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "Port att använda för proxy servern."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "Användar Namn :"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "Namn på användare för proxy servern."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "Användarens Lösenord :"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "Användar-lösenord för proxy servern."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "Spår Namn Lista"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+"Välj motsvarande ljudfil (I enlighet med positionen eller DLM om aktiverad "
+"nedan)"
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+"Om aktiverad, när en fil väljs i listan över spårnamn görs motsvarande val "
+"av ljudfilen i huvud-listan."
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+"Använd Levenshtein algoritmen (DLM) för att matcha rader (använd titel) med "
+"ljudfiler (används filnamnet)"
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "Bekräfta"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "Bekräfta avslut av program"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"Om aktiverat kommer en dialog att öppnas med förfrågan efter bekräftelse "
+"före avslut av program."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "Bekräfta skrivning av fil-tagg"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "Bekräfta namnbyte av fil"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "Bekräfta raderande av fil"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "Bekräfta skrivning av spellista"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "Applicera ändringarna (men spara inte) och stäng denna dialog"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "Stäng detta fönster utan att spara"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "Spara ändringar och stäng detta fönster"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr "(Exempel : %.*d_-_Spår_namn_1.mp3)"
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "Ändringarna har applicerats"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "Konfigurationen sparad"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "Konfigurationen oförändrad"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+" Den valda sökvägen för 'Default sökväg till filer' är inte valid!\n"
+"'%s'\n"
+"(%s) "
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "Inte en katalog"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "Ljud-spelaren '%s' kan inte hittas!"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "Fyll Tagg"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "Byt Namn på Fil och Katalog"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "Bearbeta Fält"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "Taggar framgångsrikt scannade..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "Taggar framgångsrikt scannade...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "Sök Fel: kan inte finna separator '%s' inom '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr "Kunde inte konvertera filnamnet '%s' till systemets filnamns kodning."
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "Nytt filnamn framgångsrikt scannat..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "Nytt filnamn framgångsrikt scannat...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "Tagg och Filnamns scanner"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "Scanner:"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "Välj typ av scanner att använda"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "Öppna scanner fönstret / Scanna valda filer"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "Scanner Val"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "Visa / Dölj Mask-Editorn"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "Visa / Dölj Legend"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "Stäng detta fönster"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+"Välj eller skriv in den typ av mask-kodning (se Legend) att analysera "
+"filnamn och sökväg med. Används för att fylla i tagg fält."
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "Förhandsvisning av fil-tagg..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr "Förinställ mask till nuvarande sökväg"
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+"Skriv in eller välj den mask du vill använda (se Legend) för att analysera "
+"tagg-fält. Används för att ändra namn på filen.\n"
+"Använd '/' för att skapa kataloger. Om det första tecknet är '/' så är det "
+"en absolut sökväg, i annat fall är den relativ till den gamla sökvägen."
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "Förhandsvisning av filer med ändrade namn..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "Välj fält:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+"Knapparna till höger representerar det fält som kan bearbetas. Välj dom som "
+"intresserar dej."
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "F"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "Bearbeta filnamns-fält"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "Bearbeta titel-fält"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "Bearbeta artist-fält"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "Bearbeta album-fält"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "Bearbeta genre-fält"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Ko"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "Bearbeta kommentar-fält"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "K"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "Bearbeta kompositör-fält"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "Bearbeta original artist-fält"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Co"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "Bearbeta copyright-fält"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "Bearbeta URL-fält"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "A"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "Bearbeta avkodar namn-fält"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "Invertera Valen"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "Välj/Välj bort Alla."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "Konvertera '_' och '%20' till ' '"
+
+#: src/scan.c:2138
+msgid "Convert:"
+msgstr "Konvertera:"
+
+#: src/scan.c:2140
+msgid "to: "
+msgstr "till: "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+"Det nedsänkta strecket eller strängen '%20' byts ut mot ett mellanslag. "
+"Exempelvis, före: 'En%20Inledande_Text', Efter: 'En Inledande Text'."
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+"Mellanslag byts ut mot ett nedsänkt streck. Exempelvis, före: 'En Inledande "
+"Text', Efter: 'En%20Inledande_Text'."
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr "Byt ut ett tecken mot ett annat."
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+"Konvertera alla ord i ett fält till versaler. Exempel, före: 'En INLEDANDE "
+"text', efter: 'EN INLEDANDE TEXT'."
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+"Konvertera alla ord i ett fält till gemener. Exempel, före: 'En INLEDANDE "
+"text', efter: 'en inledande text'."
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+"Konvertera begynnelse bokstaven i det första ordet i ett fält till en "
+"versal. Exempel, före: 'En INLEDANDE text', efter: 'En inledande text'."
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+"Konvertera alla initialer till en versal i ett fält. Exempel, före: 'En "
+"INLEDANDE text', efter: 'En Inledande Text'."
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "Lägg till ett mellanslag före en stor bokstav"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "Ta bort upprepningar av mellanslag eller nedsänkta streck"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+"Alla mellanslag tas bort. Exempel, före: 'En Inledande Text', efter: "
+"'EnInledandeText'."
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+"Ett mellanslag sätts in mellan varje versal. Exempel, före: "
+"'EnInledandeText', efter: 'En Inledande Text'."
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+"Upprepningar av nedsänkta streck eller mellanslag tas bort. Exempel, före: "
+"'En__Inledande Text', efter: 'En_Inledande Text'."
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "Legend"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : artist"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : album"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : kommentar"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p : kompositör"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r : copyright"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr "%d : skiv-nummer"
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e : kodad av"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : genre"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ignorerad"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : antal spår"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o : orig. artist"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : spår"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : titel"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : år"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "Mask Editor"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "Skapa en Ny Mask"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "Flytta Upp denna Mask"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "Flytta Ned denna Mask"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "Kopiera Mask"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "Lägga till Förvald Mask"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "Ta bort Mask"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "Spara Mask"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "Ny_mask"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "Kopiering: Ingen rad vald!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "Ta bort: Ingen rad vald!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "Flytta Upp: Ingen rad vald!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "Flytta Ned: Ingen rad vald!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr ""
+"FEL: Kan inte skriva konfigurations fil: %s (%s)\n"
+""
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "Kan inte öppna konfigurations fil %s (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "Laddar förinställd konfiguration..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "Kan inte skapa eller öppna fil '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+"FEL: Kan inte skriva lista till fil: %s (%s)\n"
+""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "Laddar default 'Fyll Tagg'-mask..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "Laddar default 'Ändra Namn på Fil'-mask..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "Laddar default 'Ändra Namn på Katalog'-mask..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"FEL: Miljö-variabeln HOME är inte definierad!\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "FEL: Kan inte skapa katalog '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "Inmatning avskuren eller tom."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "Inmatningen är inte en Ogg-dataström."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "Fel vid läsning av första delen av Ogg-dataströmningen."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "Fel vid läsning av inledande sidhuvud-paketet."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "Ogg-dataströmningen innehåller ingen vorbis-data."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "Korrupt sekundärt sidhuvud."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "EOF före slutet av vorbis-sidhuvudet."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "Korrupt eller saknad data, fortsätta..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"Fel vid skrivning av strömningen till utmatningen. Utmatningsströmningen kan "
+"vara korrupt eller avbruten."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "Starta Ljud Spelare"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "Inkorrekt tagg version"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "Unicode (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "Unicode (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "Unicode (UTF-16LE)"
+
+#~ msgid "Use padding"
+#~ msgstr "Använd spaltfyllnad"
+
+#~ msgid ""
+#~ "Set padding in the ID3v2 tags for faster writing during next changes in "
+#~ "the tag."
+#~ msgstr ""
+#~ "Ställ in spaltfyllnaden i ID3v2 taggen för att uppnå snabbare skrivning "
+#~ "nästa gång taggen ändras."
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "Spara alltid taggar i ISO-8859-1 teckenuppsättningen"
+
+#~ msgid ""
+#~ "Use the ISO-8859-1 character set (single byte character set) to write the "
+#~ "tag. This character set can be used for the ID3v2 and the ID3v1 tags, but "
+#~ "note that non-ISO-8859-1 characters will be lost.\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "Använd ISO-8859-1 teckenuppsättningen (en byte teckenuppsättning) för att "
+#~ "skriva taggar. Denna teckenuppsättning kan användas för att skriva ID3v2 "
+#~ "och ID3v1 taggar, men notera att inget tecken i teckenuppsättningen "
+#~ "kommer att förloras.\n"
+#~ "\n"
+#~ "Om en annan teckenuppsättning valts med 'Använd en icke standard "
+#~ "teckenuppsättning för att skriva i ID3 taggar', så kommer denna att "
+#~ "användas istället för ISO-8859-1.\n"
+#~ "Det går även att definiera reglerna om vissa tecken inte kan konverteras."
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr ""
+#~ "Försök att spara taggar i ISO-8859-1. Om detta inte är möjligt använd "
+#~ "UNICODE (rekommenderas)"
+
+#~ msgid ""
+#~ "The UNICODE character set will be used if conversion to ISO-8859-1 fails. "
+#~ "Unicode can be used for ID3v2 but not for the ID3v1 tags which use only a "
+#~ "single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1.\n"
+#~ "Also some rules can be defined if some characters can't be converted."
+#~ msgstr ""
+#~ "UNICODE's teckenuppsättning kommer att användas om konvertering till ISO-"
+#~ "8859-1 misslyckas. Unicode kan användas till ID3v2 men inte till ID3v1 "
+#~ "taggar vilka använder en byte's teckenuppsättningar (default ISO-8859-"
+#~ "1).\n"
+#~ "\n"
+#~ "Om en annan teckenuppsättning valts med 'Använd en icke standard "
+#~ "teckenuppsättning för att skriva i ID3 taggar', så kommer denna att "
+#~ "användas istället för ISO-8859-1.\n"
+#~ "Det går även att definiera reglerna om vissa tecken inte kan konverteras."
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "Spara alltid taggar i UNICODE teckenuppsättningen"
+
+#~ msgid ""
+#~ "Use UNICODE character set for ID3v2 tags. The ID3v1 tags are always saved "
+#~ "with a single byte character set (by default ISO-8859-1).\n"
+#~ "\n"
+#~ "If a different charset is selected with 'Use non standard character set "
+#~ "for writing ID3 tags', it will be used instead of ISO-8859-1."
+#~ msgstr ""
+#~ "Använd UNICODE teckenuppsättningen för ID3v2 taggar. ID3v1 taggar "
+#~ "använder alltid en byte's teckenuppsättningar (default ISO-8859-1).\n"
+#~ "\n"
+#~ "Om en annan teckenuppsättning valts med 'Använd en icke standard "
+#~ "teckenuppsättning för att skriva i ID3 taggar', så kommer denna att "
+#~ "användas istället för ISO-8859-1."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, override with the following character encodings "
+#~ "(for expert users only!): "
+#~ msgstr ""
+#~ "För ISO-8859-1 fält, upphävs av följande tecken-kod (endast för "
+#~ "experter!):"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr ""
+#~ "Använd en icke standard teckenuppsättning för att läsa i ID3 taggar:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr ""
+#~ "Använd en icke standard teckenuppsättning för att skriva ID3 taggar:"
+
+#~ msgid ""
+#~ "This character set will be used when writing the tag data, to convert "
+#~ "each string saved in an ISO-8859-1 field in the tag (for ID3v2 or/and "
+#~ "ID3v1 tag)."
+#~ msgstr ""
+#~ "Denna uppsättning av teckensnittskodningen kommer att användas vid "
+#~ "skrivning av data till tagg fälten för att konvertera varje tagg fält "
+#~ "sparat i ISO-8859-1 (för ID3v2 och/eller ID3v1 tag)."
+
+#~ msgid ""
+#~ "For ISO-8859-1 fields, apply also these rules if some characters can't be "
+#~ "converted when writing tags:"
+#~ msgstr ""
+#~ "För ISO-8859-1 fält, applicera även dessa regler om vissa tecken inte kan "
+#~ "konverteras vid skrivning till tagg fält:"
+
+#~ msgid "Do nothing"
+#~ msgstr "Gör ingenting"
+
+#~ msgid "Force using the character encoding and activate the transliteration"
+#~ msgstr "Framtvinga teckensnittskodningen och aktivera översättningen"
+
+#~ msgid ""
+#~ "Force using the character encoding and silently discard some characters"
+#~ msgstr ""
+#~ "Framtvinga användande av teckensnitskodningen och avlägsna i tysthet "
+#~ "vissa tecken"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "Översättning av teckensnittskoden från '%s'\n"
+#~ "till '%s' understöds inte!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "FEL vid försök att öppna fil: '%s' (%s).\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "Ladda denna katalog vid start"
+
+#~ msgid "#:"
+#~ msgstr "#:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "Ställ in gul bakgrund för ballongtips"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "Om aktiverad kommer bakgrunden i ballongtipsen att färgas gul, kringgår "
+#~ "din fönsterhanterare."
diff --git a/po/uk.gmo b/po/uk.gmo
new file mode 100644
index 0000000..57948a1
--- /dev/null
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 0000000..d72673b
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,5432 @@
+# Ukrainian Translation for EasyTag
+# Copyright (C) 2001-2004 Free Software Foundation, Inc.
+# Olexander Kunytsa, <kunia@istc.kiev.ua>, 2001, 2002.
+# Cawko Xakep <xakep@snark.ukma.kiev.ua>, 2001, 2002, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: EasyTag 0.28.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2003-09-12 12:02+0300\n"
+"Last-Translator: Cawko Xakep <xakep@snark.ukma.kiev.ua>\n"
+"Language-Team: Ukrainian <linux@linux.org.ua>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=KOI8-U\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/about.c:122
+#, fuzzy
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+" EasyTAG - ÕÔÉ̦ÔÁ ÄÌÑ ÐÅÒÅÇÌÑÄÕ, ÒÅÄÁÇÕ×ÁÎÎÑ ÔÁ ÚÁÐÉÓÕ ÔÅÇ¦× Õ ÆÁÊÌÉ MP3, "
+"MP2, FLAC, Ogg Vorbis, MusePack ÔÁ Monkey's Audio. ðÒÏÓÔÉÊ ÔÁ ÐÒɤÍÎÉÊ "
+"¦ÎÔÅÒÆÅÊÓ GTK+ ÄÏÐÏÍÏÖÅ ÐÒÏÃÅÓÕ ÚÁÐÉÓÕ ÔÅǦ×."
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(ðÅÒÅËÌÁÄ Î¦ÍÅÃØËÏÀ)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÒÏÓ¦ÊÓØËÏÀ)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÄÁÔÓØËÏÀ)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(ðÅÒÅËÌÁÄ Û×ÅÄÓØËÏÀ)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÕÇÏÒÓØËÏÀ)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(ðÅÒÅËÌÁÄ ¦ÔÁ̦ÊÓØËÏÀ)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÑÐÏÎÓØËÏÀ)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÕËÒÁ§ÎÓØËÏÀ)"
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÞÅÓØËÏÀ)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(ðÅÒÅËÌÁÄ ¦ÓÐÁÎÓØËÏÀ)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÐÏÌØÓØËÏÀ)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÒÕÍÕÎÓØËÏÀ)"
+
+#: src/about.c:156
+#, fuzzy
+msgid "(Danish translation)"
+msgstr "(ðÅÒÅËÌÁÄ ¦ÓÐÁÎÓØËÏÀ)"
+
+#: src/about.c:157
+#, fuzzy
+msgid "(Greek translation)"
+msgstr "(ðÅÒÅËÌÁÄ Î¦ÍÅÃØËÏÀ)"
+
+#: src/about.c:158
+#, fuzzy
+msgid "(Brazilian Portuguese translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÑÐÏÎÓØËÏÀ)"
+
+#: src/about.c:159
+#, fuzzy
+msgid "(Bulgarian translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÕÇÏÒÓØËÏÀ)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(ðÅÒÅËÌÁÄ ÑÐÏÎÓØËÏÀ)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(ðÅÒÅËÌÁÄ Î¦ÍÅÃØËÏÀ)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "ðÒÏ..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "ðÒÏ"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(Ú¦ÂÒÁÎÏ: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(×ÉËÏÒÉÓÔÏ×ÕÀ: gtk+ %d.%d.%d ÔÁ id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:296
+#, fuzzy, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:312
+#, fuzzy
+msgid "(FLAC file support disabled)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:317
+#, fuzzy
+msgid "(MP4/AAC file support disabled)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(ЦÄÔÒÉÍËÕ OGG ×ÉÍËÎÅÎÏ)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "á×ÔÏÒ: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "E-mail: %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "äÏÍÁÛÎÑ ÓÔÏÒ¦ÎËÁ: "
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "èÁÒÁËÔÅÒÉÓÔÉËÁ:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "ðÏÄÑËÉ"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "ðÅÒÅËÌÁÄÉ:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "úÁÇÁÌØΦ:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "úͦÎÉ"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ '%s' (%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "ðïíéìëá צÄËÒÉÔÔÑ ÆÁÊÌÁ: '%s' (%s)."
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+#, fuzzy
+msgid "_File"
+msgstr "/æÁÊÌ"
+
+#: src/bar.c:147
+#, fuzzy
+msgid "Sort list by tag"
+msgstr "óÏÒÔÕ×ÁÔÉ ÓÐÉÓÏË ÆÁÊÌ¦× ÚÁ: "
+
+#: src/bar.c:148
+#, fuzzy
+msgid "Sort list by property"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÞÁÓÔÏÔÉ ÄÉÓËÒÅÔÉÚÁæ§"
+
+#: src/bar.c:149
+#, fuzzy
+msgid "Ascending by filename"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ"
+
+#: src/bar.c:150
+#, fuzzy
+msgid "Descending by filename"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ"
+
+#: src/bar.c:151
+#, fuzzy
+msgid "Ascending by creation date"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÄÁÔÉ ÓÔ×ÏÒÅÎÎÑ"
+
+#: src/bar.c:152
+#, fuzzy
+msgid "Descending by creation date"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÄÁÔÉ ÓÔ×ÏÒÅÎÎÑ"
+
+#: src/bar.c:153
+#, fuzzy
+msgid "Ascending by track number"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#: src/bar.c:154
+#, fuzzy
+msgid "Descending by track number"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#: src/bar.c:155
+#, fuzzy
+msgid "Ascending by title"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ËÏÍÐÏÚÉæ§"
+
+#: src/bar.c:156
+#, fuzzy
+msgid "Descending by title"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ËÏÍÐÏÚÉæ§"
+
+#: src/bar.c:157
+#, fuzzy
+msgid "Ascending by artist"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#: src/bar.c:158
+#, fuzzy
+msgid "Descending by artist"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#: src/bar.c:159
+#, fuzzy
+msgid "Ascending by album"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÎÁÚ×É ÁÌØÂÏÍÕ"
+
+#: src/bar.c:160
+#, fuzzy
+msgid "Descending by album"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÎÁÚ×É ÁÌØÂÏÍÕ"
+
+#: src/bar.c:161
+#, fuzzy
+msgid "Ascending by year"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÒÏËÕ"
+
+#: src/bar.c:162
+#, fuzzy
+msgid "Descending by year"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÒÏËÕ"
+
+#: src/bar.c:163
+#, fuzzy
+msgid "Ascending by genre"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÖÁÎÒÕ"
+
+#: src/bar.c:164
+#, fuzzy
+msgid "Descending by genre"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÖÁÎÒÕ"
+
+#: src/bar.c:165
+#, fuzzy
+msgid "Ascending by comment"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÄÁÔÉ ËÏÍÅÎÔÁÒÑ"
+
+#: src/bar.c:166
+#, fuzzy
+msgid "Descending by comment"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÄÁÔÉ ËÏÍÅÎÔÁÒÑ"
+
+#: src/bar.c:167
+#, fuzzy
+msgid "Ascending by composer"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÄÁÔÉ ËÏÍÅÎÔÁÒÑ"
+
+#: src/bar.c:168
+#, fuzzy
+msgid "Descending by composer"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÄÁÔÉ ËÏÍÅÎÔÁÒÑ"
+
+#: src/bar.c:169
+#, fuzzy
+msgid "Ascending by original artist"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#: src/bar.c:170
+#, fuzzy
+msgid "Descending by original artist"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#: src/bar.c:171
+#, fuzzy
+msgid "Ascending by copyright"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#: src/bar.c:172
+#, fuzzy
+msgid "Descending by copyright"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#: src/bar.c:173
+#, fuzzy
+msgid "Ascending by URL"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÒÏËÕ"
+
+#: src/bar.c:174
+#, fuzzy
+msgid "Descending by URL"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÒÏËÕ"
+
+#: src/bar.c:175
+#, fuzzy
+msgid "Ascending by encoder name"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÖÁÎÒÕ"
+
+#: src/bar.c:176
+#, fuzzy
+msgid "Descending by encoder name"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÖÁÎÒÕ"
+
+#: src/bar.c:177
+#, fuzzy
+msgid "Ascending by file type"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ"
+
+#: src/bar.c:178
+#, fuzzy
+msgid "Descending by file type"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ"
+
+#: src/bar.c:179
+#, fuzzy
+msgid "Ascending by file size"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ"
+
+#: src/bar.c:180
+#, fuzzy
+msgid "Descending by file size"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ"
+
+#: src/bar.c:181
+#, fuzzy
+msgid "Ascending by duration"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÞÁÓÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#: src/bar.c:182
+#, fuzzy
+msgid "Descending by duration"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÞÁÓÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#: src/bar.c:183
+#, fuzzy
+msgid "Ascending by bitrate"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ Â¦ÔÒÅÊÔÁ"
+
+#: src/bar.c:184
+#, fuzzy
+msgid "Descending by bitrate"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ Â¦ÔÒÅÊÔÁ"
+
+#: src/bar.c:185
+#, fuzzy
+msgid "Ascending by samplerate"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÞÁÓÔÏÔÉ ÄÉÓËÒÅÔÉÚÁæ§"
+
+#: src/bar.c:186
+#, fuzzy
+msgid "Descending by samplerate"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÞÁÓÔÏÔÉ ÄÉÓËÒÅÔÉÚÁæ§"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "÷¦ÄËÒÉÔÉ ÚÁ ÄÏÐÏÍÏÇÏÀ..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "÷ÉÂÒÁÔÉ ×Ó¦ ÆÁÊÌ"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "óËÁÓÕ×ÁÔÉ ×ɦÒËÕ"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "¶Î×ÅÒÔÕ×ÁÔÉ ×ɦÒËÕ"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "÷ÉÄÁÌÅÎÎÑ ÆÁÊ̦×"
+
+#: src/bar.c:193
+#, fuzzy
+msgid "_First File"
+msgstr "/æÁÊÌ/ðÅÒÛÉÊ ÆÁÊÌ"
+
+#: src/bar.c:193
+#, fuzzy
+msgid "First File"
+msgstr "/æÁÊÌ/ðÅÒÛÉÊ ÆÁÊÌ"
+
+#: src/bar.c:194
+#, fuzzy
+msgid "_Previous File"
+msgstr "/æÁÊÌ/ðÏÐÅÒÅÄÎ¦Ê ÆÁÊÌ"
+
+#: src/bar.c:194
+#, fuzzy
+msgid "Previous File"
+msgstr "/æÁÊÌ/ðÏÐÅÒÅÄÎ¦Ê ÆÁÊÌ"
+
+#: src/bar.c:195
+#, fuzzy
+msgid "_Next File"
+msgstr "/æÁÊÌ/îÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#: src/bar.c:195
+#, fuzzy
+msgid "Next File"
+msgstr "/æÁÊÌ/îÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#: src/bar.c:196
+#, fuzzy
+msgid "_Last File"
+msgstr "/æÁÊÌ/ïÓÔÁÎÎ¦Ê ÆÁÊÌ"
+
+#: src/bar.c:196
+#, fuzzy
+msgid "Last File"
+msgstr "/æÁÊÌ/ïÓÔÁÎÎ¦Ê ÆÁÊÌ"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+#, fuzzy
+msgid "S_can File(s)"
+msgstr "/æÁÊÌ/óËÁÎÕ×ÁÔÉ ÆÁÊÌ"
+
+#: src/bar.c:199
+#, fuzzy
+msgid "Scan File(s)"
+msgstr "/æÁÊÌ/óËÁÎÕ×ÁÔÉ ÆÁÊÌ"
+
+#: src/bar.c:200
+#, fuzzy
+msgid "_Remove Tag(s)"
+msgstr "/æÁÊÌ/÷ÉÄÁÌÉÔÉ ÔÅÇÉ"
+
+#: src/bar.c:200
+#, fuzzy
+msgid "Remove Tag(s)"
+msgstr "/æÁÊÌ/÷ÉÄÁÌÉÔÉ ÔÅÇÉ"
+
+#: src/bar.c:201
+#, fuzzy
+msgid "_Undo Last File(s) Changes"
+msgstr "/æÁÊÌ/÷_iÄͦÎÉÔÉ ÚͦÎÉ × ÏÓÔÁÎÎØÏÍÕ ÆÁÊ̦"
+
+#: src/bar.c:201
+#, fuzzy
+msgid "Undo Last File(s) Changes"
+msgstr "/æÁÊÌ/÷_iÄͦÎÉÔÉ ÚͦÎÉ × ÏÓÔÁÎÎØÏÍÕ ÆÁÊ̦"
+
+#: src/bar.c:202
+#, fuzzy
+msgid "R_edo Last File(s) Changes"
+msgstr "/æÁÊÌ/ðÏ×ÔÏÒÉÔÉ ÚͦÎÉ × ÏÓÔÁÎÎØÏÍÕ ÆÁÊ̦"
+
+#: src/bar.c:202
+#, fuzzy
+msgid "Redo Last File(s) Changes"
+msgstr "/æÁÊÌ/ðÏ×ÔÏÒÉÔÉ ÚͦÎÉ × ÏÓÔÁÎÎØÏÍÕ ÆÁÊ̦"
+
+#: src/bar.c:203
+#, fuzzy
+msgid "_Save File(s)"
+msgstr "/æÁÊÌ/úÂÅÒÅÇÔÉ ÆÁÊÌÉ"
+
+#: src/bar.c:203
+#, fuzzy
+msgid "Save File(s)"
+msgstr "/æÁÊÌ/úÂÅÒÅÇÔÉ ÆÁÊÌÉ"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "_Force Saving File(s)"
+msgstr "/æÁÊÌ/óËÁÎÕ×ÁÔÉ ÆÁÊÌ"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "Force Saving File(s)"
+msgstr "/æÁÊÌ/óËÁÎÕ×ÁÔÉ ÆÁÊÌ"
+
+#: src/bar.c:205
+#, fuzzy
+msgid "Undo Last Changes"
+msgstr "/æÁÊÌ/óËÁÓÕ×ÁÔÉ ÏÓÔÁÎΦ ÚͦÎÉ"
+
+#: src/bar.c:206
+#, fuzzy
+msgid "Redo Last Changes"
+msgstr "/æÁÊÌ/ðÏ×ÔÏÒÉÔÉ ÏÓÔÁÎΦ ÚͦÎÉ"
+
+#: src/bar.c:207
+#, fuzzy
+msgid "_Quit"
+msgstr "/æÁÊÌ/÷ÉȦÄ"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr ""
+
+#: src/bar.c:209
+#, fuzzy
+msgid "_Browser"
+msgstr "/ðÅÒÅÇÌÑÄÁÞ"
+
+#: src/bar.c:210
+#, fuzzy
+msgid "Go to _Home Directory"
+msgstr "ðÅÒÅÊÔÉ × ÄÏÍÁÛÎ¦Ê ËÁÔÁÌÏÇ"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "ðÅÒÅÊÔÉ × ÄÏÍÁÛÎ¦Ê ËÁÔÁÌÏÇ"
+
+#: src/bar.c:211
+#, fuzzy
+msgid "Go to _Default Directory"
+msgstr "ðÅÒÅÊÔÉ Õ ÓÔÁÒÔÏ×ÉÊ ËÁÔÁÌÏÇ"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "ðÅÒÅÊÔÉ Õ ÓÔÁÒÔÏ×ÉÊ ËÁÔÁÌÏÇ"
+
+#: src/bar.c:212
+#, fuzzy
+msgid "Set _Current Path as Default"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÓÔÁÒÔÏ×ÉÍ ËÁÔÁÌÏÇÏÍ"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÓÔÁÒÔÏ×ÉÍ ËÁÔÁÌÏÇÏÍ"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr ""
+
+#: src/bar.c:214
+#, fuzzy
+msgid "Rename Directory ..."
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÔÉ ËÁÔÁÌÏÇ..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "ðÅÒÅÞÉÔÁÔÉ ËÁÔÁÌÏÇ"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "ðÅÒÅÇÌÑÎÕÔÉ ÚÁ ÄÏÐÏÍÏÇÏÀ..."
+
+#: src/bar.c:217
+#, fuzzy
+msgid "_Collapse Tree"
+msgstr "úÇÏÒÎÕÔÉ ÄÅÒÅ×Ï"
+
+#: src/bar.c:218
+#, fuzzy
+msgid "_Refresh Tree"
+msgstr "ïÎÏ×ÉÔÉ ÄÅÒÅ×Ï"
+
+#: src/bar.c:220 src/bar.c:249
+#, fuzzy
+msgid "S_canner"
+msgstr "óËÁÎÅÒ"
+
+#: src/bar.c:221
+#, fuzzy
+msgid "_Fill Tag(s) ..."
+msgstr "/óËÁÎÅÒ/úÁÐÏ×ÎÉÔÉ ÔÅÇÉ..."
+
+#: src/bar.c:221
+#, fuzzy
+msgid "Fill Tag(s) ..."
+msgstr "/óËÁÎÅÒ/úÁÐÏ×ÎÉÔÉ ÔÅÇÉ..."
+
+#: src/bar.c:222
+#, fuzzy
+msgid "_Rename File(s) and Directory ..."
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ËÁÔÁÌÏÇÁ"
+
+#: src/bar.c:222
+#, fuzzy
+msgid "Rename File(s) and Directory ..."
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ËÁÔÁÌÏÇÁ"
+
+#: src/bar.c:223
+#, fuzzy
+msgid "_Process Field(s) ..."
+msgstr "ïÂÒÏÂËÁ ÐÏ̦×"
+
+#: src/bar.c:223
+#, fuzzy
+msgid "Process Fields(s) ..."
+msgstr "ïÂÒÏÂËÁ ÐÏ̦×"
+
+#: src/bar.c:225
+#, fuzzy
+msgid "_Misc"
+msgstr "/ò¦ÚÎÅ"
+
+#: src/bar.c:226
+#, fuzzy
+msgid "Search _File(s) ..."
+msgstr "ðÏÛÕË ÆÁÊ̦×..."
+
+#: src/bar.c:226
+#, fuzzy
+msgid "Search File(s)..."
+msgstr "ðÏÛÕË ÆÁÊ̦×..."
+
+#: src/bar.c:227
+#, fuzzy
+msgid "CD Data _Base Search ..."
+msgstr "ðÏÛÕË × CDDB"
+
+#: src/bar.c:227
+#, fuzzy
+msgid "CDDB Search ..."
+msgstr "ðÏÛÕË × CDDB"
+
+#: src/bar.c:228
+#, fuzzy
+msgid "Load Filenames from TXT ..."
+msgstr "/ò¦ÚÎÅ/úÁ×ÁÎÔÁÖÉÔÉ ¦ÍÅÎÁ ÆÁÊÌ¦× Ú ÔÅËÓÔÏ×ÏÇÏ ÆÁÊÌÁ..."
+
+#: src/bar.c:229
+#, fuzzy
+msgid "Write Playlist ..."
+msgstr "úÁÐÉÓ ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "úÁ×ÁÎÔÁÖÉÔÉ ÐÒÏÇÒÁ×ÁÞ"
+
+#: src/bar.c:232
+#, fuzzy
+msgid "_Settings"
+msgstr "/îÁÓÔÒÏÊËÉ"
+
+#: src/bar.c:233
+#, fuzzy
+msgid "_Preferences ..."
+msgstr "ðÁÒÁÍÅÔÒÉ..."
+
+#: src/bar.c:233
+#, fuzzy
+msgid "Preferences ..."
+msgstr "ðÁÒÁÍÅÔÒÉ..."
+
+#: src/bar.c:235
+#, fuzzy
+msgid "_Help"
+msgstr "/äÏÐÏÍÏÇÁ"
+
+#: src/bar.c:236
+#, fuzzy
+msgid "_About"
+msgstr "ðÒÏ"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "úÕÐÉÎÉÔÉ ÐÏÔÏÞÎÕ Ä¦À"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+#, fuzzy
+msgid "_File Operations"
+msgstr "ðÁÒÁÍÅÔÒÉ ¦ÍÅÎ ÆÁÊ̦×"
+
+#: src/bar.c:253
+#, fuzzy
+msgid "CDDB Search File(s)..."
+msgstr "ðÏÛÕË ÆÁÊ̦×..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+#, fuzzy
+msgid "Browse _Sub-directories"
+msgstr "ðÅÒÅÇÌÑÄÁÔÉ Ð¦ÄËÁÔÁÌÏÇÉ"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+#, fuzzy
+msgid "Show Hidden Directories"
+msgstr "ûÕËÁÔÉ × Ð¦ÄËÁÔÁÌÏÇÁÈ"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr ""
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr ""
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "çÏÔÏ×ÉÊ ÄÏ ÒÏÂÏÔÉ..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "÷ÉÂÒÁÎÏ ÎÏ×ÉÊ ÔÉÐÏ×ÉÊ ÛÌÑÈ"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "ð¦ÄÔ×ÅÒÄÖÅÎÎÑ..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"äÅÑ˦ ÆÁÊÌÉ ÚͦÎÅÎÏ, ÁÌÅ ÎÅ ÚÁÐÉÓÁÎÏ...\n"
+"÷É Â ÈÏÔ¦ÌÉ ÚÂÅÒÅÇÔÉ ÚͦÎÉ ÐÅÒÅÄ ×ÉÈÏÄÏÍ Ú ËÁÔÁÌÏÇÕ?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"úÁÄÁÎÏ ÎŦÓÎÕÀÞÉÊ ÛÌÑÈ!:\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "ðÏÍÉÌËÁ..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "áÌØÂÏÍ"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr ""
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "÷ÉËÏÎÁ×ÅÃØ"
+
+#: src/browser.c:2777
+#, fuzzy
+msgid "# Albums"
+msgstr "áÌØÂÏÍ"
+
+#: src/browser.c:2777 src/browser.c:2778
+#, fuzzy
+msgid "# Files"
+msgstr "æÁÊÌ"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "áÌØÂÏÍ"
+
+#: src/browser.c:2798
+#, fuzzy
+msgid "Go to parent directory"
+msgstr "ðÅÒÅÊÔÉ × ÄÏÍÁÛÎ¦Ê ËÁÔÁÌÏÇ"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "úÁÄÁÊÔÅ ËÁÔÁÌÏÇ ÄÌÑ ÐÅÒÅÇÌÑÄÕ."
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr ""
+
+#: src/browser.c:2933
+#, fuzzy
+msgid "Artist & Album"
+msgstr "÷ÉËÏÎÁ×ÅÃØ / áÌØÂÏÍ"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ËÁÔÁÌÏÇÁ"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÔÉ ËÁÔÁÌÏÇ '%s' ÎÁ: "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "úÁ ÍÁÓËÏÀ: "
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr ""
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "îÅËÏÒÅËÔÎÁ ÍÁÓËÁ ÄÌÑ ÓËÁÎÅÒÁ"
+
+#. Preview label
+#: src/browser.c:3262
+#, fuzzy
+msgid "Rename directory preview..."
+msgstr "ðÏÐÅÒÅÄÎ¦Ê ×ÉÇÌÑÄ: ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ÆÁÊÌÁ..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "óÌ¦Ä ××ÅÓÔÉ ¦Í'Ñ ËÁÔÁÌÏÇÕ!"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ, ÏÓ˦ÌØËÉ ÔÁËÉÊ ËÁÔÁÌÏÇ ×ÖÅ ¤!\n"
+"(%s)"
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ËÁÔÁÌÏÇ\n"
+"'%s'\n"
+" ÎÁ \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "ëÁÔÁÌÏÇ ÐÅÒÅÊÍÅÎÏ×ÁÎÏ"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "÷ÉËÏÎÁÔÉ ÐÒÏÇÒÁÍÕ: "
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr "÷×ÅĦÔØ ¦Í'Ñ ÐÒÏÇÒÁÍÉ. ðÏÔÏÞÎÉÊ ËÁÔÁÌÏÇ ÂÕÄÅ §§ ÐÁÒÁÍÅÔÒÏÍ."
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "÷¦ÄËÒÉÔÉ ÚÁ ÄÏÐÏÍÏÇÏÀ..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr "÷×ÅĦÔØ ¦Í'Ñ ÐÒÏÇÒÁÍÉ. ðÏÔÏÞÎÉÊ ÆÁÊÌ ÂÕÄÅ §§ ÐÁÒÁÍÅÔÒÏÍ."
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "óÌ¦Ä ××ÅÓÔÉ ¦Í'Ñ ÐÒÏÇÒÁÍÉ!"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr ""
+
+#: src/browser.c:4019 src/misc.c:943
+#, fuzzy, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr "îÅ×ÄÁ¤ÔØÓÑ ×ÉËÏÎÁÔÉ %s (%s)!\n"
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr "îÅ ÍÏÖÕ ÐÏÞÁÔÉ ¦ÎÛÉÊ ÐÒÏÃÅÓ!\n"
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr "÷ÉËÏÎÁÎÁ ËÏÍÁÎÄÁ: '%s %s'"
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "÷ÉËÏÎÁ×ÅÃØ / áÌØÂÏÍ"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "ëÁÔÅÇÏÒ¦Ñ"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "îÁÚ×Á ÔÒÅËÁ"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "þÁÓ"
+
+#: src/cddb.c:240
+#, fuzzy
+msgid "CD Data Base Search"
+msgstr "ðÏÛÕË × CDDB"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr ""
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr ""
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+
+#: src/cddb.c:304 src/cddb.c:414
+#, fuzzy
+msgid "Stop the search ..."
+msgstr " úõðéîéôé ÐÏÛÕË... "
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+#, fuzzy
+msgid "Manual Search"
+msgstr " ûÕËÁÔÉ "
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "óÌÏ×Á: "
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "÷×ÅĦÔØ ÓÌÏ×Á ÄÌÑ ÐÏÛÕËÕ (ÒÏÚĦÌÅΦ ÐÒÏÐÕÓËÏÍ ÁÂÏ '+')"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "äÅ ÛÕËÁÔÉ: "
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "÷Ó¦ ÐÏÌÑ"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "¶ÎÛÅ"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "÷Ó¦ ËÁÔÅÇÏÒ¦§"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "âÌÀÚ"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "ëÌÁÓÉËÁ"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "ëÁÎÔÒ¦"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "îÁÒÏÄÎÁ"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "äÖÁÚ"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "ò¦ÚÎÅ"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr "îÏ×Á È×ÉÌÑ"
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "òÅÇǦ"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "òÏË"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "óÁÕÎÄÔÒÅ"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "×ËÌÀÞÎÏ: ÆÁÎË, ÓÏÕÌ, ÒÅÐ, ÐÏÐ, ¦ÎÄÁÓÔÒ¦ÁÌ, ÍÅÔÁÌ, ÔÏÝÏ."
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "ƦÌØÍÉ, ÔÅÌÅÛÏÕ"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "Ô¦, ÝÏ ÎÅ ÎÁÌÅÖÁÔØ ÖÏÄÎ¦Ê Ú ÐÅÒÅÒÁÈÏ×ÁÎÉÈ ËÁÔÅÇÏÒ¦Ê"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr " ëÁÔÅÇÏÒ¦§ "
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "òÅÚÕÌØÔÁÔÉ: "
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "ðÏÛÕË:"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "÷×ÅĦÔØ ÓÌÏ×Á ÄÌÑ ÐÏÛÕËÕ × ÓÐÉÓËÕ"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "ûÕËÁÔÉ ÎÁÓÔÕÐÎÉÊ"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "ûÕËÁÔÉ ÐÏÐÅÒÅÄΦÊ"
+
+#: src/cddb.c:571
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr ""
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "óËÁÓÕ×ÁÔÉ ×ɦÒËÕ"
+
+#: src/cddb.c:583
+#, fuzzy
+msgid "Invert lines selection"
+msgstr "¶Î×ÅÒÔÕ×ÁÔÉ ×ɦÒËÕ"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "÷ÉÂÒÁÔÉ ×Ó¦ ÒÑÄËÉ"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr "÷ÉÓÔÁ×ÉÔÉ ÑË:"
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "÷Ó¦"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "¶Í'Ñ ÆÁÊÌÁ"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "úÁÇÏÌÏ×ÏË"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "ò¦Ë"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "ôÒÅË N"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "ôÒÅ˦×"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "óÔÉÌØ"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr ""
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr ""
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "çÏÔÏ×ÉÊ ÄÏ ÐÏÛÕËÕ..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr ""
+"áÌØÂÏÍ: '%s', ×ÉËÏÎÁ×ÅÃØ: '%s', ÄÏ×ÖÉÎÁ: '%s', Ò¦Ë: '%s', ÖÁÎÒ: '%s', ID: '%"
+"s'"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "¶Î×ÅÒÔÕ×ÁÔÉ ×ɦÒËÕ"
+
+#: src/cddb.c:1514
+#, fuzzy
+msgid "Sort by Track Number"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#: src/cddb.c:1518
+#, fuzzy
+msgid "Sort by Track Name"
+msgstr "îÁÚ×Á ÔÒÅËÁ"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "÷ÉÚÎÁÞÅÎÎÑ ¦ÍÅΦ ÈÏÓÔÁ '%s'..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "îÅ ÍÏÖÕ ×ÉÚÎÁÞÉÔÉ ¦Í'Ñ ÈÏÓÔÁ '%s' (%s)!"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ÓÏËÅÔ (%s)!"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "ð¦Ä'¤ÄÎÁÎÎÑ Ú '%s', ÐÏÒÔ '%d'..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "îÅ ÍÏÖÕ Ð¦Ä'¤ÄÎÁÔÉÓÑ ÄÏ '%s' (%s)!"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "ð¦Ä'¤ÄÎÁÎÏ ÄÏ '%s'"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "ïÔÒÉÍÁÎÎÑ ÄÁÎÉÈ (%s)..."
+
+#: src/cddb.c:1758
+#, fuzzy, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr "ðÏÍÉÌËÁ ×ÉÄÁÌÅÎÎÑ ÔÅÇÕ ID3v1 Ú '%s' (%s)."
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ '%s' (%s)"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ '%s' (%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "îÁÄÓÉÌÁÎÎÑ ÚÁÐÉÔÕ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "îÅ ÍÏÖÕ ÎÁĦÓÌÁÔÉ ÚÁÐÉÔ (%s)!"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "ïÔÒÉÍÁÎÎÑ ÄÁÎÉÈ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+#, fuzzy
+msgid "The server returned a wrong answer!"
+msgstr "îÅÐÒÁ×ÉÌØÎÁ צÄÐÏצÄØ ÓÅÒ×ÅÒÁ! (%s)"
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr "îÅÐÒÁ×ÉÌØÎÁ צÄÐÏצÄØ ÓÅÒ×ÅÒÁ! (%s)"
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr ""
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "úÎÁÊÄÅÎÏ %d ÁÌØÂÏÍÉ(¦×)"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "ïÔÒÉÍÁÎÎÑ ÄÁÎÉÈ (%s)..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "ïÔÒÉÍÁÎÎÑ ÄÁÎÉÈ (%s)..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+#, fuzzy
+msgid "No file selected!"
+msgstr "îÅ ×ÉÂÒÁÎÏ ÒÑÄÏË!\n"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, fuzzy, c-format
+msgid "%d file(s) selected!"
+msgstr "%u ÆÁÊÌ(¦×)"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "çÏÔÏ×ÉÊ ÄÏ ÐÏÛÕËÕ..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr ""
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "úÎÁÊÄÅÎÏ %d ÁÌØÂÏÍÉ(¦×)"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ '%s' (%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "úÁ×ÁÎÔÁÖÅÎÎÑ ÓÐÉÓËÕ ÔÒÅË¦× ÁÌØÂÏÍÕ..."
+
+#: src/cddb.c:3751
+#, fuzzy, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+"÷ CDDB ÁÌØÂÏÍ Í¦ÓÔÉÔØ %d ÔÒÅ˦×, Á × ÓÐÉÓËÕ ÌÉÛÅ %d ÆÁÊ̦×!\n"
+"\n"
+"ðÒÏÄÏ×ÖÉÔÉ?"
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "úÁÐÉÓ ÔÅÇÕ ÚÁ ÄÁÎÉÍÉ CDDB..."
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr "áÒÁÂÓØËÅ (IBM-864)"
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr "áÒÁÂÓØËÅ (ISO-8859-6)"
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr "áÒÁÂÓØËÅ (Windows-1256)"
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr "âÁÌÔ¦ÊÓØËÅ (ISO-8859-13)"
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr "âÁÌÔ¦ÊÓØËÅ (ISO-8859-4)"
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr "âÁÌÔ¦ÊÓØËÅ (Windows-1257)"
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtic (ISO-8859-14)"
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr "ãÅÎÔÒ.-´×ÒÏÐÅÊÓØËÅ (IBM-852)"
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr "ãÅÎÔÒ.-´×ÒÏÐÅÊÓØËÅ (ISO-8859-2)"
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr "ãÅÎÔÒ.-´×ÒÏÐÅÊÓØËÅ (Windows-1250)"
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "óÐÒÏÝÅÎÁ ËÉÔÁÊÓØËÁ (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "óÐÒÏÝÅÎÁ ËÉÔÁÊÓØËÁ (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "ôÒÁÄÉæÊÎÁ ËÉÔÁÊÓØËÁ (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "ôÒÁÄÉæÊÎÁ ËÉÔÁÊÓØËÁ (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr "ëÉÒÉÌÉÃÑ (IBM-855)"
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "ëÉÒÉÌÉÃÑ (ISO-8859-5)"
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "ëÉÒÉÌÉÃÑ (ISO-IR-111)"
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr "ëÉÒÉÌÉÃÑ (KOI8-R)"
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr "ëÉÒÉÌÉÃÑ (Windows-1251)"
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr "ëÉÒÉÌÉÃÑ/òÏÓ¦ÊÓØËÁ (CP-866)"
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr "ëÉÒÉÌÉÃÑ/õËÒÁ§ÎÓØËÁ (KOI8-U)"
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr "áÎÇ̦ÊÓØËÁ (US-ASCII)"
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr "çÒÅÃØËÁ (ISO-8859-7)"
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr "çÒÅÃØËÁ (Windows-1253)"
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr "¶×ÒÉÔ (IBM-862)"
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr "¶×ÒÉÔ (Windows-1255)"
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr "ñÐÏÎÓØËÁ (EUC-JP)"
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr "ñÐÏÎÓØËÁ (ISO-2022-JP)"
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr "ñÐÏÎÓØËÁ (Shift_JIS)"
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr "ëÏÒÅÊÓØËÁ (EUC-KR)"
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr "ð¦×ÄÅÎÎÁ ´×ÒÏÐÁ (ISO-8859-3)"
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr "ôÕÒÅÃØËÁ (IBM-857)"
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr "ôÕÒÅÃØËÁ (ISO-8859-9)"
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr "ôÕÒÅÃØËÁ (Windows-1254)"
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr "àΦËÏÄ (UTF-8)"
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr "÷'¤ÔÎÁÍÓØËÁ (VISCII)"
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr "÷'¤ÔÎÁÍÓØËÁ (Windows-1258)"
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr "úÁȦÄÎÁ (IBM-850)"
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr "úÁȦÄÎÁ (ISO-8859-1)"
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr "úÁȦÄÎÁ (ISO-8859-15)"
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr "úÁȦÄÎÁ (Windows-1252)"
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+#, fuzzy
+msgid "Invalid UTF-8"
+msgstr "àΦËÏÄ (UTF-8)"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "úÁÐÕÓË EasyTAG %s (PId: %d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "÷ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ id3lib ×ÅÒÓ¦Ñ %d.%d.%d...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "÷ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ id3lib ×ÅÒÓ¦Ñ %d.%d.%d...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ÆÁÊÌÁ '%s'"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr ""
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr "%s %s ×¦Ä %s (Ú¦ÂÒÁÎÏ: %s, %s)\n"
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "äÏÍÁÛÎÑ ÓÔÏÒ¦ÎËÁ: %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "ðÅÒÅÇÌÑÄÁÞ"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "æÁÊÌ"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "ìÉÛÅ ÄÌÑ ÞÉÔÁÎÎÑ"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr "âÉÔÅ ÆÁÊÌÏ×Å ÐÏÓÉÌÁÎÎÑ"
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr "MPEG"
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr "?, Layer ?"
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "â¦ÔÒÅÊÔ:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr "? ëÂ/Ó"
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "þÁÓÔÏÔÁ:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr "? çÃ"
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "ôÉÐ:"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr "?"
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "òÏÚͦÒ:"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr "? ëÂ"
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "þÁÓ:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "ôÅÇ"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "úÁÇÁÌØÎÅ"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "úÁÇÏÌÏ×ÏË:"
+
+#: src/easytag.c:598
+#, fuzzy
+msgid "Tag selected files with this title"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÔÁËÉÍ ÚÁÇÏÌÏ×ËÏÍ"
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "÷ÉËÏÎÁ×ÅÃØ:"
+
+#: src/easytag.c:617
+#, fuzzy
+msgid "Tag selected files with this artist"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ×ÉËÏÎÁ×ÃÅÍ"
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "áÌØÂÏÍ:"
+
+#: src/easytag.c:636
+#, fuzzy
+msgid "Tag selected files with this album name"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÎÁÚ×ÏÀ ÃØÏÇÏ ÁÌØÂÏÍÕ"
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "CDDB"
+
+#: src/easytag.c:658
+#, fuzzy
+msgid "Tag selected files with this disc number"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ËÏÍÅÎÔÁÒÅÍ"
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "ò¦Ë:"
+
+#: src/easytag.c:681
+#, fuzzy
+msgid "Tag selected files with this year"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ÒÏËÏÍ"
+
+#: src/easytag.c:693
+#, fuzzy
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr "ðÒÏÎÕÍÅÒÕ×ÁÔÉ ×Ó¦ ÔÒÅËÉ. ðÏÞÉÎÁÔÉ Ú 01 × ËÏÖÎÏÍÕ Ð¦ÄËÁÔÁÌÏÚ¦."
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "ôÒÅË N:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+
+#: src/easytag.c:747
+#, fuzzy
+msgid "Tag selected files with this number of tracks"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ÖÅ ÎÏÍÅÒÏÍ ÔÒÅËÕ"
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "óÔÉÌØ:"
+
+#: src/easytag.c:778
+#, fuzzy
+msgid "Tag selected files with this genre"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ÖÅ ÓÔÉÌÅÍ"
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "ëÏÍÅÎÔÁÒ:"
+
+#: src/easytag.c:808
+#, fuzzy
+msgid "Tag selected files with this comment"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ËÏÍÅÎÔÁÒÅÍ"
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr ""
+
+#: src/easytag.c:829
+#, fuzzy
+msgid "Tag selected files with this composer"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ËÏÍÅÎÔÁÒÅÍ"
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+#, fuzzy
+msgid "Orig. Artist:"
+msgstr "÷ÉËÏÎÁ×ÅÃØ:"
+
+#: src/easytag.c:848
+#, fuzzy
+msgid "Tag selected files with this original artist"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ×ÉËÏÎÁ×ÃÅÍ"
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr ""
+
+#: src/easytag.c:867
+#, fuzzy
+msgid "Tag selected files with this copyright"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ×ÉËÏÎÁ×ÃÅÍ"
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr ""
+
+#: src/easytag.c:886
+#, fuzzy
+msgid "Tag selected files with this URL"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ÒÏËÏÍ"
+
+#. Encoded by
+#: src/easytag.c:893
+#, fuzzy
+msgid "Encoded by:"
+msgstr "ëÏÄÕ×ÁÌØÎÉË:"
+
+#: src/easytag.c:905
+#, fuzzy
+msgid "Tag selected files with this encoder name"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÃÉÍ ÖÅ ÓÔÉÌÅÍ"
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr ""
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr ""
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr ""
+
+#: src/easytag.c:1034
+#, fuzzy
+msgid "Tag selected files with these pictures"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÔÁËÉÍ ÚÁÇÏÌÏ×ËÏÍ"
+
+#: src/easytag.c:1044
+#, fuzzy
+msgid "Remove selected pictures, else all pictures."
+msgstr "÷ÉÄÁÌÉÔÉ ÔÅÇ Ú ×ÉĦÌÅÎÉÈ ÆÁÊ̦×"
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr ""
+
+#: src/easytag.c:1060
+#, fuzzy
+msgid "Save the selected pictures on the hard disk."
+msgstr "ëÏÄÕ×ÁÎÎÑ, ÝÏ ×ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ Õ ÆÁÊÌÁÈ ÎÁ ÄÉÓËÕ."
+
+#: src/easytag.c:1067
+#, fuzzy
+msgid "Set properties of the selected pictures."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ÚÁÇÏÌÏ×ËÏÍ '%s'."
+
+#: src/easytag.c:1147
+#, fuzzy, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ÚÁÇÏÌÏ×ËÏÍ '%s'."
+
+#: src/easytag.c:1149
+#, fuzzy
+msgid "Removed title from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ÚÁÇÏÌÏ×ËÉ."
+
+#: src/easytag.c:1166
+#, fuzzy, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ×ÉËÏÎÁ×ÃÅÍ '%s'."
+
+#: src/easytag.c:1168
+#, fuzzy
+msgid "Removed artist from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ×ÉËÏÎÁ×ÃÑ."
+
+#: src/easytag.c:1185
+#, fuzzy, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ÎÁÚ×ÏÀ ÁÌØÂÏÍÕ '%s'."
+
+#: src/easytag.c:1187
+#, fuzzy
+msgid "Removed album name from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ÎÁÚ×Õ ÁÌØÂÏÍÕ."
+
+#: src/easytag.c:1204
+#, fuzzy, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ËÏÍÅÎÔÁÒÅÍ '%s'."
+
+#: src/easytag.c:1206
+#, fuzzy
+msgid "Removed disc number from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ÎÏÍÅÒ ÔÒÅËÕ."
+
+#: src/easytag.c:1223
+#, fuzzy, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ '%s' ÒÏËÏÍ."
+
+#: src/easytag.c:1225
+#, fuzzy
+msgid "Removed year from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ Ò¦Ë ËÏÍÐÏÚÉæ§."
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, fuzzy, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ÎÏÍÅÒÏÍ ÔÒÅËÕ ÎÁ ÚÒÁÚÏË 'xx/%s'."
+
+#: src/easytag.c:1256
+#, fuzzy
+msgid "Selected files tagged with track like 'xx'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ÎÏÍÅÒÏÍ ÔÒÅËÕ ÎÁ ÚÒÁÚÏË 'xx'."
+
+#: src/easytag.c:1260 src/easytag.c:1352
+#, fuzzy
+msgid "Removed track number from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ÎÏÍÅÒ ÔÒÅËÕ."
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+#, fuzzy
+msgid "Selected tracks numbered sequentially."
+msgstr "ðÒÏÎÕÍÅÒÏ×ÁÎÏ ÔÒÅ˦×: %d."
+
+#: src/easytag.c:1370
+#, fuzzy, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ÓÔÉÌÅÍ '%s'."
+
+#: src/easytag.c:1372
+#, fuzzy
+msgid "Removed genre from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ÓÔÉÌØ ÔÒÅ˦×."
+
+#: src/easytag.c:1396
+#, fuzzy, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ËÏÍÅÎÔÁÒÅÍ '%s'."
+
+#: src/easytag.c:1398
+#, fuzzy
+msgid "Removed comment from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ËÏÍÅÎÔÁÒ¦."
+
+#: src/easytag.c:1415
+#, fuzzy, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ËÏÍÅÎÔÁÒÅÍ '%s'."
+
+#: src/easytag.c:1417
+#, fuzzy
+msgid "Removed composer from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ËÏÍÅÎÔÁÒ¦."
+
+#: src/easytag.c:1434
+#, fuzzy, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ×ÉËÏÎÁ×ÃÅÍ '%s'."
+
+#: src/easytag.c:1436
+#, fuzzy
+msgid "Removed original artist from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ×ÉËÏÎÁ×ÃÑ."
+
+#: src/easytag.c:1453
+#, fuzzy, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ×ÉËÏÎÁ×ÃÅÍ '%s'."
+
+#: src/easytag.c:1455
+#, fuzzy
+msgid "Removed copyright from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ×ÉËÏÎÁ×ÃÑ."
+
+#: src/easytag.c:1472
+#, fuzzy, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ '%s' ÒÏËÏÍ."
+
+#: src/easytag.c:1474
+#, fuzzy
+msgid "Removed URL from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ Ò¦Ë ËÏÍÐÏÚÉæ§."
+
+#: src/easytag.c:1491
+#, fuzzy, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ÓÔÉÌÅÍ '%s'."
+
+#: src/easytag.c:1493
+#, fuzzy
+msgid "Removed encoder name from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ÓÔÉÌØ ÔÒÅ˦×."
+
+#: src/easytag.c:1528
+#, fuzzy
+msgid "Selected files tagged with pictures."
+msgstr "÷Ó¦ ÆÁÊÌÉ ÐÒÏÂÉÒËÏ×ÁÎÏ ÚÁÇÏÌÏ×ËÏÍ '%s'."
+
+#: src/easytag.c:1530
+#, fuzzy
+msgid "Removed pictures from selected files."
+msgstr "ú ÕÓ¦È ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ ÚÁÇÏÌÏ×ËÉ."
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr "÷ÉÂÅÒ¦ÔØ ÒÅÖÉÍ ÔÁ ÍÁÓËÕ, ÔÁ ÐÏ×ÔÏÒ¦ÔØ Ã¦ Ö Ä¦§"
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr "ðÒÏÓËÁÎÏ×ÁÎÏ ×Ó¦ ÔÅÇÉ"
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr "÷Ó¦ ÔÅÇÉ ×ÉÄÁÌÅÎÏ..."
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr "÷Ó¦ ÔÅÇÉ ÚÁÐÉÓÁÎÏ..."
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr "þÁÓÔÉÎÕ ÆÁÊÌ¦× ÚÁÐÉÓÁÎÏ..."
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr "þÁÓÔÉÎÕ ÆÁÊÌ¦× ×ÉÄÁÌÅÎÏ..."
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr "÷Ó¦ ÆÁÊÌÉ ×ÉÄÁÌÅÎÏ..."
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+"÷É Ä¦ÊÓÎÏ ÈÏÞÅÔÅ ÚÁÐÉÓÁÔÉ ÔÅÇ Õ ÆÁÊÌ\n"
+"'%s' ?"
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr "úÁÐÉÓ ÔÅÇÕ..."
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+#, fuzzy
+msgid "Rename File and Directory..."
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ËÁÔÁÌÏÇÁ"
+
+#: src/easytag.c:2475
+#, fuzzy, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"÷É ÂÁÖÁ¤ÔÅ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌ \n"
+"'%s'\n"
+"ÎÁ \n"
+"'%s' ?"
+
+#. Only directories changed
+#: src/easytag.c:2480
+#, fuzzy
+msgid "Rename Directory..."
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÔÉ ËÁÔÁÌÏÇ..."
+
+#: src/easytag.c:2481
+#, fuzzy, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"÷É ÂÁÖÁ¤ÔÅ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌ \n"
+"'%s'\n"
+"ÎÁ \n"
+"'%s' ?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌ..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"÷É ÂÁÖÁ¤ÔÅ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌ \n"
+"'%s'\n"
+"ÎÁ \n"
+"'%s' ?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr "úÁÐÉÓ ÔÅÇÕ ÄÏ '%s'"
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "ôÅÇ ÚÁÐÉÓÁÎÏ"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÒÏÂÉÒËÕ×ÁÔÉ ÆÁÊÌ '%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ÆÁÊÌÁ '%s'"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌ '%s'\n"
+" ÎÁ \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr "æÁÊÌÉ ÎÅ ÐÅÒÅÊÍÅÎÏ×ÁÎÏ..."
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌ\n"
+"'%s'\n"
+"ÏÓ˦ÌØËÉ ×ÖÅ ¦ÓÎÕ¤ ÆÁÊÌ Ú ÔÁËÉÍ ¦ÍÅÎÅÍ:\n"
+"'%s'"
+
+#: src/easytag.c:2802
+#, fuzzy, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÒÏÞÉÔÁÔÉ ËÁÔÁÌÏÇ: \n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr "'%s' ÐÅÒÅÊÍÅÎÏ×ÁÎÏ × '%s'"
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr "æÁÊÌÉ ÐÅÒÅÊÍÅÎÏ×ÁÎÏ..."
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, fuzzy, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÒÏÞÉÔÁÔÉ ËÁÔÁÌÏÇ: \n"
+"'%s'\n"
+"(%s)"
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, fuzzy, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr "'%s' ÐÅÒÅÊÍÅÎÏ×ÁÎÏ × '%s'"
+
+#: src/easytag.c:2877
+#, fuzzy
+msgid "File(s) moved..."
+msgstr "æÁÊÌÉ ÐÅÒÅÊÍÅÎÏ×ÁÎÏ..."
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, fuzzy, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌ '%s'\n"
+" ÎÁ \n"
+"'%s'!\n"
+"(%s)"
+
+#: src/easytag.c:2917
+#, fuzzy
+msgid "File(s) not moved..."
+msgstr "æÁÊÌÉ ÎÅ ÐÅÒÅÊÍÅÎÏ×ÁÎÏ..."
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+"÷É Ä¦ÊÓÎÏ ÈÏÞÅÔÅ ×ÉÄÁÌÉÔÉ ÆÁÊÌ\n"
+"'%s' ?"
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "÷ÉÄÁÌÅÎÎÑ ÆÁÊ̦×..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "æÁÊÌ '%s' ×ÉÄÁÌÅÎÏ"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÐÒÏÞÉÔÁÔÉ ËÁÔÁÌÏÇ: \n"
+"'%s'\n"
+"(%s)"
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "ôÒÉ×Á¤ ÐÏÛÕË..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "æÁÊÌ: '%s'"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr "ë¦ÌØ˦ÓÔØ ÚÎÁÊÄÅÎÉÈ ÆÁÊÌ¦× Õ ÃØÏÍÕ ËÁÔÁÌÏÚ¦ ÔÁ ЦÄËÁÔÁÌÏÇÁÈ: %d"
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr "ë¦ÌØ˦ÓÔØ ÚÎÁÊÄÅÎÉÈ ÆÁÊÌ¦× Õ ÃØÏÍÕ ËÁÔÁÌÏÚ¦: %d"
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr "%u ÆÁÊÌ(¦×)"
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr "÷ ÃØÏÍÕ ËÁÔÁÌÏÚ¦ ÔÁ ÊÏÇÏ Ð¦ÄËÁÔÁÌÏÇÁÈ ÎÅÍÁ¤ ÆÁÊÌ¦× MP3!"
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr "÷ ÃØÏÍÕ ËÁÔÁÌÏÚ¦ ÎÅÍÁ¤ ÆÁÊÌ¦× Ú ÍÕÚÉËÏÀ!"
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "ðÏÛÕË..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " úõðéîéôé ÐÏÛÕË... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "÷ÉÂÅÒ¦ÔØ ËÁÔÁÌÏÇ ÄÌÑ ÐÅÒÅÇÌÑÄÕ!"
+
+#. Menu items
+#: src/easytag.c:4209
+#, fuzzy
+msgid "Tag selected files with this field"
+msgstr "ðÒÏÂÉÒËÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÔÁËÉÍ ÚÁÇÏÌÏ×ËÏÍ"
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr "úÁͦÎÀ×ÁÔÉ '_' ÔÁ '%20' ÎÁ ÐÒϦÌÉ"
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "úÁͦÎÀ×ÁÔÉ ' ' ÎÁ '_'"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "÷åìéëéíé ì¶ôåòáíé"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "ÍÁÌÉÍÉ Ì¦ÔÅÒÁÍÉ"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "ú ×ÅÌÉËϧ ̦ÔÅÒÉ"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "ú ÷ÅÌÉËϧ ì¦ÔÅÒÉ ëÏÖÎÅ óÌÏ×Ï"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "÷ÉÄÁÌÉÔÉ ÐÒϦÌÉ"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "÷ÓÔÁ×ÉÔÉ ÐÒÏÂ¦Ì ÐÅÒÅÄ ÷ÅÌÉËÏÀ ̦ÔÅÒÏÀ"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "÷ÉÄÁÌÉÔÉ ÄÕÂÌØÏ×ÁΦ ÐÒϦÌÉ ÔÁ ЦÄËÒÅÓÌÅÎÎÑ"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: îÅÎÏÒÍÁÌØÎÅ ÚÁ×ÅÒÛÅÎÎÑ (PId: %d)!."
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "ïÔÒÉÍÁÎÏ ÓÉÇÎÁÌ %s (%d)"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+#, fuzzy
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+"úÄÁ¤ÔØÓÑ, ×É ÚÎÁÊÛÌÉ ÐÏÍÉÌËÕ × EasyTAG. âÕÄØ ÌÁÓËÁ, ÎÁĦÛ̦ÔØ ÒÅÚÕÌØÔÁÔ "
+"ÔÒÁÓÕ×ÁÎÎÑ gdb ('gdb easytag core' ÐÏÔ¦Í 'bt') ÎÁ ÁÄÒÅÓÕ j.couderc@ifrance."
+"com\n"
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "îÅצÄÏÍÉÊ ÓÉÇÎÁÌ"
+
+#: src/easytag.c:4452
+#, fuzzy
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"÷ÉËÏÒÉÓÔÁÎÎÑ: easytag [ÐÁÒÁÍÅÔÒÉ] \n"
+" ÞÉ: easytag [ËÁÔÁÌÏÇ]\n"
+"\n"
+"ðÁÒÁÍÅÔÒÉ:\n"
+"-------\n"
+"-h, --help ðÏËÁÚÁÔÉ ÃÅÊ ÔÅËÓÔ ÔÁ ×ÉÊÔÉ.\n"
+"-v, --version ðÏËÁÚÁÔÉ ×ÅÒÓ¦À ÔÁ ×ÉÊÔÉ.\n"
+"\n"
+"ëÁÔÁÌÏÇ:\n"
+"----------\n"
+"/ÛÌÑÈ_ÄÏ/ÆÁÊÌ¦× úÁ×ÁÎÔÁÖÕ×ÁÔÉ ÚÁ ÐÏ×ÎÏÀ ÁÄÒÅÓÏÀ,\n"
+"., ./ ÞÉ ÚÁ×ÁÎÔÁÖÉÔÉ ÐÏÔÏÞÎÉÊ ËÁÔÁÌÏÇ.\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: îÏÒÍÁÌØÎÅ ÚÁ×ÅÒÛÅÎÎÑ."
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+"äÅÑ˦ ÆÁÊÌÉ ÚͦÎÅÎÏ, ÁÌÅ ÎÅ ÚÁÐÉÓÁÎÏ...\n"
+"÷É Â ÈÏÔ¦ÌÉ ÚÂÅÒÅÇÔÉ ÚͦÎÉ ÐÅÒÅÄ ×ÉÈÏÄÏÍ Ú ÐÒÏÇÒÁÍÉ?"
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " ÷É Ä¦ÊÓÎÏ ÈÏÞÅÔÅ ×ÉÊÔÉ Ú ÐÒÏÇÒÁÍÉ? "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ôÅÇ ID3"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "ôÅÇ OGG Vorbis"
+
+#: src/et_core.c:2521
+#, fuzzy
+msgid "FLAC Vorbis Tag"
+msgstr "ôÅÇ OGG Vorbis"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "ôÅÇ APE"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr ""
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "æÁÊÌ MP3"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "æÁÊÌ MP2"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "æÁÊÌ OGG Vorbis"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "/æÁÊÌ/îÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "æÁÊÌ FLAC"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "æÁÊÌ MusePack"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "æÁÊÌ Monkey's Audio"
+
+#: src/et_core.c:2593
+#, fuzzy
+msgid "MP4/AAC File"
+msgstr "æÁÊÌ MP2"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "æÁÊÌ MusePack"
+
+#: src/et_core.c:2873
+#, c-format
+msgid "Pictures (%d)"
+msgstr ""
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr "%d ëÂ/c"
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr "%d çÃ"
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+
+#: src/et_core.c:3060 src/scan.c:661
+#, fuzzy
+msgid "Filename translation"
+msgstr "ðÁÒÁÍÅÔÒÉ ¦ÍÅÎ ÆÁÊ̦×"
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr ""
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "ëÏÄÕ×ÁÌØÎÉË:"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "ëÁÎÁÌÉ:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr "ðïíéìëá צÄËÒÉÔÔÑ ÆÁÊÌÁ: '%s' (%s)."
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr "ðïíéìëá: îÅ×ÄÁÞÁ ÚÁÐÉÓÕ ËÏÍÅÎÔÁÒÑ Õ ÆÁÊÌ '%s' (%s)."
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr "úÁÐÉÓÁÎÏ ÔÅÇ Õ '%s'"
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr "÷ÉÄÁÌÅÎÏ ÔÅÇ Ú '%s'"
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr "ðÏÍÉÌËÁ ×ÉÄÁÌÅÎÎÑ ÔÅÇÕ ID3v1 Ú '%s' (%s)."
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr "ðÏÍÉÌËÁ ×ÉÄÁÌÅÎÎÑ ÔÅÇÕ ID3v2 Ú '%s' (%s)."
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr "ðÏÍÉÌËÁ ÐÏÎÏ×ÌÅÎÎÑ ÔÅÇÕ ID3v1 Õ '%s' (%s)."
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr "ðÏÍÉÌËÁ ÐÏÎÏ×ÌÅÎÎÑ ÔÅÇÕ ID3v1 Õ '%s' (%s)."
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr "ðÏÎÏ×ÌÅÎÏ ÔÅÇ Õ '%s'"
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr "öÏÄÎϧ ÐÏÍÉÌËÉ"
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr "îÅÄÏÓÔÁÔÎØÏ ÐÁÍ'ÑÔ¦"
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr "äÁΦ צÄÓÕÔΦ"
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr "îÅÐÒÁ×ÉÌØÎÉÊ ÆÏÒÍÁÔÉ ÄÁÎÉÈ"
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr "÷¦ÄÓÕÔÎ¦Ê ÂÕÆÅÒ ÚÁÐÉÓÕ"
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr "úÁÍÁÌÉÊ ÂÕÆÅÒ"
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr "îÅÐÒÁ×ÉÌØÎÉÊ ID ËÁÄÒÕ"
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr "îÅ ÚÎÁÊÄÅÎÏ ×¦ÄÐÏצÄÎÅ ÐÏÌÅ"
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr "îÅצÄÏÍÉÊ ÔÉÐ ÐÏÌÑ"
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr "ôÅÇ ×ÖÅ ÄÏÄÁÎÏ ÄÏ ÆÁÊÌÁ"
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr "îÅצÒÎÁ ×ÅÒÓ¦Ñ ÔÅÇÕ"
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr "îÅ ÚÁÄÁÎÏ ÆÁÊÌ"
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr "óÐÒÏÂÁ ÚÁÐÉÓÕ × ÆÁÊÌ 'ÌÉÛÅ ÄÌÑ ÚÁÐÉÓÕ'"
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr "ðÏÍÉÌËÁ ËÏÍÐÒÅÓ¦§/ÄÅËÏÍÐÒÅÓ¦§"
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ!"
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+
+#: src/id3_tag.c:1214
+#, fuzzy
+msgid "Corrupted file..."
+msgstr "÷ÉÂÒÁÔÉ ÆÁÊÌ..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " õÇÕ "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " ôÁË "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " î¦ "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " úÁÓÔÏÓÕ×ÁÔÉ "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " úÂÅÒÅÇÔÉ "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " óËÁÓÕ×ÁÔÉ "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " úÁËÒÉÔÉ "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr " úÁÐÉÓÁÔÉ "
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " ÷ÉËÏÎÁÔÉ "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " ûÕËÁÔÉ "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " ðÅÒÅÇÌÑÄ... "
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "÷ÉÂÅÒ¦ÔØ ËÁÔÁÌÏÇ..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "÷ÉÂÒÁÔÉ ÆÁÊÌ..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "ðÏÛÕË..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr "îÅ×ÄÁ¤ÔØÓÑ ×ÉËÏÎÁÔÉ %s (%s)!\n"
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr "Â"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr "ëÂ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr "íÂ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr "çÂ"
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr "ôÂ"
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "óÔ×ÏÒÅÎÎÑ ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "¶Í'Ñ ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ M3U"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "úÁ ¦ÍÅÎÅÍ ËÁÔÁÌÏÇÁ"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr "òÅÄÁÇÕ×ÁÔÉ íÁÓËÉ"
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "ðÁÒÁÍÅÔÒÉ ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#: src/misc.c:1342
+#, fuzzy
+msgid "Include only the selected files"
+msgstr "óËÁÓÕ×ÁÔÉ ÏÓÔÁÎΦ ÚͦÎÉ Õ ×ÉĦÌÅÎÉÈ ÆÁÊÌÁÈ"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr "ðÏ×ÎÉÊ ÛÌÑÈ × ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr "÷¦ÄÎÏÓÎÉÊ ÛÌÑÈ × ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr "ó×ÏÒÉÔÉ ÓÐÉÓÏË ×¦ÄÔ×ÏÒÅÎÎÑ Õ ÐÏÔÏÞËÎÏÍÕ ËÁÔÁÌÏÚ¦"
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "÷ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÒÏÚĦÌØÎÉË ËÁÔÁÌÏÇ¦× DOS"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "úͦÓÔ ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr "úÁÐÉÓÕ×ÁÔÉ ÌÉÛÅ ÓÐÉÓÏË ÆÁÊ̦×"
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr "úÁÐÉÓÕ×ÁÔÉ ¦ÎÆÏÒÍÁæÀ ÚǦÄÎÏ Ú ¦ÍÅÎÅÍ ÆÁÊÌÁ"
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr "úÁÐÉÓÕ×ÁÔÉ ¦ÎÆÏÒÍÁæÀ ÚǦÄÎÏ Ú: "
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+"CÐÉÓÏË ×¦ÄÔ×ÏÒÅÎÎÑ '%s' ×ÖÅ ¦ÓÎÕ¤!\n"
+"ðÅÒÅÚÁÐÉÓÁÔÉ?"
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "úÁÐÉÓ ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+"îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÓÐÉÓÏË ×¦ÄÔ×ÏÒÅÎÎÑ '%s'!\n"
+"(%s)"
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr "úÁÐÉÓÁÎÏ ÓÐÉÓÏË ×¦ÄÔ×ÏÒÅÎÎÑ '%s'"
+
+#: src/misc.c:1916
+#, fuzzy
+msgid "CD"
+msgstr "CDDB"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "ôÒÅË N"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "ëÏÍÅÎÔÁÒ"
+
+#: src/misc.c:1921 src/picture.c:820
+#, fuzzy
+msgid "Composer"
+msgstr "%c : ËÏÍÅÎÔÁÒ"
+
+#: src/misc.c:1922
+#, fuzzy
+msgid "Orig. Artist"
+msgstr "÷ÉËÏÎÁ×ÅÃØ:"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr ""
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr ""
+
+#: src/misc.c:1925
+#, fuzzy
+msgid "Encoded by"
+msgstr "ëÏÄÕ×ÁÌØÎÉË:"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "úÎÁÊÔÉ ÆÁÊÌ"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "äÅ:"
+
+#: src/misc.c:1985
+#, fuzzy
+msgid "the File Name"
+msgstr "¶Í'Ñ ÆÁÊÌÁ"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+#, fuzzy
+msgid "the Tag"
+msgstr "úÁÐÉÓ ÔÅÇÕ..."
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "òÅ­¦ÓÔÒÏ-ÚÁÌÅÖÎÉÊ"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr "úÎÁÊÄÅÎÏ: %d ÆÁÊÌ(¦×)"
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "úÁ×ÁÎÔÁÖÉÔÉ ÓÐÉÓÏË ÆÁÊÌ¦× Ú ÔÅËÓÔÏ×ÏÇÏ ÆÁÊÌÁ"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "æÁÊÌ :"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " úÁ×ÁÎÔÁÖÉÔÉ "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr "÷ͦÓÔ ÚÁ×ÁÎÔÁÖÅÎÏÇÏ ÆÁÊÌÁ: "
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr "óÐÉÓÏË ¦ÍÅÎ ÆÁÊ̦×: "
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "÷ÓÔÁ×ÉÔÉ ÐÏÒÏÖÎ¦Ê ÒÑÄÏË"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "÷ÉÄÁÌÉÔÉ ÃÅÊ ÒÑÄÏË"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "÷ÉÄÁÌÉÔÉ ×Ó¦ ÐÏÒÏÖΦ ÒÑÄËÉ"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "ðÅÒÅÞÉÔÁÔÉ"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr ""
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr ""
+
+#: src/mp4_header.c:131
+#, fuzzy
+msgid "Unknown"
+msgstr "îÅצÄÏÍÉÊ ÓÉÇÎÁÌ"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr ""
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, fuzzy, c-format
+msgid "~%d kb/s"
+msgstr "%d ëÂ/c"
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr "ðÏ×ÔÏÒÉÔÉ Ä¦À ÎÁ ÒÅÛÔ¦ ÆÁÊ̦×"
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, fuzzy, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr "ðÏÔ¦Ë Ogg ΊͦÓÔÉÔØ ÄÁÎÉÈ vorbis."
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr "ðïíéìëá: îÅ×ÄÁÞÁ צÄËÒÉÔÔÑ ÆÁÊÌÁ: '%s' ÑË vorbis (%s)."
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr ""
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr ""
+
+#: src/picture.c:303 src/picture.c:661
+#, fuzzy
+msgid "All Files"
+msgstr "÷Ó¦ ÐÏÌÑ"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr ""
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr ""
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr ""
+
+#. Description
+#: src/picture.c:532
+#, fuzzy
+msgid "Picture Description:"
+msgstr "èÁÒÁËÔÅÒÉÓÔÉËÁ:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr ""
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+
+#: src/picture.c:734
+#, fuzzy
+msgid "Save file..."
+msgstr "÷ÉÂÒÁÔÉ ÆÁÊÌ..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr ""
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr ""
+
+#: src/picture.c:789
+#, fuzzy
+msgid "Unknown image"
+msgstr "îÅצÄÏÍÉÊ ÓÉÇÎÁÌ"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr ""
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr ""
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr ""
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr ""
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr ""
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr ""
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr ""
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr ""
+
+#: src/picture.c:816
+#, fuzzy
+msgid "Conductor"
+msgstr "ëÁÎÔÒ¦"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr ""
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr ""
+
+#: src/picture.c:824
+#, fuzzy
+msgid "Recording location"
+msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÞÁÓÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr ""
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr ""
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr ""
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr ""
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr ""
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr ""
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr ""
+
+#: src/picture.c:840
+#, fuzzy
+msgid "Unknown picture type"
+msgstr "îÅצÄÏÍÉÊ ÔÉÐ ÐÏÌÑ"
+
+#: src/picture.c:868 src/picture.c:879
+#, fuzzy
+msgid "pixels"
+msgstr "ðÏÌÑ"
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr ""
+
+#: src/picture.c:881
+#, fuzzy
+msgid "Description"
+msgstr "èÁÒÁËÔÅÒÉÓÔÉËÁ:"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr ""
+
+#: src/picture.c:1080
+#, fuzzy, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ '%s' (%s)\n"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr ""
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "ðÁÒÁÍÅÔÒÉ..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "ðÅÒÅÇÌÑÄÁÞ"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "ðÅÒÅÊÔÉ Õ ÓÔÁÒÔÏ×ÉÊ ËÁÔÁÌÏÇ"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+"÷ËÁÚÕ¤ ËÁÔÁÌÏÇ, ÄÅ ÚÎÁÈÏÄÑÔØÓÑ ×ÁÛ¦ ÆÁÊÌÉ. úÁ ÃÉÍ ÛÌÑÈÏÍ EasyTag ÂÕÄÅ "
+"ÚÁ×ÁÎÔÁÖÕ×ÁÔÉ ÆÁÊÌÉ, ÑËÝÏ ÚÁÐÕÝÅÎÉÊ ÂÅÚ ÐÁÒÁÍÅÔÒ¦×."
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+#, fuzzy
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+"á×ÔÏÍÁÔÉÞÎÏ ÛÕËÁÔÉ ÆÁÊÌÉ Õ ×ËÁÚÁÎÏÍÕ ËÁÔÁÌÏÚ¦ ЦÓÌÑ ÚÁÐÕÓËÕ EasyTAG. ëÁÔÁÌÏÇ "
+"ÍÏÖÎÁ ÚÁÄÁ×ÁÔÉ ÔÁËÏÖ ¦ Ú ËÏÍÁÎÄÎÏÇÏ ÒÑÄËÕ (easytag /ÛÌÑÈ/ÄÏ_ÆÁÊ̦×)."
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "ûÕËÁÔÉ × Ð¦ÄËÁÔÁÌÏÇÁÈ"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr "ûÕËÁÔÉ × Ð¦ÄËÁÔÁÌÏÇÁÈ ËÏÌÉ ÞÉÔÁ¤ÔØÓÑ ËÁÔÁÌÏÇ × ÄÅÒÅצ."
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "ðÏËÁÚÕ×ÁÔÉ Ð¦ÄËÁÔÁÌÏÇÉ ËÏÌÉ ×ÉÂÉÒÁÀÔØ ËÁÔÁÌÏÇ"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+"ãÑ ÏÐÃ¦Ñ ÒÏÚËÒÉ×Á¤ ÄÅÒÅ×Ï Ú Ð¦ÄËÁÔÁÌÏÇÁÍÉ ×ÉĦÌÅÎÏÇÏ ËÁÔÁÌÏÇÁ × ÐÅÒÅÇÌÑÄÁÞ¦"
+
+#. Browse hidden directories
+#: src/prefs.c:223
+#, fuzzy
+msgid "Search hidden directories"
+msgstr "ûÕËÁÔÉ × Ð¦ÄËÁÔÁÌÏÇÁÈ"
+
+#: src/prefs.c:228
+#, fuzzy
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr "ûÕËÁÔÉ × Ð¦ÄËÁÔÁÌÏÇÁÈ ËÏÌÉ ÞÉÔÁ¤ÔØÓÑ ËÁÔÁÌÏÇ × ÄÅÒÅצ."
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "¶ÎÔÅÒÆÅÊÓ"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "ðÏËÁÚÕ×ÁÔÉ ¦ÎÆÏ Ú ÚÁÇÏÌÏ×ËÕ ÆÁÊÌÁ"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+"áËÔÉ×ÕÊÔÅ, ÝÏÂ Ð¦Ä ÐÏÌÅÍ ¦ÍÅΦ ÆÁÊÌÁ ÐÏËÁÚÕ×ÁÌÁÓÑ ÔÁËÁ ¦ÎÆÏÒÍÁæÑ, ÑË "
+"¦ÔÒÅÊÔ, ÞÁÓ ×¦ÄÔ×ÏÒÅÎÎÑ ÔÁ ÒÏÚÍ¦Ò ÆÁÊÌÁ."
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr ""
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr ""
+
+#: src/prefs.c:273
+#, fuzzy
+msgid "Bold style"
+msgstr "óÔÉÌØ ÐÅÒÅÇÌÑÄÁÞÁ "
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "ðÁÒÁÍÅÔÒÉ ÓÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "óÏÒÔÕ×ÁÔÉ ÓÐÉÓÏË ÆÁÊÌ¦× ÚÁ: "
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÄÁÔÉ ÓÔ×ÏÒÅÎÎÑ"
+
+#: src/prefs.c:305
+#, fuzzy
+msgid "Descending creation date"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÄÁÔÉ ÓÔ×ÏÒÅÎÎÑ"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ËÏÍÐÏÚÉæ§"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ËÏÍÐÏÚÉæ§"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÎÁÚ×É ÁÌØÂÏÍÕ"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÎÁÚ×É ÁÌØÂÏÍÕ"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÒÏËÕ"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÒÏËÕ"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÖÁÎÒÕ"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÖÁÎÒÕ"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "úÁ ÚÒÏÓÔÁÎÎÑÍ ÄÁÔÉ ËÏÍÅÎÔÁÒÑ"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "úÁ ÓÐÁÄÁÎÎÑÍ ÄÁÔÉ ËÏÍÅÎÔÁÒÑ"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr "÷ÉÂÅÒ¦ÔØ ÔÉÐ ÓÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ ÆÁÊ̦×."
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr "áËÔÉ×ÕÊÔÅ, ÝÏ ÓÏÒÔÕ×ÁÎÎÑ ÓÐÉÓË¦× ÂÕÌÏ ÒÅ­¦ÓÔÒÏ-ÚÁÌÅÖÎÉÍ."
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "ðÏÚÉæÀ×ÁÎÎÑ Ä¦ÁÌÏÇÏ×ÉÈ ×¦ËÏÎ"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "âÅÚ Ò¦ÚÎÉæ"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "äÏÚ×ÏÌÉÔÉ ×¦ËÏÎÎÏÍÕ ÍÅÎÅÄÖÅÒÕ ËÅÒÕ×ÁÔÉ ÒÏÚͦÝÅÎÎÑÍ ×¦ËÏÎ."
+
+#: src/prefs.c:350
+#, fuzzy
+msgid "Center of the main window"
+msgstr "ãÅÎÔÒ ÅËÒÁÎÕ"
+
+#: src/prefs.c:354
+#, fuzzy
+msgid "Windows should be placed in the center of the main window."
+msgstr "÷¦ËÎÁ ÂÕÄÕÔØ ÒÏÚͦÝÕ×ÁÔÉÓÑ × ÃÅÎÔÒ¦ ÅËÒÁÎÕ."
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "ãÅÎÔÒ ÅËÒÁÎÕ"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "÷¦ËÎÁ ÂÕÄÕÔØ ÒÏÚͦÝÕ×ÁÔÉÓÑ × ÃÅÎÔÒ¦ ÅËÒÁÎÕ."
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "ôÁÍ ÄÅ ÍÉÛËÁ"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "÷¦ËÎÁ ÂÕÄÕÔØ ÒÏÚͦÝÕ×ÁÔÉÓÑ Ð¦Ä ËÕÒÓÏÒÏÍ ÍÉÛËÉ."
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "ðÒÏÇÒÁ×ÁÞ ÁÕĦÏ-ÆÁÊ̦×"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "ýÏ ÚÁÐÕÓËÁÔÉ: "
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+#, fuzzy
+msgid "File Settings"
+msgstr "/îÁÓÔÒÏÊËÉ"
+
+#. File (name) Options
+#: src/prefs.c:426
+#, fuzzy
+msgid "File Options"
+msgstr "ðÁÒÁÍÅÔÒÉ ¦ÍÅÎ ÆÁÊ̦×"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "úÁͦÎÀ×ÁÔÉ ÎÅ ÄÏÐÕÓÔÉͦ ÓÉÍ×ÏÌÉ × ¦ÍÅΦ ÆÁÊÌÁ (ÄÌÑ Windows ÔÁ CD-Rom)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+#, fuzzy
+msgid "Convert filename extension to :"
+msgstr "¶Î×ÅÒÔÕ×ÁÔÉ ×ɦÒËÕ"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr ""
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr ""
+
+#: src/prefs.c:453
+#, fuzzy
+msgid "Upper Case"
+msgstr "÷åìéëéíé ì¶ôåòáíé"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr ""
+
+#: src/prefs.c:459
+#, fuzzy
+msgid "No Change"
+msgstr "úͦÎÉ"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr ""
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr ""
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+
+#. Character Set for File Name
+#: src/prefs.c:473
+#, fuzzy
+msgid "Character Set for File Name"
+msgstr "ðÅÒÅËÏÄÕ×ÁÎÎÑ ÓÉÍ×Ï̦×"
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr ""
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+#, fuzzy
+msgid "Tag Settings"
+msgstr "/îÁÓÔÒÏÊËÉ"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "ðÁÒÁÍÅÔÒÉ ÂÉÒËÕ×ÁÎÎÑ"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "á×ÔÏÍÁÔÉÞÎÅ ÄÏÐÏ×ÎÅÎÎÑ ÄÁÔÉ, ÑËÝÏ ÎÅ ÐÏ×ÎÁ"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+"îÁÍÁÇÁÔÉÓÑ ÄÏÐÏ×ÎÉÔÉ ÐÏÌÅ ÒÏËÕ, ÑËÝÏ ×É ÚÁÄÁÌÉ ÌÉÛÅ ÏÓÔÁÎΦ ÃÉÆÒÉ ÄÁÔÉ "
+"(îÁÐÒÉËÌÁÄ, ÑËÝÏ ÚÁÒÁÚ 2002-ÉÊ Ò¦Ë, ÔÏĦ 5 => 2005, 4 => 2004, 6 => 1996, 95 "
+"=> 1995, ÔÏÝÏ)."
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr ""
+
+#: src/prefs.c:558
+#, fuzzy
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr "áËÔÉ×ÕÊÔÅ, ÝÏ ÐÏÌÅ ÎÏÍÅÒÁ ÔÒÅËÁ ÐÒÏÐÉÓÕ×ÁÌÏÓÑ Ä×ÏÍÁ ÓÉÍ×ÏÌÁÍÉ."
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr "OGG-ÆÁÊÌÉ: úÁÐÉÓÕ×ÁÔÉ ËÏÍÅÎÔÁÒ ÔÁËÏÖ ¦ Õ ÆÏÒÍÁÔ¦ XMMS"
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr ""
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+#, fuzzy
+msgid "ID3 Tag Settings"
+msgstr "/îÁÓÔÒÏÊËÉ"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "ðÒÁ×ÉÌÁ ÂÉÒËÕ×ÁÎÎÑ"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr ""
+
+#: src/prefs.c:642
+#, fuzzy
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+"áËÔÉ×ÕÊÔÅ, ÝÏ ÄÏÄÁ×ÁÔÉ ÔÁ ÐÏÎÏ×ÌÀ×ÁÔÉ ÔÅÇÉ ID3v1 × Ë¦Îæ MP3-ÆÁÊ̦×. ¶ÎÁËÛÅ "
+"×ÏÎÉ ÂÕÄÕÔØ ÏÂÒ¦ÚÁΦ."
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "÷ÉÄÁÌÑÔÉ ÔÅÇÉ, ÑËÝÏ ×Ó¦ ÐÏÌÑ ÐÏÒÏÖΦ"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+"ïÓ˦ÌØËÉ ÔÅÇÉ ID3v2 ÍÏÖÕÔØ Í¦ÓÔÉÔÉ ÏËÒ¦Í ÔÁËÉÈ ÓÔÁÎÄÁÒÔÎÉÈ ÄÁÎÉÈ, ÑË "
+"úÁÇÏÌÏ×ÏË, ÷ÉËÏÎÁ×ÅÃØ, áÌØÂÏÍ, ò¦Ë, îÏÍÅÒ ôÒÅËÕ, öÁÎÒ ÞÉ ëÏÍÅÎÔÁÒ, ÔÁËÏÖ ¦ "
+"ÄÏÄÁÔËÏצ (ÎÁÐÒÉËÌÁÄ ÄÏÄÁÎÅ ÚÏÂÒÁÖÅÎÎÑ, ÔÅËÓÔÉ, ...), ÃÅÊ ÐÁÒÁÍÅÔÒ ÄÏÚ×ÏÌѤ "
+"ÐÏ×ΦÓÔÀ ÏÂÒ¦ÚÁÔÉ ÔÅÇ, ÑËÝÏ ×Ó¦ Ó¦Í ÓÔÁÎÄÁÒÔÎÉÈ ÐÏÌÅÊ ÄÁÎÉÈ ×ÉÓÔÁ×ÌÅΦ "
+"ÐÏÒÏÖΦÍÉ."
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "á×ÔÏÍÁÔÉÞÎÁ ËÏÎ×ÅÒÔÁÃ¦Ñ ÔÅÇÕ ID3v2 ÓÔÁÒÉÈ ×ÅÒÓ¦Ê"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr ""
+"áËÔÉ×ÕÊÔÅ, ÝÏ ÐÏÎÏ×ÌÀ×ÁÔÉ ÔÅÇÉ ID3v2 ÓÔÁÒÉÈ ×ÅÒÓ¦Ê (ÎÁÐÒÉËÌÁÄ ID3v2.2) ÄÏ "
+"×ÅÒÓ¦§ ID3v2.3."
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "âÉÒËÕ×ÁÔÉ ÔÅÇÏÍ ID3v2"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "ðÅÒÅËÏÄÕ×ÁÎÎÑ ÓÉÍ×Ï̦×"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "âÉÒËÕ×ÁÔÉ ÔÅÇÏÍ ID3v2"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "âÉÒËÕ×ÁÔÉ ÔÅÇÏÍ ID3v2"
+
+#: src/prefs.c:698
+#, fuzzy
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+"áËÔÉ×ÕÊÔÅ, ÝÏ ÄÏÄÁ×ÁÔÉ ÔÁ ÐÏÎÏ×ÌÀ×ÁÔÉ ÔÅÇÉ ID3v2 ÎÁ ÐÏÞÁÔËÕ MP3-ÆÁÊ̦×. "
+"¶ÎÁËÛÅ ×ÏÎÉ ÂÕÄÕÔØ ÏÂÒ¦ÚÁΦ."
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "èÁÒÁËÔÅÒÉÓÔÉËÁ:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "àΦËÏÄ (UTF-8)"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "ëÏÄÕ×ÁÌØÎÉË:"
+
+#: src/prefs.c:765
+#, fuzzy
+msgid "Character set used to write the tag data in the file."
+msgstr "ëÏÄÕ×ÁÎÎÑ, ÝÏ ×ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ ÄÌÑ ÐÏËÁÚÕ ÔÅÇ¦× × ¦ÎÔÅÒÆÅÊÓ¦ ÐÒÏÇÒÁÍÉ."
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr "ÎÅÍÁ¤"
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ôÅÇ ID3"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "âÉÒËÕ×ÁÔÉ ÔÅÇÏÍ ID3v1.x"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+"áËÔÉ×ÕÊÔÅ, ÝÏ ÄÏÄÁ×ÁÔÉ ÔÁ ÐÏÎÏ×ÌÀ×ÁÔÉ ÔÅÇÉ ID3v1 × Ë¦Îæ MP3-ÆÁÊ̦×. ¶ÎÁËÛÅ "
+"×ÏÎÉ ÂÕÄÕÔØ ÏÂÒ¦ÚÁΦ."
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "ëÏÄÕ×ÁÎÎÑ, ÝÏ ×ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ ÄÌÑ ÐÏËÁÚÕ ÔÅÇ¦× × ¦ÎÔÅÒÆÅÊÓ¦ ÐÒÏÇÒÁÍÉ."
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "ðÅÒÅËÏÄÕ×ÁÎÎÑ ÓÉÍ×Ï̦×"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+
+#: src/prefs.c:903
+#, fuzzy
+msgid "Character set used to read tag data in the file."
+msgstr "ëÏÄÕ×ÁÎÎÑ, ÝÏ ×ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ ÄÌÑ ÐÏËÁÚÕ ÔÅÇ¦× × ¦ÎÔÅÒÆÅÊÓ¦ ÐÒÏÇÒÁÍÉ."
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "óËÁÎÅÒ"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+#, fuzzy
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "ôÁÂÌÉÃÑ ÐÅÒÅËÏÄÕ×ÁÎÎÑ"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "ëÏÎ×ÅÒÔÕ×ÁÔÉ ÓÉÍ×ÏÌ Ð¦ÄËÒÅÓÌÅÎÎÑ '_' ÔÁ ÒÑÄÏË '%20' ÎÁ ÐÒÏÂ¦Ì ' '"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "ëÏÎ×ÅÒÔÕ×ÁÔÉ ÐÒÏÂ¦Ì ' ' ÎÁ ЦÄËÒÅÓÌÅÎÎÑ '_'"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+#, fuzzy
+msgid "Rename File Scanner - Character Conversion"
+msgstr "ôÁÂÌÉÃÑ ÐÅÒÅËÏÄÕ×ÁÎÎÑ"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+#, fuzzy
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "ôÁÂÌÉÃÑ ÐÅÒÅËÏÄÕ×ÁÎÎÑ"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "÷¦ËÎÏ ÓËÁÎÅÒÁ"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "÷¦ÄËÒÉÔÉ ×¦ËÎÏ ÓËÁÎÅÒÁ ÎÁ ÐÏÞÁÔËÕ ÒÏÂÏÔÉ"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+"áËÔÉ×ÕÊÔÅ, ÝÏ צËÎÏ ÓËÁÎÅÒÁ Á×ÔÏÍÁÔÉÞÎÏ ×¦ÄËÒÉ×ÁÌÏÓÑ ÎÁ ÐÏÞÁÔËÕ ÒÏÂÏÔÉ "
+"EasyTAG."
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "÷¦ËÎÏ ÓËÁÎÅÒÁ ÚÁ×ÖÄÉ Ú×ÅÒÈÕ"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+"áËÔÉ×ÕÊÔÅ, ÝÏ צËÎÏ, ÝÏ Í¦ÓÔÉÔØ ÍÁÓËÉ, ÚÁ×ÖÄÉ ÚÁÌÉÛÁÌÏÓÑ ÐÏ×ÅÒÈ ÇÏÌÏ×ÎÏÇÏ "
+"צËÎÁ."
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr "ðÏÌÑ"
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "ðÅÒÅÚÁÐÉÓÕ×ÁÔÉ ÐÏÌÑ × ÐÒÏÃÅÓ¦ ÓËÁÎÕ×ÁÎÎÑ ÔÅǦ×"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "ôÅËÓÔ ÑË ÔÉÐÏ×ÉÊ ËÏÍÅÎÔÁÒ:"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr ""
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr ""
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+msgid "Server Settings for Automatic Search"
+msgstr ""
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "îÁÚ×Á: "
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "ðÏÒÔ: "
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "ûÌÑÈ ÄÏ CGI: "
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "îÁÓÔÒÏÊËÁ ÓÅÒ×ÅÒÁ"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "ðÏÛÕË × CDDB"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "ûÌÑÈ ÄÏ CGI: "
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "îÁÓÔÒÏÊËÉ ÐÒÏËÓ¦"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "÷ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÐÒÏËÓ¦"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr "áËÔÉ×ÕÊÔÅ ÎÁÓÔÒÏÊËÉ ÐÒÏËÓ¦-ÓÅÒ×ÅÒÁ."
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "áÄÒÅÓÁ: "
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "¶Í'Ñ ÐÒÏËÓ¦-ÓÅÒ×ÅÒÁ."
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "ðÏÒÔ ÐÒÏËÓ¦-ÓÅÒ×ÅÒÁ."
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "¶Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ: "
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "¶Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ ÄÌÑ ÐÒÏËÓ¦-ÓÅÒ×ÅÒÁ."
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "ðÁÒÏÌØ: "
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "ðÁÒÏÌØ ËÏÒÉÓÔÕ×ÁÞÁ ÄÌÑ ÐÒÏËÓ¦-ÓÅÒ×ÅÒÁ."
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+#, fuzzy
+msgid "Track Name List"
+msgstr "îÁÚ×Á ÔÒÅËÁ"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "ð¦ÄÔ×ÅÒÄÖÅÎÎÑ"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "ð¦ÄÔ×ÅÒÄÖÅÎÎÑ ×ÉÈÏÄÕ Ú ÐÒÏÇÒÁÍÉ"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+"ëÏÌÉ ÁËÔÉ×Ï×ÁÎÏ, ×ÉÄÁ¤ ĦÁÌÏÇÏ׊צËÎÏ ¦Ú ÚÁÐÉÔÏÍ Ð¦ÄÔ×ÅÒÄÖÅÎÎÑ ÐÅÒÅÄ "
+"×ÉÈÏÄÏÍ Ú ÐÒÏÇÒÁÍÉ."
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "ð¦ÄÔ×ÅÒÄÖÅÎÎÑ ÚÁÐÉÓÕ ÔÅÇÕ ÄÏ ÆÁÊÌÁ"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "ð¦ÄÔ×ÅÒÄÖÅÎÎÑ ÐÅÒÅÊÍÅÎÕ×ÁÎÎÑ ÆÁÊÌÁ"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "ð¦ÄÔ×ÅÒÄÖÅÎÎÑ ×ÉÄÁÌÅÎÎÑ ÆÁÊÌÁ"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "ð¦ÄÔ×ÅÒÄÖÅÎÎÑ ÚÁÐÉÓÕ ÓÐÉÓËÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "úÁÓÔÏÓÕ×ÁÔÉ ÚͦÎÉ (ÁÌÅ ÎÅ ÚÂÅÒ¦ÇÁÔÉ) ÔÁ ÚÁËÒÉÔÉ ×¦ËÎÏ"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "úÁËÒÉÔÉ ×¦ËÎÏ ÂÅÚ ÚÂÅÒÅÖÅÎÎÑ"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "úÂÅÒÅÇÔÉ ÚͦÎÉ Ê ÚÁËÒÉÔÉ ÃŠצËÎÏ"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr ""
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "úͦÎÉ ÚÁÓÔÏÓÏ×ÁΦ"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "ëÏÎƦÇÕÒÁæÀ ÚÂÅÒÅÖÅÎÏ"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "ëÏÎƦÇÕÒÁæÀ ÎÅ ÚͦÎÅÎÏ"
+
+#: src/prefs.c:1692
+#, fuzzy, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+"úÁÄÁÎÏ ÎŦÓÎÕÀÞÉÊ ÛÌÑÈ!:\n"
+"%s\n"
+"(%s)"
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "ãÅ ÎÅ ËÁÔÁÌÏÇ"
+
+#: src/prefs.c:1795
+#, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr ""
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "úÁÐÏ×ÎÉÔÉ ÔÅÇ"
+
+#: src/scan.c:175
+#, fuzzy
+msgid "Rename File and Directory"
+msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ËÁÔÁÌÏÇÁ"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "ïÂÒÏÂËÁ ÐÏ̦×"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "ôÅÇ ÐÒÏÓËÁÎÏ×ÁÎÏ..."
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "ôÅÇ ÐÒÏÓËÁÎÏ×ÁÎÏ... (%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "ðÏÍÉÌËÁ óËÁÎÅÒÁ: ÎÅ ÍÏÖÕ ÚÎÁÊÔÉ ÒÏÚĦÌØÎÉË '%s' × '%s'"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "îÏ×Å ¦Í'Ñ ÆÁÊÌÁ ÐÒÏÓËÁÎÏ×ÁÎÏ..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "îÏ×Å ¦Í'Ñ ÆÁÊÌÁ ÐÒÏÓËÁÎÏ×ÁÎÏ... (%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "óËÁÎÕ×ÁÎÎÑ ÔÅÇÕ ÔÁ ¦ÍÅΦ ÆÁÊÌÁ"
+
+#. Option Menu
+#: src/scan.c:1823
+msgid "Scanner:"
+msgstr "óËÁÎÅÒ: "
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "÷ÉÂÅÒ¦ÔØ, ÑËÉÊ ÔÉÐ ÓËÁÎÅÒÕ ×ÉËÏÒÉÓÔÁÔÉ"
+
+#: src/scan.c:1851
+#, fuzzy
+msgid "Open scanner window / Scan selected files"
+msgstr "óËÁÎÕ×ÁÔÉ ×ÉĦÌÅΦ ÆÁÊÌÉ"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "ðÁÒÁÍÅÔÒÉ óËÁÎÅÒÁ"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "ðÏËÁÚÁÔÉ/ÓÈÏ×ÁÔÉ ÒÅÄÁËÔÏÒ ÍÁÓÏË"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "ðÏËÁÚÁÔÉ/ÓÈÏ×ÁÔÉ ÌÅÇÅÎÄÕ"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "úÁËÒÉÔÉ ×¦ËÎÏ"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "ðÏÐÅÒÅÄÎ¦Ê ÐÅÒÅÇÌÑÄ..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr ""
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "ðÏÐÅÒÅÄÎ¦Ê ×ÉÇÌÑÄ: ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ÆÁÊÌÁ..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "÷ÉÂÅÒ¦ÔØ ÐÏÌÑ:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr "æ"
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ¦ÍÅΦ ÆÁÊÌÁ"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "ú"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ÚÁÇÏÌÏ×ËÕ"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "÷"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ×ÉËÏÎÁ×ÃÑ"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "á"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ÁÌØÂÏÍÕ"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "çÂ"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ÖÁÎÒÕ"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+#, fuzzy
+msgid "Cm"
+msgstr "ë"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ËÏÍÅÎÔÁÒÑ"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+#, fuzzy
+msgid "Cp"
+msgstr "ë"
+
+#: src/scan.c:2059
+#, fuzzy
+msgid "Process composer field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ËÏÍÅÎÔÁÒÑ"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr ""
+
+#: src/scan.c:2062
+#, fuzzy
+msgid "Process original artist field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ×ÉËÏÎÁ×ÃÑ"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+#, fuzzy
+msgid "Cr"
+msgstr "ë"
+
+#: src/scan.c:2065
+#, fuzzy
+msgid "Process copyright field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ËÏÍÅÎÔÁÒÑ"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr ""
+
+#: src/scan.c:2068
+#, fuzzy
+msgid "Process URL field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ÚÁÇÏÌÏ×ËÕ"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr ""
+
+#: src/scan.c:2071
+#, fuzzy
+msgid "Process encoder name field"
+msgstr "ïÂÒÏÂÌÀ×ÁÔÉ ÐÏÌÅ ¦ÍÅΦ ÆÁÊÌÁ"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "¶Î×ÅÒÔÕ×ÁÔÉ ×ɦÒËÕ"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "÷ÉÂÒÁÔÉ/óËÁÓÕ×ÁÔÉ ×ɦÒËÕ."
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "ëÏÎ×ÅÒÔÕ×ÁÔÉ '_'ÔÁ '%20' ÎÁ ' '"
+
+#: src/scan.c:2138
+#, fuzzy
+msgid "Convert:"
+msgstr "ðÏÒÔ: "
+
+#: src/scan.c:2140
+#, fuzzy
+msgid "to: "
+msgstr "×: "
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr ""
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr "÷ÓÔÁ×ÉÔÉ ÐÒÏÐÕÓË ÐÅÒÅÄ ÷ÅÌÉËÏÀ ̦ÔÅÒÏÀ"
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr "÷ÉÄÁÌÉÔÉ ÄÕÂÌØÏ×ÁΦ ÐÒϦÌÉ ÔÁ ЦÄËÒÅÓÌÅÎÎÑ"
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "ìÅÇÅÎÄÁ"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a : ×ÉËÏÎÁ×ÅÃØ"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b : ÁÌØÂÏÍ"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c : ËÏÍÅÎÔÁÒ"
+
+#: src/scan.c:2267
+#, fuzzy, c-format
+msgid "%p : composer"
+msgstr "%c : ËÏÍÅÎÔÁÒ"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr ""
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr ""
+
+#: src/scan.c:2276
+#, fuzzy, c-format
+msgid "%e : encoded by"
+msgstr "ëÏÄÕ×ÁÌØÎÉË:"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g : ÓÔÉÌØ"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i : ¦ÇÎÏÒÕ¤ÔØÓÑ"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l : ˦ÌØ˦ÓÔØ ÔÒÅ˦×"
+
+#: src/scan.c:2288
+#, fuzzy, c-format
+msgid "%o : orig. artist"
+msgstr "%a : ×ÉËÏÎÁ×ÅÃØ"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n : ÔÒÅË"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t : ÎÁÚ×Á"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr ""
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y : Ò¦Ë"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "òÅÄÁËÔÏÒ ÍÁÓÏË"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "óÔ×ÏÒÉÔÉ ÎÏ×Õ ÍÁÓËÕ"
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "ð¦ÄÎÑÔÉ ÎÁ ÏÄÎÕ ÐÏÚÉæÀ"
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "ïÐÕÓÔÉÔÉ ÎÁ ÏÄÎÕ ÐÏÚÉæÀ"
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "äÕÂÌÀ×ÁÔÉ ÍÁÓËÕ"
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "äÏÄÁÔÉ ÔÉÐÏ×Õ"
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "÷ÉÄÁÌÉÔÉ ÍÁÓËÕ"
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "úÂÅÒÅÇÔÉ ÍÁÓËÉ"
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "îÏ×Á_íÁÓËÕ"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr "ëÏЦÀ×ÁÔÉ: ÎÅ ×ÉÂÒÁÎÏ ÒÑÄÏË!"
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr "÷ÉÄÁÌÉÔÉ: ÎÅ ×ÉÂÒÁÎÏ ÒÑÄÏË!"
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr "úͦÓÔÉÔÉ ×ÇÏÒÕ: ÎÅ ×ÉÂÒÁÎÏ ÒÑÄÏË!"
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr "úͦÓÔÉÔÉ ×ÎÉÚ: ÎÅ ×ÉÂÒÁÎÏ ÒÑÄÏË!"
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr "ðïíéìëá: îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÆÁÊÌ ÐÁÒÁÍÅÔÒ¦×: %s (%s)"
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ ÐÁÒÁÍÅÔÒ¦× '%s' (%s)"
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr "úÁ×ÁÎÔÁÖÅÎÎÑ ÔÉÐÏ×ÉÈ ÐÁÒÁÍÅÔÒ¦×..."
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, fuzzy, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ '%s' (%s)"
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr "ðïíéìëá: îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÓÐÉÓÏË Õ ÆÁÊÌ: %s (%s)"
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr "úÁ×ÁÎÔÁÖÅÎÎÑ ÔÉÐÏ×ϧ ÍÁÓËÉ 'úÁÐÏ×ÎÉÔÉ ôÅÇÉ'..."
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr "úÁ×ÁÎÔÁÖÅÎÎÑ ÔÉÐÏ×ϧ ÍÁÓËÉ 'ðÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌÉ'..."
+
+#. Fall back to defaults
+#: src/setting.c:1396
+#, fuzzy
+msgid "Loading default 'Rename Directory' masks..."
+msgstr "úÁ×ÁÎÔÁÖÅÎÎÑ ÔÉÐÏ×ϧ ÍÁÓËÉ 'ðÅÒÅÊÍÅÎÕ×ÁÔÉ ÆÁÊÌÉ'..."
+
+#: src/setting.c:1589
+#, fuzzy
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+"ðïíéìëá: ÚͦÎÎÁ HOME ÎÅ ×ÉÚÎÁÞÅÎÁ!\n"
+"\n"
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr "ðïíéìëá: îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ËÁÔÁÌÏÇ '%s' (%s)!"
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr "÷ȦÄΦ ÄÁΦ ÏÂÒ¦ÚÁΦ ÁÂÏ ÐÏÒÏÖΦ."
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "÷ȦÄΦ ÄÁΦ ÎÅ ¤ ÐÏÔÏËÏÍ Ogg."
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "ðÏÍÉÌËÁ ÞÉÔÁÎÎÑ ÐÅÒÛϧ ÓÔÏÒ¦ÎËÉ ÐÏÔÏËÕ Ogg."
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr "ðÏÍÉÌËÁ ÞÉÔÁÎÎÑ ÐÏÞÁÔËÏ×ÏÇÏ ÚÁÇÏÌÏ×ËÕ."
+
+#: src/vcedit.c:341
+#, fuzzy
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr "ðÏÔ¦Ë Ogg ΊͦÓÔÉÔØ ÄÁÎÉÈ vorbis."
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr "äÒÕÇÉÊ ÚÁÇÏÌÏ×ÏË ÐÏÛËÏÄÖÅÎÏ."
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr "ë¦ÎÅÃØ ÆÁÊÌÁ ÐÅÒÅÄ Ë¦ÎÃÅÍ ÚÁÇÏÌÏ×ËÁ vorbis."
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr "äÁΦ צÄÓÕÔΦ ÁÂÏ ÐÏÛËÏÄÖÅΦ, ÐÒÏÄÏ×ÖÕ¤ÍÏ..."
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+"ðÏÍÉÌËÁ ÚÁÐÉÓÕ ×ÉȦÄÎÉÈ ÄÁÎÉÈ. ÷ÉȦÄÎÉÊ ÐÏÔ¦Ë ÍÏÖÅ ÂÕÔÉ ÐÏÛËÏÄÖÅÎÉÍ ÞÉ "
+"ÏÂÒ¦ÚÁÎÉÍ."
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "úÁ×ÁÎÔÁÖÉÔÉ ÐÒÏÇÒÁ×ÁÞ"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "îÅצÒÎÁ ×ÅÒÓ¦Ñ ÔÅÇÕ"
+
+#~ msgid "Unicode (UTF-7)"
+#~ msgstr "àΦËÏÄ (UTF-7)"
+
+#~ msgid "Unicode (UTF-16BE)"
+#~ msgstr "àΦËÏÄ (UTF-16BE)"
+
+#~ msgid "Unicode (UTF-16LE)"
+#~ msgstr "àΦËÏÄ (UTF-16LE)"
+
+#, fuzzy
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "ðÅÒÅËÏÄÕ×ÁÎÎÑ ÓÉÍ×Ï̦×"
+
+#, fuzzy
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "ðÅÒÅËÏÄÕ×ÁÎÎÑ ÓÉÍ×Ï̦×"
+
+#~ msgid ""
+#~ "The character set translation from '%s'\n"
+#~ "to '%s' isn't supported!"
+#~ msgstr ""
+#~ "ðÅÒÅËÏÄÕ×ÁÎÎÑ ÓÉÍ×ÏÌ¦× Ú ËÏÄÕ×ÁÎÎÑ '%s'\n"
+#~ "× '%s' ΊЦÄÔÒÉÍÕ¤ÔØÓÑ!"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr "ðïíéìëá צÄËÒÉÔÔÑ ÆÁÊÌÁ: '%s' (%s)."
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "úÁ×ÁÎÔÁÖÕ×ÁÔÉ Ð¦Ä ÞÁÓ ÓÔÁÒÔÕ ËÁÔÁÌÏÇ"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "öÏ×ÔÉÊ ÆÏÎ Õ Ð¦ÄËÁÚÏË"
+
+#~ msgid ""
+#~ "If activated, the background of tooltips will be yellow colored, "
+#~ "overriding your window manager."
+#~ msgstr ""
+#~ "áËÔÉ×ÕÊÔÅ, ÝÏ ЦÄËÁÚËÉ ÍÁÌÉ ÖÏ×ÔÉÊ ÆÏÎ, Á ÎÅ ÓÔÁÎÄÁÒÔÎÉÊ ËÏÌ¦Ò ×¦ËÏÎÎÏÇÏ "
+#~ "ÍÅÎÅÄÖÅÒÁ."
+
+#~ msgid "Set main window size"
+#~ msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÒÏÚÍ¦Ò ÇÏÌÏ×ÎÏÇÏ ×¦ËÎÁ"
+
+#~ msgid "Width :"
+#~ msgstr "ûÉÒÉÎÁ:"
+
+#~ msgid "Height :"
+#~ msgstr "÷ÉÓÏÔÁ:"
+
+#~ msgid " Get current size "
+#~ msgstr " ÷ÚÑÔÉ ÐÏÔÏÞÎÉÊ ÒÏÚÍ¦Ò "
+
+#~ msgid "Width: set -1 for automatic size"
+#~ msgstr "ûÉÒÉÎÁ: -1 ÄÁ¤ Á×ÔÏÒÏÚͦÒ"
+
+#~ msgid "Heigth: set -1 for automatic size"
+#~ msgstr "÷ÉÓÏÔÁ: -1 ÄÁ¤ Á×ÔÏÒÏÚͦÒ"
+
+#~ msgid "Position :"
+#~ msgstr "ðÏÚÉæÑ:"
+
+#~ msgid " Get current position "
+#~ msgstr " ÷ÚÑÔÉ ÐÏÔÏÞÎÕ ÐÏÚÉæÀ "
+
+#~ msgid "Position: set -1 for automatic positioning"
+#~ msgstr "úͦΦÔØ ÎÁ -1 ÄÌÑ Á×ÔÏÍÁÔÉÞÎÏÇÏ ÐÏÚÉæÀ×ÁÎÎÑ"
+
+#, fuzzy
+#~ msgid "Set vertical left pane handle position"
+#~ msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÏÚÉæÀ ̦×ϧ ÐÁÎÅ̦"
+
+#, fuzzy
+#~ msgid "Set horizontal pane handle position"
+#~ msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÏÚÉæÀ ÐÒÁ×ϧ ÐÁÎÅ̦"
+
+#~ msgid "Set scanner window position"
+#~ msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÒÏÚÔÁÛÕ×ÁÎÎÑ ×¦ËÎÁ ÓËÁÎÅÒÁ"
+
+#~ msgid "X :"
+#~ msgstr "X:"
+
+#~ msgid "Y :"
+#~ msgstr "Y:"
+
+#, fuzzy
+#~ msgid "CD Data Base Window"
+#~ msgstr "÷¦ËÎÏ CDDB"
+
+#, fuzzy
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÒÏÚÍ¦Ò ×¦ËÎÁ CDDB"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "÷ËÁÖ¦ÔØ ÔÉÐÏ×ÉÊ ÒÏÚÍ¦Ò ×¦ËÎÁ CDDB"
+
+#~ msgid "Set pane handle position"
+#~ msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÏÚÉæÀ ÐÁÎÅ̦"
+
+#~ msgid " Window height (%d) is bigger than screen height (%d)! "
+#~ msgstr " ÷ÉÓÏÔÁ צËÎÁ (%d) ¦ÌØÛÁ ÚÁ ÒÏÚͦÒÉ ÅËÒÁÎÕ (%d)! "
+
+#~ msgid "Size Error..."
+#~ msgstr "ðÏÍÉÌËÁ ÒÏÚͦÒÕ..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr " ûÉÒÉÎÁ צËÎÁ (%d) ¦ÌØÛÁ ÚÁ ÒÏÚͦÒÉ ÅËÒÁÎÕ (%d)! "
+
+#~ msgid "The scanner window must be open to get its current position!"
+#~ msgstr ""
+#~ "÷¦ËÎÏ ÓËÁÎÅÒÁ ÐÏ×ÉÎÎÅ ÂÕÔÉ ×¦ÄËÒÉÔÉÍ ÄÌÑ ÔÏÇÏ, ÝÏ ÏÔÒÉÍÁÔÉ ÐÏÔÏÞÎÕ "
+#~ "ÐÏÚÉæÀ!"
+
+#~ msgid "The CDDB window must be open to get its current position!"
+#~ msgstr ""
+#~ "÷¦ËÎÏ CDDB ÐÏ×ÉÎÎÅ ÂÕÔÉ ×¦ÄËÒÉÔÉÍ ÄÌÑ ÔÏÇÏ, ÝÏ ÏÔÒÉÍÁÔÉ ÐÏÔÏÞÎÕ ÐÏÚÉæÀ!"
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "úÂÅÒ¦ÇÁÔÉ ÐÁÒÁÍÅÔÒÉ ÐÅÒÅÄ ×ÉÈÏÄÏÍ Ú ÐÒÏÇÒÁÍÉ"
+
+#~ msgid ""
+#~ "If activated, the configuration will be automatically saved before "
+#~ "exiting the program."
+#~ msgstr ""
+#~ "áËÔÉ×ÕÊÔÅ, ÝÏ Á×ÔÏÍÁÔÉÞÎÏ ÚÂÅÒ¦ÇÁÔÉ ÐÁÒÁÍÅÔÒÉ ÐÅÒÅÄ ×ÉÈÏÄÏÍ Ú ÐÒÏÇÒÁÍÉ."
+
+#, fuzzy
+#~ msgid ""
+#~ "...and apply these rules if conversion to character set for writing ID3 "
+#~ "tags fails:"
+#~ msgstr "ðÅÒÅËÏÄÕ×ÁÎÎÑ ÓÉÍ×Ï̦×"
+
+#~ msgid "Unicode (UTF-32BE)"
+#~ msgstr "àΦËÏÄ (UTF-32BE)"
+
+#~ msgid "Unicode (UTF-32LE)"
+#~ msgstr "àΦËÏÄ (UTF-32LE)"
+
+#~ msgid "to :"
+#~ msgstr "×: "
+
+#~ msgid "Rename File"
+#~ msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ÆÁÊÌÁ"
+
+#~ msgid "Scan Tag"
+#~ msgstr "óËÁÎÕ×ÁÔÉ ÔÅÇÉ"
+
+#~ msgid "Scan File Name"
+#~ msgstr "óËÁÎÕ×ÁÔÉ ¦ÍÅÎÁ ÆÁÊ̦×"
+
+#~ msgid "Keep the tree browser in memory"
+#~ msgstr "úÂÅÒ¦ÇÁÔÉ ÄÅÒÅ×Ï Õ ÐÁÍ'ÑÔ¦"
+
+#~ msgid ""
+#~ "If activated, the subdirectories of a node aren't regenerated when "
+#~ "collapsing and re-expanding this node."
+#~ msgstr "ýÏ ÎÅ ÐÅÒÅÞÉÔÕ×ÁÔÉ Ú ÄÉÓËÕ Ð¦ÄËÁÔÁÌÏÇÉ ÐÒÉ ÒÏÚËÒÉÔÔ¦ ×ÕÚÌÁ ÄÅÒÅ×Á."
+
+#, fuzzy
+#~ msgid "Open File(s) with .."
+#~ msgstr "÷¦ÄËÒÉÔÉ ÚÁ ÄÏÐÏÍÏÇÏÀ..."
+
+#, fuzzy
+#~ msgid "Browse Directory with..."
+#~ msgstr "ðÅÒÅÇÌÑÎÕÔÉ ÚÁ ÄÏÐÏÍÏÇÏÀ..."
+
+#~ msgid "/File/tearoff"
+#~ msgstr "/æÁÊÌ/tearoff"
+
+#~ msgid "/File/Sort List"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ"
+
+#~ msgid "/File/Sort List/tearoff"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/tearoff"
+
+#~ msgid "/File/Sort List/Ascending by filename"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ"
+
+#~ msgid "/File/Sort List/Descending by filename"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ"
+
+#~ msgid "/File/Sort List/sep"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/sep"
+
+#~ msgid "/File/Sort List/Ascending by creation date"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÄÁÔÉ ÓÔ×ÏÒÅÎÎÑ"
+
+#~ msgid "/File/Sort List/Descending by creation date"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÄÁÔÉ ÓÔ×ÏÒÅÎÎÑ"
+
+#~ msgid "/File/Sort List/Ascending by track number"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#~ msgid "/File/Sort List/Descending by track number"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#~ msgid "/File/Sort List/Ascending by title"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÎÁÚ×É ËÏÍÐÏÚÉæ§"
+
+#~ msgid "/File/Sort List/Descending by title"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÎÁÚ×É ËÏÍÐÏÚÉæ§"
+
+#~ msgid "/File/Sort List/Ascending by artist"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#~ msgid "/File/Sort List/Descending by artist"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#~ msgid "/File/Sort List/Ascending by album"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÎÁÚ×É ÁÌØÂÏÍÕ"
+
+#~ msgid "/File/Sort List/Descending by album"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÎÁÚ×É ÁÌØÂÏÍÕ"
+
+#~ msgid "/File/Sort List/Ascending by year"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÒÏËÕ"
+
+#~ msgid "/File/Sort List/Descending by year"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÒÏËÕ"
+
+#~ msgid "/File/Sort List/Ascending by genre"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÖÁÎÒÕ"
+
+#~ msgid "/File/Sort List/Descending by genre"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÖÁÎÒÕ"
+
+#~ msgid "/File/Sort List/Ascending by comment"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ËÏÍÅÎÔÁÒÑ"
+
+#~ msgid "/File/Sort List/Descending by comment"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ËÏÍÅÎÔÁÒÑ"
+
+#~ msgid "/File/Sort List/Ascending by file type"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÔÉÐÕ ÆÁÊÌÁ"
+
+#~ msgid "/File/Sort List/Descending by file type"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÔÉÐÕ ÆÁÊÌÁ"
+
+#~ msgid "/File/Sort List/Ascending by file size"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÒÏÚͦÒÕ ÆÁÊÌÁ"
+
+#~ msgid "/File/Sort List/Descending by file size"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÒÏÚͦÒÕ ÆÁÊÌÁ"
+
+#~ msgid "/File/Sort List/Ascending by duration"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÞÁÓÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#~ msgid "/File/Sort List/Descending by duration"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÞÁÓÕ ×¦ÄÔ×ÏÒÅÎÎÑ"
+
+#~ msgid "/File/Sort List/Ascending by bitrate"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ Â¦ÔÒÅÊÔÁ"
+
+#~ msgid "/File/Sort List/Descending by bitrate"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ Â¦ÔÒÅÊÔÁ"
+
+#~ msgid "/File/Sort List/Ascending by samplerate"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÚÒÏÓÔÁÎÎÑÍ ÞÁÓÔÏÔÉ ÄÉÓËÒÅÔÉÚÁæ§"
+
+#~ msgid "/File/Sort List/Descending by samplerate"
+#~ msgstr "/æÁÊÌ/óÏÒÔÕ×ÁÎÎÑ ÓÐÉÓËÕ/úÁ ÓÐÁÄÁÎÎÑÍ ÞÁÓÔÏÔÉ ÄÉÓËÒÅÔÉÚÁæ§"
+
+#~ msgid "/File/Open File(s) with ..."
+#~ msgstr "/æÁÊÌ/÷¦ÄËÒÉÔÉ ÚÁ ÄÏÐÏÍÏÇÏÀ..."
+
+#~ msgid "/File/sep"
+#~ msgstr "/æÁÊÌ/sep"
+
+#~ msgid "/File/Select All Files"
+#~ msgstr "/æÁÊÌ/÷ÉÂÒÁÔÉ ×Ó¦ ÆÁÊÌÉ"
+
+#~ msgid "/File/Unselect All Files"
+#~ msgstr "/æÁÊÌ/óËÁÓÕ×ÁÔÉ ×ɦÒËÕ"
+
+#~ msgid "/File/Invert Files Selection"
+#~ msgstr "/æÁÊÌ/¶Î×ÅÒÔÕ×ÁÔÉ ×ɦÒËÕ"
+
+#~ msgid "/File/Delete File(s)"
+#~ msgstr "/æÁÊÌ/÷ÉÄÁÌÉÔÉ ÆÁÊÌ"
+
+#~ msgid "/Browser/tearoff"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/tearoff"
+
+#~ msgid "/Browser/Go to _Home Directory"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/ðÅÒÅÊÔÉ × äÏÍÁÛÎ¦Ê ËÁÔÁÌÏÇ"
+
+#~ msgid "/Browser/Go to _Default Directory"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/ðÅÒÅÊÔÉ Õ ÔÉÐÏ×ÉÊ ËÁÔÁÌÏÇ"
+
+#~ msgid "/Browser/Set _Current Path as Default"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/úÒÏÂÉÔÉ ÐÏÔÏÞÎÉÊ ËÁÔÁÌÏÇ ÔÉÐÏ×ÉÍ"
+
+#~ msgid "/Browser/sep"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/sep"
+
+#~ msgid "/Browser/Rename Directory ..."
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/ðÅÒÅÊÍÅÎÕ×ÁÔÉ ËÁÔÁÌÏÇ..."
+
+#~ msgid "/Browser/Reload Directory"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/ðÅÒÅÞÉÔÁÔÉ ËÁÔÁÌÏÇ"
+
+#~ msgid "/Browser/Browse Directory with ..."
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/ðÅÒÅÇÌÑÄÁÔÉ Ð¦ÄËÁÔÁÌÏÇÉ Ú..."
+
+#~ msgid "/Browser/Browse _Sub-directories"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/ðÅÒÅÇÌÑÄÁÔÉ Ð¦ÄËÁÔÁÌÏÇÉ"
+
+#~ msgid "/Browser/_Collapse Tree"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/úÇÏÒÎÕÔÉ ÄÅÒÅ×Ï"
+
+#~ msgid "/Browser/_Refresh Tree"
+#~ msgstr "/ðÅÒÅÇÌÑÄÁÞ/ïÎÏ×ÉÔÉ ÄÅÒÅ×Ï"
+
+#~ msgid "/Scanner/tearoff"
+#~ msgstr "/óËÁÎÅÒ/tearoff"
+
+#~ msgid "/Scanner/_Fill Tag(s) ..."
+#~ msgstr "/óËÁÎÅÒ/úÁÐÏ×ÎÉÔÉ ÔÅÇÉ..."
+
+#~ msgid "/Scanner/_Rename File(s) ..."
+#~ msgstr "/óËÁÎÅÒ/ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ÆÁÊÌÁ..."
+
+#~ msgid "/Scanner/_Process Fields ..."
+#~ msgstr "/óËÁÎÅÒ/ïÂÒÏÂËÁ ÐÏ̦×..."
+
+#~ msgid "/Misc/tearoff"
+#~ msgstr "/ò¦ÚÎÅ/tearoff"
+
+#~ msgid "/Misc/S_earch File(s) ..."
+#~ msgstr "/ò¦ÚÎÅ/ðÏÛÕË ÆÁÊ̦×..."
+
+#~ msgid "/Misc/_CDDB Search ..."
+#~ msgstr "/ò¦ÚÎÅ/ðÏÛÕË × CDDB..."
+
+#~ msgid "/Misc/sep"
+#~ msgstr "/ò¦ÚÎÅ/sep"
+
+#~ msgid "/Misc/Write Playlist ..."
+#~ msgstr "/ò¦ÚÎÅ/úÁÐÉÓÁÔÉ ÓÐÉÓÏË ×¦ÄÔ×ÏÒÅÎÎÑ..."
+
+#~ msgid "/Misc/Run Audio Player"
+#~ msgstr "/ò¦ÚÎÅ/úÁ×ÁÎÔÁÖÉÔÉ ÐÒÏÇÒÁ×ÁÞ"
+
+#~ msgid "/Settings/tearoff"
+#~ msgstr "/îÁÓÔÒÏÊËÉ/tearoff"
+
+#~ msgid "/Settings/_Preferences ..."
+#~ msgstr "/îÁÓÔÒÏÊËÉ/ðÁÒÁÍÅÔÒÉ..."
+
+#~ msgid "/Settings/sep"
+#~ msgstr "/îÁÓÔÒÏÊËÉ/sep"
+
+#~ msgid "/Help/tearoff"
+#~ msgstr "/äÏÐÏÍÏÇÁ/tearoff"
+
+#~ msgid "/Help/_About .."
+#~ msgstr "/äÏÐÏÍÏÇÁ/ðÒÏ..."
+
+#~ msgid "Select first file"
+#~ msgstr "÷ÉÂÒÁÔÉ ÐÅÒÛÉÊ ÆÁÊÌ"
+
+#~ msgid "Select previous file"
+#~ msgstr "÷ÉÂÒÁÔÉ ÐÏÐÅÒÅÄÎ¦Ê ÆÁÊÌ"
+
+#~ msgid "Select next file"
+#~ msgstr "÷ÉÂÒÁÔÉ ÎÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#~ msgid "Select last file"
+#~ msgstr "÷ÉÂÒÁÔÉ ÏÓÔÁÎÎ¦Ê ÆÁÊÌ"
+
+#~ msgid "Undo last changes of selected files"
+#~ msgstr "óËÁÓÕ×ÁÔÉ ÏÓÔÁÎΦ ÚͦÎÉ Õ ×ÉĦÌÅÎÉÈ ÆÁÊÌÁÈ"
+
+#~ msgid "Redo last changes of selected files"
+#~ msgstr "ðÏ×ÔÏÒÉÔÉ ÏÓÔÁÎΦ ÚͦÎÉ Õ ×ÉĦÌÅÎÉÈ ÆÁÊÌÁÈ"
+
+#~ msgid "Save selected files"
+#~ msgstr "úÁÐÉÓÁÔÉ ×ÉĦÌÅΦ ÆÁÊÌÉ"
+
+#~ msgid "Select all files"
+#~ msgstr "÷ÉÂÒÁÔÉ ×Ó¦ ÆÁÊÌÉ"
+
+#~ msgid "Exit EasyTAG!"
+#~ msgstr "÷ÉÊÔÉ Ú EasyTAG!"
+
+#~ msgid "Reload the directory"
+#~ msgstr "ðÅÒÅÞÉÔÁÔÉ ËÁÔÁÌÏÇ"
+
+#~ msgid "Sort list ascending by filename"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ÆÁÊÌÁ"
+
+#~ msgid "Sort list descending by filename"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ÆÁÊÌÁ"
+
+#~ msgid "Sort list ascending by creation date"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÄÁÔÉ ÓÔ×ÏÒÅÎÎÑ"
+
+#~ msgid "Sort list descending by creation date"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÄÁÔÉ ÓÔ×ÏÒÅÎÎÑ"
+
+#~ msgid "Sort list ascending by track number"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#~ msgid "Sort list descending by track number"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÎÏÍÅÒÁ ÔÒÅËÁ"
+
+#~ msgid "Other sorting (from tag)"
+#~ msgstr "¶ÎÛÅ ÓÏÒÔÕ×ÁÎÎÑ (Ú ÔÅÇÕ)"
+
+#~ msgid "Sort list ascending by title"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÎÁÚ×É ËÏÍÐÏÚÉæ§"
+
+#~ msgid "Sort list descending by title"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÎÁÚ×É ËÏÍÐÏÚÉæ§"
+
+#~ msgid "Sort list ascending by artist"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#~ msgid "Sort list descending by artist"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ¦ÍÅΦ ×ÉËÏÎÁ×ÃÑ"
+
+#~ msgid "Sort list ascending by album"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÎÁÚ×É ÁÌØÂÏÍÕ"
+
+#~ msgid "Sort list descending by album"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÎÁÚ×É ÁÌØÂÏÍÕ"
+
+#~ msgid "Sort list ascending by year"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÒÏËÕ"
+
+#~ msgid "Sort list descending by year"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÒÏËÕ"
+
+#~ msgid "Sort list ascending by genre"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÖÁÎÒÕ"
+
+#~ msgid "Sort list descending by genre"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÖÁÎÒÕ"
+
+#~ msgid "Sort list ascending by comment"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ËÏÍÅÎÔÁÒÑ"
+
+#~ msgid "Sort list descending by comment"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ËÏÍÅÎÔÁÒÑ"
+
+#~ msgid "Other sorting (from properties)"
+#~ msgstr "¶ÎÛÅ ÓÏÒÔÕ×ÁÎÎÑ (ÑË × ÎÁÓÔÒÏÊËÁÈ)"
+
+#~ msgid "Sort list ascending by file type"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÔÉÐÕ ÆÁÊÌÁ"
+
+#~ msgid "Sort list descending by file type"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÔÉÐÕ ÆÁÊÌÁ"
+
+#~ msgid "Sort list ascending by file size"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÚÒÏÓÔÁÎÎÑÍ ÒÏÚͦÒÕ ÆÁÊÌÁ"
+
+#~ msgid "Sort list descending by file size"
+#~ msgstr "óÏÒÔÕ×ÁÔÉ ÚÁ ÓÐÁÄÁÎÎÑÍ ÒÏÚͦÒÕ ÆÁÊÌÁ"
+
+#~ msgid "Warning: Unknown pixmap asked!\n"
+#~ msgstr "õ×ÁÇÁ: ÎÅצÄÏÍÅ ÚÏÂÒÁÖÅÎÎÑ!\n"
+
+#~ msgid "Line style :"
+#~ msgstr "ì¦Î¦§:"
+
+#~ msgid "Solid"
+#~ msgstr "æ̦"
+
+#~ msgid "Dotted"
+#~ msgstr "ÔÏÞËÁÍÉ"
+
+#~ msgid "Tabbed"
+#~ msgstr "ÚÁËÌÁÄËÁÍÉ"
+
+#~ msgid "Select the style of the line in the browser tree."
+#~ msgstr "÷ÉÂÅÒ¦ÔØ ÓÔÉÌØ Ì¦Î¦Ê Õ ×¦ËΦ ÐÅÒÅÇÌÑÄÁÞÁ."
+
+#~ msgid "Expander style :"
+#~ msgstr "ôÏÞËÉ ÒÏÚËÒÉÔÔÑ:"
+
+#~ msgid "Square"
+#~ msgstr "Ë×ÁÄÒÁÔΦ"
+
+#~ msgid "Triangle"
+#~ msgstr "ÔÒÉËÕÔΦ"
+
+#~ msgid "Circular"
+#~ msgstr "ËÒÕÇ̦"
+
+#~ msgid "Select the style of the expander in the browser tree."
+#~ msgstr "÷ÉÂÅÒ¦ÔØ ÓÔÉÌØ ÔÏÞÏË ÒÏÚËÒÉÔÔÑ Õ ×¦ËΦ ÐÅÒÅÇÌÑÄÁÞÁ."
+
+#~ msgid "The Scanner window isn't opened."
+#~ msgstr "÷¦ËÎÏ ÓËÁÎÅÒÁ ΊצÄËÒÉÔÅ."
+
+#~ msgid "Press the Scan button again to run the scanner."
+#~ msgstr "îÁÔÉÓΦÔØ ÚÎÏ× ÎÁ ËÎÏÐËÕ ÄÌÑ ÚÁÐÕÓËÕ ÓËÁÎÅÒÁ."
+
+#~ msgid "Character Set"
+#~ msgstr "ôÁÂÌÉÃÑ ÓÉÍ×Ï̦×"
+
+#~ msgid "Write the track field on two characters ('05', '09', '10', ...)"
+#~ msgstr ""
+#~ "ðÒÏÐÉÓÕ×ÁÔÉ ÐÏÌÅ ÎÏÍÅÒÁ ÔÒÅËÁ Ä×ÏÍÁ ÓÉÍ×ÏÌÁÍÉ ('05', '09', '10', ...)"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
new file mode 100644
index 0000000..dee08cf
--- /dev/null
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..9876ace
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,4717 @@
+# Chinese translations for easytag package
+# easytag 软件包的简体中文翻译.
+# Copyright (C) 2006 THE easytag'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the easytag package.
+# Yang Jinsong <shannleon@gmail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: easytag 1.99.9\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-03 23:10+0200\n"
+"PO-Revision-Date: 2006-05-12 09:36+0800\n"
+"Last-Translator: <shannleon@gmail.com>\n"
+"Language-Team: Chinese <i18n-translation@lists.linux.net.cn>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/about.c:122
+msgid ""
+" EasyTAG is an utility for viewing and editing tags for MP3, MP2, FLAC, "
+"Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its simple and nice "
+"GTK+ interface makes tagging easier under GNU/Linux."
+msgstr ""
+
+#: src/about.c:131 src/about.c:132 src/about.c:133 src/about.c:134
+msgid "(German translation)"
+msgstr "(德语翻译)"
+
+#: src/about.c:135 src/about.c:136
+msgid "(Russian translation)"
+msgstr "(俄语翻译)"
+
+#: src/about.c:137 src/about.c:138
+msgid "(Dutch translation)"
+msgstr "(è·å…°è¯­ç¿»è¯‘)"
+
+#: src/about.c:139 src/about.c:140
+msgid "(Swedish translation)"
+msgstr "(瑞典语翻译)"
+
+#: src/about.c:141 src/about.c:142 src/about.c:143
+msgid "(Hungarian translation)"
+msgstr "(匈牙利语翻译)"
+
+#: src/about.c:144 src/about.c:145
+msgid "(Italian translation)"
+msgstr "(æ„大利语翻译)"
+
+#: src/about.c:146
+msgid "(Japanese translation)"
+msgstr "(日语翻译)"
+
+#: src/about.c:147 src/about.c:148
+msgid "(Ukrainian translation)"
+msgstr ""
+
+#: src/about.c:149 src/about.c:150
+msgid "(Czech translation)"
+msgstr "(æ·å…‹è¯­ç¿»è¯‘)"
+
+#: src/about.c:151 src/about.c:152 src/about.c:153
+msgid "(Spanish translation)"
+msgstr "(西ç­ç‰™è¯­ç¿»è¯‘)"
+
+#: src/about.c:154
+msgid "(Polish translation)"
+msgstr "(波兰语翻译)"
+
+#: src/about.c:155
+msgid "(Romanian translation)"
+msgstr "(罗马尼亚语翻译)"
+
+#: src/about.c:156
+msgid "(Danish translation)"
+msgstr "(丹麦语翻译)"
+
+#: src/about.c:157
+msgid "(Greek translation)"
+msgstr "(希腊语翻译)"
+
+#: src/about.c:158
+msgid "(Brazilian Portuguese translation)"
+msgstr "(巴西葡è„牙语翻译)"
+
+#: src/about.c:159
+msgid "(Bulgarian translation)"
+msgstr "(ä¿åŠ åˆ©äºšè¯­ç¿»è¯‘)"
+
+#: src/about.c:160
+#, fuzzy
+msgid "(Chinese translation)"
+msgstr "(日语翻译)"
+
+#: src/about.c:161
+#, fuzzy
+msgid "(Hebrew translation)"
+msgstr "(希腊语翻译)"
+
+#. Config
+#: src/about.c:222
+msgid "About..."
+msgstr "关于..."
+
+#.
+#. * Tab for common informations
+#.
+#: src/about.c:240 src/bar.c:236
+msgid "About"
+msgstr "关于"
+
+#: src/about.c:271
+#, c-format
+msgid "(compiled: %s)"
+msgstr "(编译于: %s)"
+
+#: src/about.c:276
+#, fuzzy, c-format
+msgid "(using: GTK+ %d.%d.%d)"
+msgstr "(使用: GTK+ %d.%d.%d 与 id3lib %d.%d.%d)"
+
+#: src/about.c:283
+#, fuzzy, c-format
+msgid "(MP3 file support enabled using: libid3tag %s)"
+msgstr "(MP4/AAC 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:287
+#, fuzzy, c-format
+msgid "(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"
+msgstr "(MP4/AAC 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:292
+#, fuzzy
+msgid "(ID3v2.3 tags support disabled)"
+msgstr "(MP4/AAC 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:296
+#, fuzzy, c-format
+msgid "(MP3 file support disabled)"
+msgstr "(MP4/AAC 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:302
+msgid "(Ogg Vorbis file support disabled)"
+msgstr "(Ogg Vorbis 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:307
+#, fuzzy
+msgid "(Speep file support disabled)"
+msgstr "(MP4/AAC 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:312
+msgid "(FLAC file support disabled)"
+msgstr "(FLAC 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:317
+msgid "(MP4/AAC file support disabled)"
+msgstr "(MP4/AAC 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:322
+#, fuzzy
+msgid "(WavPack file support disabled)"
+msgstr "(MP4/AAC 文件支æŒè¢«ç¦æ­¢)"
+
+#: src/about.c:330
+#, c-format
+msgid "Author: %s"
+msgstr "作者: %s"
+
+#: src/about.c:334 src/easytag.c:212
+#, c-format
+msgid "E-mail: %s"
+msgstr "电å­é‚®ä»¶ï¼š %s"
+
+#: src/about.c:340
+msgid "Web Page: "
+msgstr "Web 页é¢ï¼š"
+
+#: src/about.c:352
+msgid "Description:"
+msgstr "æ述:"
+
+#.
+#. * Tab for thanks
+#.
+#: src/about.c:367
+msgid "Thanks"
+msgstr "致谢"
+
+#: src/about.c:387
+msgid "Translations:\n"
+msgstr "翻译:\n"
+
+#: src/about.c:415
+msgid "General:\n"
+msgstr "一般:\n"
+
+#: src/about.c:432
+msgid "Changes"
+msgstr "å˜æ›´"
+
+#: src/about.c:454
+#, fuzzy, c-format
+msgid "Can't open file '%s' (%s)\n"
+msgstr "无法打开文件 “%s†(%s)"
+
+#. g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+#: src/ape_tag.c:75 src/et_core.c:4374 src/flac_header.c:126 src/id3_tag.c:145
+#: src/id3_tag.c:1185 src/id3_tag.c:1255 src/misc.c:1763 src/mp4_header.c:211
+#: src/mp4_header.c:220 src/mp4_tag.c:94 src/mp4_tag.c:105 src/mp4_tag.c:234
+#: src/mp4_tag.c:243 src/mpeg_header.c:209 src/ogg_header.c:82
+#: src/ogg_header.c:186 src/ogg_tag.c:139 src/ogg_tag.c:533
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' (%s)."
+msgstr "打开文件 “%s†(%s) æ—¶å‘生错误。"
+
+#.
+#. * Main Menu Actions
+#.
+#: src/bar.c:146
+msgid "_File"
+msgstr "文件(_F)"
+
+#: src/bar.c:147
+msgid "Sort list by tag"
+msgstr "按标签排åº"
+
+#: src/bar.c:148
+msgid "Sort list by property"
+msgstr "按属性排åº"
+
+#: src/bar.c:149
+msgid "Ascending by filename"
+msgstr "文件åå‡åº"
+
+#: src/bar.c:150
+msgid "Descending by filename"
+msgstr "文件åé™åº"
+
+#: src/bar.c:151
+msgid "Ascending by creation date"
+msgstr "创建日期å‡åº"
+
+#: src/bar.c:152
+msgid "Descending by creation date"
+msgstr "创建日期é™åº"
+
+#: src/bar.c:153
+msgid "Ascending by track number"
+msgstr "轨é“å·ç å‡åº"
+
+#: src/bar.c:154
+msgid "Descending by track number"
+msgstr "轨é“å·ç é™åº"
+
+#: src/bar.c:155
+msgid "Ascending by title"
+msgstr "标题å‡åº"
+
+#: src/bar.c:156
+msgid "Descending by title"
+msgstr "标题é™åº"
+
+#: src/bar.c:157
+msgid "Ascending by artist"
+msgstr "艺术家å‡åº"
+
+#: src/bar.c:158
+msgid "Descending by artist"
+msgstr "艺术家é™åº"
+
+#: src/bar.c:159
+msgid "Ascending by album"
+msgstr "专辑å‡åº"
+
+#: src/bar.c:160
+msgid "Descending by album"
+msgstr "专辑é™åº"
+
+#: src/bar.c:161
+msgid "Ascending by year"
+msgstr "年份å‡åº"
+
+#: src/bar.c:162
+msgid "Descending by year"
+msgstr "年份é™åº"
+
+#: src/bar.c:163
+msgid "Ascending by genre"
+msgstr "æµæ´¾å‡åº"
+
+#: src/bar.c:164
+msgid "Descending by genre"
+msgstr "æµæ´¾é™åº"
+
+#: src/bar.c:165
+msgid "Ascending by comment"
+msgstr "备注å‡åº"
+
+#: src/bar.c:166
+msgid "Descending by comment"
+msgstr "备注é™åº"
+
+#: src/bar.c:167
+msgid "Ascending by composer"
+msgstr "作曲家å‡åº"
+
+#: src/bar.c:168
+msgid "Descending by composer"
+msgstr "作曲家é™åº"
+
+#: src/bar.c:169
+msgid "Ascending by original artist"
+msgstr "原始艺术家å‡åº"
+
+#: src/bar.c:170
+msgid "Descending by original artist"
+msgstr "原始艺术家é™åº"
+
+#: src/bar.c:171
+msgid "Ascending by copyright"
+msgstr "版æƒå‡åº"
+
+#: src/bar.c:172
+msgid "Descending by copyright"
+msgstr "版æƒé™åº"
+
+#: src/bar.c:173
+msgid "Ascending by URL"
+msgstr "URL å‡åº"
+
+#: src/bar.c:174
+msgid "Descending by URL"
+msgstr "URL é™åº"
+
+#: src/bar.c:175
+msgid "Ascending by encoder name"
+msgstr "ç¼–ç å™¨å称å‡åº"
+
+#: src/bar.c:176
+msgid "Descending by encoder name"
+msgstr "ç¼–ç å™¨å称é™åº"
+
+#: src/bar.c:177
+msgid "Ascending by file type"
+msgstr "文件类型å‡åº"
+
+#: src/bar.c:178
+msgid "Descending by file type"
+msgstr "文件类型é™åº"
+
+#: src/bar.c:179
+msgid "Ascending by file size"
+msgstr "文件大å°å‡åº"
+
+#: src/bar.c:180
+msgid "Descending by file size"
+msgstr "文件大å°é™åº"
+
+#: src/bar.c:181
+msgid "Ascending by duration"
+msgstr "播放时长å‡åº"
+
+#: src/bar.c:182
+msgid "Descending by duration"
+msgstr "播放时长é™åº"
+
+#: src/bar.c:183
+msgid "Ascending by bitrate"
+msgstr "比特率å‡åº"
+
+#: src/bar.c:184
+msgid "Descending by bitrate"
+msgstr "比特率é™åº"
+
+#: src/bar.c:185
+msgid "Ascending by samplerate"
+msgstr "采样率å‡åº"
+
+#: src/bar.c:186
+msgid "Descending by samplerate"
+msgstr "采样率é™åº"
+
+#: src/bar.c:188
+msgid "Open File(s) with ..."
+msgstr "使用其他程åºæ‰“å¼€..."
+
+#: src/bar.c:189 src/cddb.c:325
+msgid "Select All Files"
+msgstr "选择所有文件"
+
+#: src/bar.c:190
+msgid "Unselect All Files"
+msgstr "å–消选择所有文件"
+
+#: src/bar.c:191 src/cddb.c:332
+msgid "Invert Files Selection"
+msgstr "åå‘选择文件"
+
+#: src/bar.c:192
+msgid "Delete File(s)"
+msgstr "删除文件"
+
+#: src/bar.c:193
+msgid "_First File"
+msgstr "第一个文件(_F)"
+
+#: src/bar.c:193
+msgid "First File"
+msgstr "第一个文件"
+
+#: src/bar.c:194
+msgid "_Previous File"
+msgstr "上一个文件(_P)"
+
+#: src/bar.c:194
+msgid "Previous File"
+msgstr "上一个文件"
+
+#: src/bar.c:195
+msgid "_Next File"
+msgstr "下一个文件(_N)"
+
+#: src/bar.c:195
+msgid "Next File"
+msgstr "下一个文件"
+
+#: src/bar.c:196
+msgid "_Last File"
+msgstr "最åŽçš„文件(_L)"
+
+#: src/bar.c:196
+msgid "Last File"
+msgstr "最åŽçš„文件"
+
+#. XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+#. and binding Ctrl+C effectively stops the user copying text..
+#: src/bar.c:199
+msgid "S_can File(s)"
+msgstr "扫æ文件(_C)"
+
+#: src/bar.c:199
+msgid "Scan File(s)"
+msgstr "扫æ文件"
+
+#: src/bar.c:200
+msgid "_Remove Tag(s)"
+msgstr "删除标签(_R)"
+
+#: src/bar.c:200
+msgid "Remove Tag(s)"
+msgstr "删除标签"
+
+#: src/bar.c:201
+msgid "_Undo Last File(s) Changes"
+msgstr "撤消最åŽçš„文件å˜æ›´(_U)"
+
+#: src/bar.c:201
+msgid "Undo Last File(s) Changes"
+msgstr "撤消最åŽçš„文件å˜æ›´"
+
+#: src/bar.c:202
+msgid "R_edo Last File(s) Changes"
+msgstr "é‡åšæœ€åŽçš„文件å˜æ›´"
+
+#: src/bar.c:202
+msgid "Redo Last File(s) Changes"
+msgstr "é‡åšæœ€åŽçš„文件å˜æ›´"
+
+#: src/bar.c:203
+msgid "_Save File(s)"
+msgstr "ä¿å­˜æ–‡ä»¶(_S)"
+
+#: src/bar.c:203
+msgid "Save File(s)"
+msgstr "ä¿å­˜æ–‡ä»¶"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "_Force Saving File(s)"
+msgstr "扫æ文件(_C)"
+
+#: src/bar.c:204
+#, fuzzy
+msgid "Force Saving File(s)"
+msgstr "扫æ文件"
+
+#: src/bar.c:205
+msgid "Undo Last Changes"
+msgstr "撤消最åŽçš„å˜æ›´"
+
+#: src/bar.c:206
+msgid "Redo Last Changes"
+msgstr "é‡åšæœ€åŽçš„å˜æ›´"
+
+#: src/bar.c:207
+msgid "_Quit"
+msgstr "退出(_Q)"
+
+#: src/bar.c:207
+msgid "Quit"
+msgstr "退出"
+
+#: src/bar.c:209
+msgid "_Browser"
+msgstr "æµè§ˆ(_B)"
+
+#: src/bar.c:210
+msgid "Go to _Home Directory"
+msgstr "å‰å¾€å®¶ç›®å½•(_H)"
+
+#: src/bar.c:210
+msgid "Go to Home Directory"
+msgstr "å‰å¾€å®¶ç›®å½•"
+
+#: src/bar.c:211
+msgid "Go to _Default Directory"
+msgstr "å‰å¾€é»˜è®¤ç›®å½•(_D)"
+
+#: src/bar.c:211
+msgid "Go to Default Directory"
+msgstr "å‰å¾€é»˜è®¤ç›®å½•"
+
+#: src/bar.c:212
+msgid "Set _Current Path as Default"
+msgstr "将当å‰è·¯å¾„设置为默认(_C)"
+
+#: src/bar.c:212
+msgid "Set Current Path as Default"
+msgstr "将当å‰è·¯å¾„设置为默认"
+
+#: src/bar.c:213
+msgid "Tree View | Artist-Album View"
+msgstr "树视图 | 艺术家-专辑视图"
+
+#: src/bar.c:214
+msgid "Rename Directory ..."
+msgstr "é‡å‘½å目录..."
+
+#: src/bar.c:215
+msgid "Reload Directory"
+msgstr "é‡æ–°è½½å…¥ç›®å½•"
+
+#: src/bar.c:216 src/browser.c:3614
+msgid "Browse Directory with ..."
+msgstr "使用其他程åºæµè§ˆç›®å½•..."
+
+#: src/bar.c:217
+msgid "_Collapse Tree"
+msgstr "折å æ ‘(_C)"
+
+#: src/bar.c:218
+msgid "_Refresh Tree"
+msgstr "刷新树(_R)"
+
+#: src/bar.c:220 src/bar.c:249
+msgid "S_canner"
+msgstr "扫æ(_C)"
+
+#: src/bar.c:221
+msgid "_Fill Tag(s) ..."
+msgstr "填充标签(_F)..."
+
+#: src/bar.c:221
+msgid "Fill Tag(s) ..."
+msgstr "填充标签..."
+
+#: src/bar.c:222
+msgid "_Rename File(s) and Directory ..."
+msgstr "é‡å‘½å文件和目录(_R)..."
+
+#: src/bar.c:222
+msgid "Rename File(s) and Directory ..."
+msgstr "é‡å‘½å文件和目录..."
+
+#: src/bar.c:223
+msgid "_Process Field(s) ..."
+msgstr "处ç†åˆ—(_P)..."
+
+#: src/bar.c:223
+msgid "Process Fields(s) ..."
+msgstr "处ç†åˆ—..."
+
+#: src/bar.c:225
+msgid "_Misc"
+msgstr "其他(_M)"
+
+#: src/bar.c:226
+#, fuzzy
+msgid "Search _File(s) ..."
+msgstr "æœç´¢æ–‡ä»¶(_E)..."
+
+#: src/bar.c:226
+msgid "Search File(s)..."
+msgstr "æœç´¢æ–‡ä»¶..."
+
+#: src/bar.c:227
+msgid "CD Data _Base Search ..."
+msgstr "CD æ•°æ®åº“æœç´¢(_B)..."
+
+#: src/bar.c:227
+msgid "CDDB Search ..."
+msgstr "CDDB æœç´¢..."
+
+#: src/bar.c:228
+msgid "Load Filenames from TXT ..."
+msgstr "从文本文件装载文件å..."
+
+#: src/bar.c:229
+msgid "Write Playlist ..."
+msgstr "ä¿å­˜æ’­æ”¾åˆ—表..."
+
+#: src/bar.c:230 src/bar.c:250 src/bar.c:251 src/bar.c:252
+msgid "Run Audio Player"
+msgstr "è¿è¡ŒéŸ³é¢‘播放器"
+
+#: src/bar.c:232
+msgid "_Settings"
+msgstr "设置(_S)"
+
+#: src/bar.c:233
+msgid "_Preferences ..."
+msgstr "首选项(_P)..."
+
+#: src/bar.c:233
+msgid "Preferences ..."
+msgstr "首选项..."
+
+#: src/bar.c:235
+msgid "_Help"
+msgstr "帮助(_H)"
+
+#: src/bar.c:236
+msgid "_About"
+msgstr "关于(_A)"
+
+#.
+#. * Following items are on toolbar but not on menu
+#.
+#: src/bar.c:242
+msgid "Stop the current action"
+msgstr "åœæ­¢å½“å‰åŠ¨ä½œ"
+
+#.
+#. * Popup menu's Actions
+#.
+#: src/bar.c:248
+msgid "_File Operations"
+msgstr "文件æ“作(_F)"
+
+#: src/bar.c:253
+msgid "CDDB Search File(s)..."
+msgstr "CDDB æœç´¢æ–‡ä»¶..."
+
+#. { AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#. { AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+#: src/bar.c:257
+msgid "Clean Log"
+msgstr ""
+
+#. { AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+#: src/bar.c:264
+msgid "Browse _Sub-directories"
+msgstr "æµè§ˆå­ç›®å½•(_S)"
+
+#. { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+#: src/bar.c:267
+msgid "Show Hidden Directories"
+msgstr "显示éšè—目录"
+
+#: src/bar.c:269
+msgid "Show tree browser / Display by Artist and Album"
+msgstr "显示树æµè§ˆå™¨ / 按艺术家和专辑显示"
+
+#: src/bar.c:306
+#, c-format
+msgid "Could not merge UI, error was: %s\n"
+msgstr ""
+
+#: src/bar.c:406
+msgid "Ready to start..."
+msgstr "准备就绪..."
+
+#: src/browser.c:326
+msgid "New default path for files selected"
+msgstr "新的选择文件默认目录"
+
+#. Some files haven't been saved
+#. Some files aren't saved
+#: src/browser.c:713 src/easytag.c:4524 src/easytag.c:4544 src/easytag.c:4563
+msgid "Confirm..."
+msgstr "确认..."
+
+#: src/browser.c:713
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before changing the directory?"
+msgstr ""
+"有些文件被更改了但å´æ²¡æœ‰ä¿å­˜...\n"
+"您希望在å˜æ›´ç›®å½•å‰ä¿å­˜å®ƒä»¬å—?"
+
+#: src/browser.c:827
+#, c-format
+msgid ""
+"The entered path is invalid!:\n"
+"%s\n"
+"(%s)"
+msgstr ""
+"键入的目录éžæ³•ï¼š\n"
+"%s\n"
+"(%s)"
+
+#. Log_Print(msg);
+#: src/browser.c:829 src/browser.c:3378 src/browser.c:3393 src/browser.c:3453
+#: src/browser.c:3488 src/browser.c:3514 src/browser.c:3958 src/browser.c:3971
+#: src/easytag.c:2581 src/easytag.c:2725 src/easytag.c:2757 src/easytag.c:2772
+#: src/easytag.c:2804 src/easytag.c:2842 src/easytag.c:2889 src/easytag.c:2911
+#: src/easytag.c:2929 src/easytag.c:3132 src/id3_tag.c:541 src/misc.c:1674
+#: src/picture.c:1082 src/prefs.c:1695 src/prefs.c:1797
+msgid "Error..."
+msgstr "错误..."
+
+#: src/browser.c:2016
+#, fuzzy
+msgid "<All albums>"
+msgstr "# 专辑"
+
+#: src/browser.c:2410
+#, c-format
+msgid "Error: Searching for %s, could not find node %s in tree."
+msgstr ""
+
+#: src/browser.c:2777 src/cddb.c:436 src/cddb.c:723 src/misc.c:1914
+msgid "Artist"
+msgstr "艺术家"
+
+#: src/browser.c:2777
+msgid "# Albums"
+msgstr "# 专辑"
+
+#: src/browser.c:2777 src/browser.c:2778
+msgid "# Files"
+msgstr "# 文件"
+
+#: src/browser.c:2778 src/cddb.c:437 src/cddb.c:724 src/misc.c:1915
+msgid "Album"
+msgstr "专辑"
+
+#: src/browser.c:2798
+msgid "Go to parent directory"
+msgstr "å‰å¾€ä¸Šå±‚目录"
+
+#: src/browser.c:2815
+msgid "Enter a directory to browse."
+msgstr "键入目录以æµè§ˆã€‚"
+
+#: src/browser.c:2890
+msgid "Tree"
+msgstr "æ ‘"
+
+#: src/browser.c:2933
+msgid "Artist & Album"
+msgstr "艺术家 & 专辑"
+
+#: src/browser.c:3179
+msgid "Rename the directory"
+msgstr "é‡å‘½å目录"
+
+#: src/browser.c:3195
+#, c-format
+msgid "Rename the directory '%s' to : "
+msgstr "é‡å‘½å目录 “%s†为: "
+
+#: src/browser.c:3214 src/misc.c:1297
+msgid "Use mask :"
+msgstr "使用掩ç ï¼š"
+
+#: src/browser.c:3217
+msgid "If activated, it will use masks to rename directory."
+msgstr "如果激活,则会使用掩ç é‡å‘½å目录。"
+
+#: src/browser.c:3236
+msgid ""
+"Select or type in a mask using codes (see Legend in Scanner Window) to "
+"rename the directory from tag fields."
+msgstr ""
+
+#: src/browser.c:3256 src/misc.c:1317 src/misc.c:1414 src/scan.c:1941
+#: src/scan.c:2008 src/scan.c:2349
+msgid "Invalid Scanner Mask"
+msgstr "éžæ³•çš„扫æ器掩ç "
+
+#. Preview label
+#: src/browser.c:3262
+msgid "Rename directory preview..."
+msgstr "é‡å‘½å目录预览..."
+
+#: src/browser.c:3378
+msgid "You must type a directory name!"
+msgstr "您必须输入一个目录åï¼"
+
+#: src/browser.c:3393
+#, c-format
+msgid "Could not convert '%s' into filename encoding. Please use another name."
+msgstr ""
+
+#. TODO
+#. // The same directory already exists. So we ask if we want to move the files
+#. msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+#. "to move the files?"),new_path_utf8);
+#. msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+#. BUTTON_NO,BUTTON_YES,0);
+#. g_free(msg);
+#. msg_box_hide_check_button(MSG_BOX(msgbox));
+#. button = msg_box_run(MSG_BOX(msgbox));
+#. gtk_widget_destroy(msgbox);
+#.
+#. switch (button)
+#. {
+#. case BUTTON_YES:
+#. // Here we must rename all files with the new location, and remove the directory
+#.
+#. Rename_File ()
+#.
+#. break;
+#. case BUTTON_NO:
+#. break;
+#. }
+#: src/browser.c:3451
+#, c-format
+msgid ""
+"Can't rename because this directory name already exists!\n"
+"(%s)"
+msgstr ""
+
+#: src/browser.c:3486 src/browser.c:3512
+#, c-format
+msgid ""
+"Can't rename directory \n"
+"'%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/browser.c:3555
+msgid "Directory renamed"
+msgstr "目录已é‡å‘½å"
+
+#: src/browser.c:3633 src/browser.c:3793
+msgid "Program to run :"
+msgstr "è¦è¿è¡Œçš„程åºï¼š"
+
+#: src/browser.c:3645
+msgid ""
+"Enter the program to run. It will receive the current directory as parameter."
+msgstr ""
+
+#: src/browser.c:3774
+msgid "Open File with ..."
+msgstr "使用其他程åºæ‰“开文件..."
+
+#: src/browser.c:3805
+msgid ""
+"Enter the program to run. It will receive the current file as parameter."
+msgstr ""
+
+#: src/browser.c:3958
+msgid "You must type a program name!"
+msgstr "您必须输入一个程åºåï¼"
+
+#: src/browser.c:3970 src/misc.c:897
+#, c-format
+msgid "The program '%s' can't be found!"
+msgstr "ç¨‹åº â€œ%s†无法被找到ï¼"
+
+#: src/browser.c:4019 src/misc.c:943
+#, c-format
+msgid "Can't execute %s (error %d)!\n"
+msgstr ""
+
+#: src/browser.c:4038 src/misc.c:982
+msgid "Can't fork another process!\n"
+msgstr ""
+
+#: src/browser.c:4072
+#, c-format
+msgid "Executed command : '%s %s'"
+msgstr ""
+
+#: src/cddb.c:228
+msgid "Artist / Album"
+msgstr "艺术家 / 专辑"
+
+#: src/cddb.c:228
+msgid "Category"
+msgstr "类别"
+
+#: src/cddb.c:229 src/cddb.c:438
+msgid "Track Name"
+msgstr "音轨å"
+
+#: src/cddb.c:229
+msgid "Time"
+msgstr "时间"
+
+#: src/cddb.c:240
+msgid "CD Data Base Search"
+msgstr "CD æ•°æ®åº“æœç´¢"
+
+#.
+#. * 1 - Page for automatic search (generate the CDDBId from files)
+#.
+#: src/cddb.c:272
+msgid "Automatic Search"
+msgstr "自动æœç´¢"
+
+#: src/cddb.c:284
+msgid "Request CD database :"
+msgstr ""
+
+#: src/cddb.c:294
+msgid ""
+"Request automatically the CDDB database using the selected files (the order "
+"is important!) to generate the CddbID."
+msgstr ""
+
+#: src/cddb.c:304 src/cddb.c:414
+msgid "Stop the search ..."
+msgstr "åœæ­¢æœç´¢..."
+
+#. Check box to run the scanner
+#: src/cddb.c:311
+msgid "Use local Cddb"
+msgstr ""
+
+#: src/cddb.c:314 src/cddb.c:768
+msgid ""
+"When activating this option, after loading the fields, the current selected "
+"scanner will be ran (the scanner window must be opened)."
+msgstr ""
+
+#.
+#. * 2 - Page for manual search
+#.
+#: src/cddb.c:359
+msgid "Manual Search"
+msgstr "手动æœç´¢"
+
+#: src/cddb.c:374
+msgid "Words :"
+msgstr "è¯ï¼š"
+
+#: src/cddb.c:386
+msgid "Enter the words to search (separated by a space or '+')"
+msgstr "键入需è¦æœç´¢çš„è¯ (使用空格或“+â€å·åˆ†éš”)"
+
+#.
+#. * Search options
+#.
+#: src/cddb.c:426
+msgid "Search In :"
+msgstr "寻找:"
+
+#: src/cddb.c:434
+msgid "All Fields"
+msgstr "所有列"
+
+#: src/cddb.c:439 src/picture.c:798 src/prefs.c:757
+msgid "Other"
+msgstr "其他"
+
+#: src/cddb.c:461
+msgid "All Categories"
+msgstr "所有类别"
+
+#: src/cddb.c:463
+msgid "Blues"
+msgstr "è“è°ƒ"
+
+#: src/cddb.c:464
+msgid "Classical"
+msgstr "å¤å…¸"
+
+#: src/cddb.c:465
+msgid "Country"
+msgstr "乡æ‘"
+
+#: src/cddb.c:466
+msgid "Folk"
+msgstr "æ°‘æ—"
+
+#: src/cddb.c:467
+msgid "Jazz"
+msgstr "爵士"
+
+#.
+#. * Misc
+#.
+#: src/cddb.c:468 src/prefs.c:236 src/prefs.c:237
+msgid "Misc"
+msgstr "其他"
+
+#: src/cddb.c:469
+msgid "Newage"
+msgstr ""
+
+#: src/cddb.c:470
+msgid "Reggae"
+msgstr "雷鬼"
+
+#: src/cddb.c:471
+msgid "Rock"
+msgstr "摇滚"
+
+#: src/cddb.c:472
+msgid "Soundtrack"
+msgstr "原声"
+
+#: src/cddb.c:509
+msgid "included : funk, soul, rap, pop, industrial, metal, etc."
+msgstr "包括: funk,çµé­‚,绕舌,æµè¡Œï¼Œå·¥ä¸šï¼Œé‡é‡‘属,其他。"
+
+#: src/cddb.c:510
+msgid "movies, shows"
+msgstr "电影,表演"
+
+#: src/cddb.c:511
+msgid "others that do not fit in the above categories"
+msgstr "其他ä¸é™„和上é¢çš„类别的"
+
+#. Button to display/hide the categories
+#: src/cddb.c:514
+msgid " Categories "
+msgstr "类别"
+
+#.
+#. * Results command
+#.
+#: src/cddb.c:522
+msgid "Results :"
+msgstr "结果:"
+
+#: src/cddb.c:529 src/misc.c:1966
+msgid "Search :"
+msgstr "æœç´¢ï¼š"
+
+#: src/cddb.c:542
+msgid "Enter the words to search in the list below"
+msgstr "输入è¯åœ¨ä¸‹é¢çš„列表中æœç´¢"
+
+#: src/cddb.c:554
+msgid "Search Next"
+msgstr "æœç´¢ä¸‹ä¸€ä¸ª"
+
+#: src/cddb.c:560
+msgid "Search Previous"
+msgstr "æœç´¢ä¸Šä¸€ä¸ª"
+
+#: src/cddb.c:571
+#, fuzzy
+msgid "Show only red lines (or show all lines) in the 'Artist / Album' list"
+msgstr "åªæ˜¾ç¤ºçº¢è‰²è¡Œ / 显示所有行"
+
+#: src/cddb.c:577 src/cddb.c:1503
+msgid "Unselect all lines"
+msgstr "å–消选择所有行"
+
+#: src/cddb.c:583
+msgid "Invert lines selection"
+msgstr "åå‘选择行"
+
+#: src/cddb.c:589 src/cddb.c:1499
+msgid "Select all lines"
+msgstr "选择所有行"
+
+#: src/cddb.c:702
+msgid ""
+"Select lines to 'apply' to your files list. All lines will be processed if "
+"no line is selected.\n"
+"You can also reorder lines in this list before using 'apply' button."
+msgstr ""
+
+#.
+#. * Apply results to fields...
+#.
+#: src/cddb.c:712
+msgid "Set Into :"
+msgstr ""
+
+#: src/cddb.c:719
+msgid "All"
+msgstr "所有"
+
+#: src/cddb.c:721 src/misc.c:1912
+msgid "File Name"
+msgstr "文件å"
+
+#: src/cddb.c:722 src/misc.c:1913
+msgid "Title"
+msgstr "标题"
+
+#: src/cddb.c:725 src/misc.c:1917
+msgid "Year"
+msgstr "å¹´"
+
+#: src/cddb.c:726
+msgid "Track #"
+msgstr "音轨 #"
+
+#: src/cddb.c:727
+msgid "# Tracks"
+msgstr "# 音轨"
+
+#: src/cddb.c:728 src/misc.c:1919
+msgid "Genre"
+msgstr "æµæ´¾"
+
+#. Check box to run the scanner
+#: src/cddb.c:765 src/misc.c:2825
+msgid "Run the current scanner for each file"
+msgstr ""
+
+#. Check box to use DLM (also used in the preferences window)
+#: src/cddb.c:772
+msgid "Match lines with the Levenshtein algorithm"
+msgstr ""
+
+#. Doesn't activate it by default because if the new user don't pay attention to it,
+#. it will not understand why the cddb results aren't loaded correctly...
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+#: src/cddb.c:777 src/prefs.c:1318
+msgid ""
+"When activating this option, the Levenshtein algorithm (DLM : Damerau-"
+"Levenshtein Metric) will be used to match the CDDB title against every file "
+"name in the current folder, and to select the best match. This will be used "
+"when selecting the corresponding audio file, or applying cddb results, "
+"instead of using directly the position order."
+msgstr ""
+
+#: src/cddb.c:789
+msgid "Load the selected lines or all lines (if no line selected)."
+msgstr ""
+
+#: src/cddb.c:798 src/misc.c:2209
+msgid "Ready to search..."
+msgstr "æœç´¢å‡†å¤‡å°±ç»ª..."
+
+#: src/cddb.c:1319
+#, c-format
+msgid ""
+"Album: '%s', artist: '%s', length: '%s', year: '%s', genre: '%s', ID: '%s'"
+msgstr "专辑:“%sâ€ï¼Œè‰ºæœ¯å®¶ï¼šâ€œ%sâ€ï¼Œé•¿åº¦ï¼šâ€œ%sâ€ï¼Œå¹´ä»½ï¼šâ€œ%sâ€ï¼Œæµæ´¾ï¼šâ€œ%sâ€ï¼ŒID:“%sâ€"
+
+#: src/cddb.c:1507
+msgid "Invert selection"
+msgstr "åå‘选择"
+
+#: src/cddb.c:1514
+msgid "Sort by Track Number"
+msgstr "按音轨å·æŽ’åº"
+
+#: src/cddb.c:1518
+msgid "Sort by Track Name"
+msgstr "按音轨å排åº"
+
+#: src/cddb.c:1615
+#, c-format
+msgid "Resolving host '%s' ..."
+msgstr "正在解æžä¸»æœº “%sâ€..."
+
+#: src/cddb.c:1623
+#, c-format
+msgid "Can't resolve host '%s' (%s)!"
+msgstr "无法解æžä¸»æœº “%s†(%s)ï¼"
+
+#: src/cddb.c:1638
+#, c-format
+msgid "Can't create a new socket (%s)!"
+msgstr "无法创建新套接字 (%s)ï¼"
+
+#. Open connection to the server
+#: src/cddb.c:1652
+#, c-format
+msgid "Connecting to host '%s', port '%d' ..."
+msgstr "正在连接主机 “%sâ€ï¼Œç«¯å£ “%d†..."
+
+#: src/cddb.c:1659
+#, c-format
+msgid "Can't connect to host '%s' (%s)!"
+msgstr "无法连接主机 “%s†(%s)ï¼"
+
+#: src/cddb.c:1665
+#, c-format
+msgid "Connected to host '%s'"
+msgstr "已连接主机 “%sâ€"
+
+#: src/cddb.c:1748
+#, c-format
+msgid "Receiving data (%s) ..."
+msgstr "接å—æ•°æ® (%s) ..."
+
+#: src/cddb.c:1758
+#, c-format
+msgid "Error when reading cddb response (%s)!"
+msgstr ""
+
+#: src/cddb.c:1765
+#, fuzzy, c-format
+msgid "Can't create file '%s' (%s)"
+msgstr "无法打开文件 “%s†(%s)\n"
+
+#: src/cddb.c:1808 src/misc.c:2980 src/setting.c:1301
+#, c-format
+msgid "Can't open file '%s' (%s)"
+msgstr "无法打开文件 “%s†(%s)"
+
+#. g_print("Request : '%s'\n", cddb_in);
+#. Send the request
+#: src/cddb.c:2238 src/cddb.c:2547 src/cddb.c:3360
+msgid "Sending request ..."
+msgstr "å‘é€è¯·æ±‚ ..."
+
+#: src/cddb.c:2242 src/cddb.c:2551 src/cddb.c:3097 src/cddb.c:3364
+#, c-format
+msgid "Can't send the request (%s)!"
+msgstr "无法å‘é€è¯·æ±‚ (%s)ï¼"
+
+#.
+#. * Read the answer
+#.
+#. Read the answer
+#: src/cddb.c:2264 src/cddb.c:3110 src/cddb.c:3373
+msgid "Receiving data ..."
+msgstr "接å—æ•°æ® ..."
+
+#: src/cddb.c:2271 src/cddb.c:2580 src/cddb.c:3117 src/cddb.c:3380
+msgid "The server returned a wrong answer!"
+msgstr ""
+
+#: src/cddb.c:2285 src/cddb.c:2596 src/cddb.c:3132 src/cddb.c:3395
+#, c-format
+msgid "The server returned a wrong answer! (%s)"
+msgstr ""
+
+#: src/cddb.c:2423
+msgid "Sorry, the web-based search is currently down!"
+msgstr ""
+
+#: src/cddb.c:2425 src/cddb.c:2759
+#, c-format
+msgid "Found %d matching album(s)"
+msgstr "找到 %d 个符åˆçš„专辑"
+
+#: src/cddb.c:2568
+#, fuzzy, c-format
+msgid "Receiving data of page %d (album %d/%d)..."
+msgstr "接å—æ•°æ® (%s) ..."
+
+#: src/cddb.c:2570
+#, fuzzy, c-format
+msgid "Receiving data of page %d ..."
+msgstr "接å—æ•°æ® (%s) ..."
+
+#: src/cddb.c:2733
+msgid "More results to load ..."
+msgstr ""
+
+#: src/cddb.c:2855
+msgid "No file selected!"
+msgstr "没有文件被选择ï¼"
+
+#. The CD redbook standard defines the maximum number of tracks as 99, any
+#. queries with more than 99 tracks will never return a result.
+#: src/cddb.c:2863
+msgid "More than 99 files selected! Can't send request!"
+msgstr ""
+
+#: src/cddb.c:2869
+#, c-format
+msgid "%d file(s) selected!"
+msgstr "%d 个文件被选择"
+
+#: src/cddb.c:2945
+#, fuzzy
+msgid "Local CD search..."
+msgstr "æœç´¢å‡†å¤‡å°±ç»ª..."
+
+#: src/cddb.c:2945
+msgid ""
+"The path for 'Local CD Data Base' wasn't defined!\n"
+"Fill it in the preferences window."
+msgstr ""
+
+#. g_print("Request : '%s'\n", cddb_in);
+#: src/cddb.c:3087
+#, c-format
+msgid "Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."
+msgstr ""
+
+#: src/cddb.c:3231
+#, fuzzy, c-format
+msgid "Found %d matching album(s) for DiscID '%s'"
+msgstr "找到 %d 个符åˆçš„专辑"
+
+#: src/cddb.c:3327
+#, fuzzy, c-format
+msgid "Can't load file: '%s' (%s)!"
+msgstr "无法打开文件 “%s†(%s)"
+
+#. Load the track list of the album
+#: src/cddb.c:3576
+msgid "Loading album track list ..."
+msgstr "正在载入专辑音轨列表 ..."
+
+#: src/cddb.c:3751
+#, c-format
+msgid ""
+"Be careful, you are applying %d lines of the CDDB results to %d lines in the "
+"list of files!\n"
+"\n"
+"Do you want to continue ?"
+msgstr ""
+
+#: src/cddb.c:3754
+msgid "Write Tag from CDDB..."
+msgstr "从 CDDB 写入标签"
+
+#: src/charset.c:49
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: src/charset.c:50
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: src/charset.c:51
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: src/charset.c:52
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: src/charset.c:53
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: src/charset.c:54
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: src/charset.c:55
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: src/charset.c:56
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: src/charset.c:57
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: src/charset.c:58
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: src/charset.c:59
+msgid "Chinese Simplified (GB18030)"
+msgstr "简体中文 (GB18030)"
+
+#: src/charset.c:60
+msgid "Chinese Simplified (GB2312)"
+msgstr "简体中文 (GB2312)"
+
+#: src/charset.c:61
+msgid "Chinese Traditional (Big5)"
+msgstr "ç¹ä½“中文 (Big5)"
+
+#: src/charset.c:62
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "ç¹ä½“中文 (Big5-HKSCS)"
+
+#: src/charset.c:63
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: src/charset.c:64
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: src/charset.c:65
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: src/charset.c:66
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: src/charset.c:67
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: src/charset.c:68
+msgid "Cyrillic/Russian (CP-866)"
+msgstr ""
+
+#: src/charset.c:69
+msgid "Cyrillic/Ukrainian (KOI8-U)"
+msgstr ""
+
+#: src/charset.c:70
+msgid "English (US-ASCII)"
+msgstr ""
+
+#: src/charset.c:71
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: src/charset.c:72
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: src/charset.c:73
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: src/charset.c:74
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: src/charset.c:75
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: src/charset.c:76
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: src/charset.c:77
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: src/charset.c:78
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: src/charset.c:79
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: src/charset.c:80
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: src/charset.c:81
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: src/charset.c:82
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: src/charset.c:83
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: src/charset.c:84
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#. {N_("Unicode (UTF-7)"), "UTF-7" },
+#: src/charset.c:86
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#. {N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+#. {N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+#. {N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+#. {N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+#: src/charset.c:93
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: src/charset.c:94
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: src/charset.c:95
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: src/charset.c:96
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: src/charset.c:97
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: src/charset.c:98
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: src/charset.c:99
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: src/charset.c:542
+#, c-format
+msgid "The filename '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#: src/charset.c:543 src/charset.c:642 src/charset.c:706
+msgid "Invalid UTF-8"
+msgstr "éžæ³• UTF-8"
+
+#: src/charset.c:641
+#, c-format
+msgid ""
+"The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"
+msgstr ""
+
+#: src/charset.c:705
+#, c-format
+msgid "The string '%s' couldn't be converted into UTF-8 (%s).\n"
+msgstr ""
+
+#. Starting messages
+#: src/easytag.c:177
+#, fuzzy, c-format
+msgid "Starting EasyTAG %s (PId: %d) ..."
+msgstr "正在å¯åŠ¨ EasyTAG %s (PId:%d) ...\n"
+
+#: src/easytag.c:179
+#, fuzzy, c-format
+msgid "Currently using libid3tag version %s ..."
+msgstr "当å‰ä½¿ç”¨çš„ id3lib 版本 %d.%d.%d ...\n"
+
+#: src/easytag.c:182
+#, fuzzy, c-format
+msgid "Currently using id3lib version %d.%d.%d ..."
+msgstr "当å‰ä½¿ç”¨çš„ id3lib 版本 %d.%d.%d ...\n"
+
+#: src/easytag.c:189
+#, c-format
+msgid "Variable EASYTAGLANG defined. Setting locale : '%s'"
+msgstr ""
+
+#: src/easytag.c:191
+#, fuzzy, c-format
+msgid "Setting locale : '%s'"
+msgstr "正在é‡å‘½å文件 “%sâ€"
+
+#: src/easytag.c:195
+#, c-format
+msgid "Currently using locale '%s' (and eventually '%s')..."
+msgstr ""
+
+#: src/easytag.c:211
+#, c-format
+msgid "%s %s by %s (compiled %s, %s)\n"
+msgstr ""
+
+#: src/easytag.c:213
+#, c-format
+msgid "Web Page: %s"
+msgstr "网å€ï¼š %s"
+
+#: src/easytag.c:288
+#, c-format
+msgid "Unknown parameter or path '%s'\n"
+msgstr ""
+
+#.
+#. * Browser
+#.
+#: src/easytag.c:402 src/prefs.c:145 src/prefs.c:146
+msgid "Browser"
+msgstr "æµè§ˆ"
+
+#: src/easytag.c:424 src/et_core.c:2605
+msgid "File"
+msgstr "文件"
+
+#: src/easytag.c:450
+msgid "Read Only File"
+msgstr "åªè¯»æ–‡ä»¶"
+
+#: src/easytag.c:453
+msgid "File Link Broken"
+msgstr ""
+
+#. Default values are MPs data
+#. MPEG, Layer versions
+#: src/easytag.c:467 src/easytag.c:4046 src/mpeg_header.c:354
+msgid "MPEG"
+msgstr ""
+
+#: src/easytag.c:469 src/easytag.c:4047
+msgid "?, Layer ?"
+msgstr ""
+
+#: src/easytag.c:474
+msgid "Bitrate:"
+msgstr "比特率:"
+
+#: src/easytag.c:476 src/easytag.c:4048
+msgid "? kb/s"
+msgstr ""
+
+#: src/easytag.c:481
+msgid "Freq:"
+msgstr "频率:"
+
+#: src/easytag.c:483 src/easytag.c:4049
+msgid "? Hz"
+msgstr ""
+
+#. Mode
+#: src/easytag.c:491 src/easytag.c:4050 src/mpeg_header.c:377
+msgid "Mode:"
+msgstr "模å¼ï¼š"
+
+#: src/easytag.c:493 src/easytag.c:507 src/easytag.c:4051 src/easytag.c:4052
+#: src/easytag.c:4053
+msgid "?"
+msgstr ""
+
+#: src/easytag.c:498
+msgid "Size:"
+msgstr "大å°ï¼š"
+
+#: src/easytag.c:500
+msgid "? kb"
+msgstr ""
+
+#: src/easytag.c:505
+msgid "Time:"
+msgstr "时间:"
+
+#. Main Frame
+#: src/easytag.c:551 src/et_core.c:2543
+msgid "Tag"
+msgstr "标签"
+
+#.
+#. * 1 - Page for common tag fields
+#.
+#: src/easytag.c:573
+msgid "Common"
+msgstr "一般"
+
+#. Title
+#: src/easytag.c:585
+msgid "Title:"
+msgstr "标题:"
+
+#: src/easytag.c:598
+msgid "Tag selected files with this title"
+msgstr ""
+
+#. Artist
+#: src/easytag.c:605
+msgid "Artist:"
+msgstr "艺术家:"
+
+#: src/easytag.c:617
+msgid "Tag selected files with this artist"
+msgstr ""
+
+#. Album
+#: src/easytag.c:623
+msgid "Album:"
+msgstr "专辑:"
+
+#: src/easytag.c:636
+msgid "Tag selected files with this album name"
+msgstr ""
+
+#. Disc Number
+#: src/easytag.c:642
+#, fuzzy
+msgid "CD:"
+msgstr "光盘"
+
+#: src/easytag.c:658
+msgid "Tag selected files with this disc number"
+msgstr ""
+
+#. Year
+#: src/easytag.c:664
+msgid "Year:"
+msgstr "年份:"
+
+#: src/easytag.c:681
+msgid "Tag selected files with this year"
+msgstr ""
+
+#: src/easytag.c:693
+msgid "Number selected tracks sequentially. Starts at 01 in each subdirectory."
+msgstr ""
+
+#. To have enought space to display the icon
+#. To have enought space to display the icon
+#: src/easytag.c:702
+msgid "Track #:"
+msgstr "音轨 #:"
+
+#: src/easytag.c:728
+msgid ""
+"Set the number of files, in the same directory of the displayed file, to the "
+"selected tracks."
+msgstr ""
+
+#: src/easytag.c:747
+msgid "Tag selected files with this number of tracks"
+msgstr ""
+
+#. Genre
+#: src/easytag.c:753
+msgid "Genre:"
+msgstr "æµæ´¾ï¼š"
+
+#: src/easytag.c:778
+msgid "Tag selected files with this genre"
+msgstr ""
+
+#. Comment
+#: src/easytag.c:784
+msgid "Comment:"
+msgstr "备注:"
+
+#: src/easytag.c:808
+msgid "Tag selected files with this comment"
+msgstr ""
+
+#. Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+#. g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+#. Composer (name of the composers)
+#: src/easytag.c:817
+msgid "Composer:"
+msgstr "作曲:"
+
+#: src/easytag.c:829
+msgid "Tag selected files with this composer"
+msgstr ""
+
+#. Original Artist / Performer
+#: src/easytag.c:836
+msgid "Orig. Artist:"
+msgstr "原始艺术家:"
+
+#: src/easytag.c:848
+msgid "Tag selected files with this original artist"
+msgstr ""
+
+#. Copyright
+#: src/easytag.c:855
+msgid "Copyright:"
+msgstr "版æƒæ‰€æœ‰ï¼š"
+
+#: src/easytag.c:867
+msgid "Tag selected files with this copyright"
+msgstr ""
+
+#. URL
+#: src/easytag.c:874
+msgid "URL:"
+msgstr ""
+
+#: src/easytag.c:886
+msgid "Tag selected files with this URL"
+msgstr ""
+
+#. Encoded by
+#: src/easytag.c:893
+msgid "Encoded by:"
+msgstr "使用的编ç å™¨ï¼š"
+
+#: src/easytag.c:905
+msgid "Tag selected files with this encoder name"
+msgstr ""
+
+#.
+#. * 2 - Page for extra tag fields
+#.
+#: src/easytag.c:965
+msgid "Pictures"
+msgstr "图片"
+
+#. Picture
+#: src/easytag.c:976
+msgid "Pictures:"
+msgstr "图片"
+
+#: src/easytag.c:996
+msgid "You can use drag and drop to add picture."
+msgstr "您å¯ä»¥ä½¿ç”¨æ‹–放æ“作增加图片。"
+
+#: src/easytag.c:1034
+msgid "Tag selected files with these pictures"
+msgstr ""
+
+#: src/easytag.c:1044
+msgid "Remove selected pictures, else all pictures."
+msgstr ""
+
+#: src/easytag.c:1050
+msgid "Add pictures to the tag (drag and drop is also available)."
+msgstr ""
+
+#: src/easytag.c:1060
+msgid "Save the selected pictures on the hard disk."
+msgstr ""
+
+#: src/easytag.c:1067
+msgid "Set properties of the selected pictures."
+msgstr ""
+
+#: src/easytag.c:1147
+#, c-format
+msgid "Selected files tagged with title '%s'."
+msgstr ""
+
+#: src/easytag.c:1149
+msgid "Removed title from selected files."
+msgstr ""
+
+#: src/easytag.c:1166
+#, c-format
+msgid "Selected files tagged with artist '%s'."
+msgstr ""
+
+#: src/easytag.c:1168
+msgid "Removed artist from selected files."
+msgstr ""
+
+#: src/easytag.c:1185
+#, c-format
+msgid "Selected files tagged with album '%s'."
+msgstr ""
+
+#: src/easytag.c:1187
+msgid "Removed album name from selected files."
+msgstr ""
+
+#: src/easytag.c:1204
+#, c-format
+msgid "Selected files tagged with disc number '%s'."
+msgstr ""
+
+#: src/easytag.c:1206
+msgid "Removed disc number from selected files."
+msgstr ""
+
+#: src/easytag.c:1223
+#, c-format
+msgid "Selected files tagged with year '%s'."
+msgstr ""
+
+#: src/easytag.c:1225
+msgid "Removed year from selected files."
+msgstr ""
+
+#: src/easytag.c:1253 src/easytag.c:1349
+#, c-format
+msgid "Selected files tagged with track like 'xx/%s'."
+msgstr ""
+
+#: src/easytag.c:1256
+msgid "Selected files tagged with track like 'xx'."
+msgstr ""
+
+#: src/easytag.c:1260 src/easytag.c:1352
+msgid "Removed track number from selected files."
+msgstr ""
+
+#. msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+#: src/easytag.c:1318
+msgid "Selected tracks numbered sequentially."
+msgstr ""
+
+#: src/easytag.c:1370
+#, c-format
+msgid "Selected files tagged with genre '%s'."
+msgstr ""
+
+#: src/easytag.c:1372
+msgid "Removed genre from selected files."
+msgstr ""
+
+#: src/easytag.c:1396
+#, c-format
+msgid "Selected files tagged with comment '%s'."
+msgstr ""
+
+#: src/easytag.c:1398
+msgid "Removed comment from selected files."
+msgstr ""
+
+#: src/easytag.c:1415
+#, c-format
+msgid "Selected files tagged with composer '%s'."
+msgstr ""
+
+#: src/easytag.c:1417
+msgid "Removed composer from selected files."
+msgstr ""
+
+#: src/easytag.c:1434
+#, c-format
+msgid "Selected files tagged with original artist '%s'."
+msgstr ""
+
+#: src/easytag.c:1436
+msgid "Removed original artist from selected files."
+msgstr ""
+
+#: src/easytag.c:1453
+#, c-format
+msgid "Selected files tagged with copyright '%s'."
+msgstr ""
+
+#: src/easytag.c:1455
+msgid "Removed copyright from selected files."
+msgstr ""
+
+#: src/easytag.c:1472
+#, c-format
+msgid "Selected files tagged with URL '%s'."
+msgstr ""
+
+#: src/easytag.c:1474
+msgid "Removed URL from selected files."
+msgstr ""
+
+#: src/easytag.c:1491
+#, c-format
+msgid "Selected files tagged with encoder name '%s'."
+msgstr ""
+
+#: src/easytag.c:1493
+msgid "Removed encoder name from selected files."
+msgstr ""
+
+#: src/easytag.c:1528
+msgid "Selected files tagged with pictures."
+msgstr ""
+
+#: src/easytag.c:1530
+msgid "Removed pictures from selected files."
+msgstr ""
+
+#: src/easytag.c:1763
+msgid "Select Mode and Mask, and redo the same action"
+msgstr ""
+
+#: src/easytag.c:1818
+msgid "All tags have been scanned"
+msgstr ""
+
+#: src/easytag.c:1875
+msgid "All tags have been removed"
+msgstr ""
+
+#: src/easytag.c:2166 src/easytag.c:2189
+msgid "All files have been saved..."
+msgstr ""
+
+#: src/easytag.c:2187
+msgid "Files have been partially saved..."
+msgstr ""
+
+#: src/easytag.c:2334
+msgid "Files have been partially deleted..."
+msgstr ""
+
+#: src/easytag.c:2336
+msgid "All files have been deleted..."
+msgstr ""
+
+#: src/easytag.c:2408
+#, c-format
+msgid ""
+"Do you want to write the tag of file\n"
+"'%s' ?"
+msgstr ""
+
+#: src/easytag.c:2412 src/easytag.c:2417
+msgid "Write Tag..."
+msgstr ""
+
+#. Directories and filename changed
+#: src/easytag.c:2474
+msgid "Rename File and Directory..."
+msgstr ""
+
+#: src/easytag.c:2475
+#, c-format
+msgid ""
+"Do you want to rename the file and directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+
+#. Only directories changed
+#: src/easytag.c:2480
+msgid "Rename Directory..."
+msgstr "é‡å‘½å目录..."
+
+#: src/easytag.c:2481
+#, c-format
+msgid ""
+"Do you want to rename the directory \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"您是å¦æƒ³è¦é‡å‘½å目录 \n"
+"“%sâ€\n"
+"为 \n"
+"“%s†?"
+
+#. Only filename changed
+#: src/easytag.c:2487
+msgid "Rename File..."
+msgstr "é‡å‘½å文件..."
+
+#: src/easytag.c:2488
+#, c-format
+msgid ""
+"Do you want to rename the file \n"
+"'%s'\n"
+"to \n"
+"'%s' ?"
+msgstr ""
+"您是å¦æƒ³è¦é‡å‘½å文件 \n"
+"“%sâ€\n"
+"为 \n"
+"“%s†?"
+
+#: src/easytag.c:2557
+#, c-format
+msgid "Writing tag of '%s'"
+msgstr ""
+
+#: src/easytag.c:2563
+msgid "Tag(s) written"
+msgstr "标签已写入"
+
+#. Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+#: src/easytag.c:2572 src/easytag.c:2577
+#, c-format
+msgid ""
+"Can't write tag in file '%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/easytag.c:2703
+#, c-format
+msgid "Renaming file '%s'"
+msgstr "正在é‡å‘½å文件 “%sâ€"
+
+#. Renaming file to the temporary filename has failed
+#. Renaming file from the temporary filename has failed
+#: src/easytag.c:2723 src/easytag.c:2755 src/easytag.c:2927
+#, c-format
+msgid ""
+"Can't rename file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/easytag.c:2731 src/easytag.c:2763 src/easytag.c:2778 src/easytag.c:2935
+msgid "File(s) not renamed..."
+msgstr ""
+
+#: src/easytag.c:2770
+#, c-format
+msgid ""
+"Can't rename file \n"
+"'%s'\n"
+"because the following file already exists:\n"
+"'%s'"
+msgstr ""
+
+#: src/easytag.c:2802
+#, c-format
+msgid ""
+"Can't create target directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#. Renaming file has succeeded
+#: src/easytag.c:2824
+#, c-format
+msgid "Renamed file '%s' to '%s'"
+msgstr ""
+
+#: src/easytag.c:2830
+msgid "File(s) renamed..."
+msgstr ""
+
+#: src/easytag.c:2840 src/easytag.c:2887
+#, c-format
+msgid ""
+"Can't remove old directory\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#. Renaming file has succeeded
+#: src/easytag.c:2871
+#, c-format
+msgid "Moved file '%s' to '%s'"
+msgstr ""
+
+#: src/easytag.c:2877
+msgid "File(s) moved..."
+msgstr ""
+
+#. Moving file has failed
+#: src/easytag.c:2909
+#, c-format
+msgid ""
+"Can't move file '%s'\n"
+" to \n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/easytag.c:2917
+msgid "File(s) not moved..."
+msgstr ""
+
+#: src/easytag.c:2969
+#, c-format
+msgid ""
+"Do you really want to delete definitively the file\n"
+"'%s' ?"
+msgstr ""
+
+#: src/easytag.c:2972 src/easytag.c:2976
+msgid "Delete File..."
+msgstr "删除文件..."
+
+#: src/easytag.c:2998
+#, c-format
+msgid "File '%s' deleted"
+msgstr "文件 “%s†已删除"
+
+#: src/easytag.c:3131
+#, c-format
+msgid ""
+"Can't read directory :\n"
+"'%s'\n"
+"(%s)"
+msgstr ""
+
+#. Read the directory recursively
+#: src/easytag.c:3152
+msgid "Search in progress..."
+msgstr "æœç´¢è¿›è¡Œä¸­..."
+
+#: src/easytag.c:3169 src/et_core.c:2612
+#, c-format
+msgid "File: '%s'"
+msgstr "文件: “%sâ€"
+
+#: src/easytag.c:3219
+#, c-format
+msgid "Found %d file(s) in this directory and subdirectories."
+msgstr ""
+
+#: src/easytag.c:3221
+#, c-format
+msgid "Found %d file(s) in this directory."
+msgstr ""
+
+#. And refresh the number of files in this directory
+#: src/easytag.c:3234 src/et_core.c:2696
+#, c-format
+msgid "%u file(s)"
+msgstr ""
+
+#: src/easytag.c:3240
+msgid "No file found in this directory and subdirectories!"
+msgstr ""
+
+#: src/easytag.c:3242
+msgid "No file found in this directory!"
+msgstr ""
+
+#: src/easytag.c:3328
+msgid "Searching..."
+msgstr "正在æœç´¢..."
+
+#. Button to stop...
+#: src/easytag.c:3348
+msgid " STOP the search... "
+msgstr " åœæ­¢æœç´¢... "
+
+#. Open the last selected scanner
+#: src/easytag.c:4073
+msgid "Select a directory to browse!"
+msgstr "选择目录以æµè§ˆï¼"
+
+#. Menu items
+#: src/easytag.c:4209
+msgid "Tag selected files with this field"
+msgstr ""
+
+#: src/easytag.c:4220
+msgid "Convert '_' and '%20' to spaces"
+msgstr ""
+
+#: src/easytag.c:4227 src/scan.c:2134
+msgid "Convert ' ' to '_'"
+msgstr "è½¬æ¢ â€œ †为 “_â€"
+
+#. Group: capitalize, ...
+#: src/easytag.c:4238 src/scan.c:2178
+msgid "All uppercase"
+msgstr "所有字æ¯å¤§å†™"
+
+#: src/easytag.c:4245 src/scan.c:2179
+msgid "All downcase"
+msgstr "所有字æ¯å°å†™"
+
+#: src/easytag.c:4252 src/scan.c:2180
+msgid "First letter uppercase"
+msgstr "第一个字æ¯å¤§å†™"
+
+#: src/easytag.c:4259 src/scan.c:2181
+msgid "First letter uppercase of each word"
+msgstr "æ¯ä¸ªè¯ç¬¬ä¸€ä¸ªå­—æ¯å¤§å†™"
+
+#. Group: insert/remove spaces
+#: src/easytag.c:4270 src/scan.c:2220
+msgid "Remove spaces"
+msgstr "删除空格"
+
+#: src/easytag.c:4277
+msgid "Insert space before uppercase letter"
+msgstr "大写字æ¯å‰æ’入空格"
+
+#: src/easytag.c:4284
+msgid "Remove duplicate spaces or underscores"
+msgstr "产出多余的空格或下划线"
+
+#. gchar commmand[256];
+#. To send messages to the console...
+#: src/easytag.c:4304 src/easytag.c:4312
+#, c-format
+msgid "EasyTAG %s: Abnormal exit! (PId: %d)."
+msgstr "EasyTAG %s: éžæ­£å¸¸é€€å‡ºï¼(PId: %d)。"
+
+#: src/easytag.c:4305 src/easytag.c:4314
+#, fuzzy, c-format
+msgid "Received signal %s (%d)"
+msgstr "æ”¶åˆ°ä¿¡å· %s (%d) \n"
+
+#: src/easytag.c:4307 src/easytag.c:4316
+msgid ""
+"You have probably found a bug in EasyTAG. Please, send a bug report with a "
+"gdb backtrace ('gdb easytag core' then 'bt' and 'l') and informations to "
+"reproduce it to easytag@gmail.com"
+msgstr ""
+
+#: src/easytag.c:4443
+msgid "Unknown signal"
+msgstr "未知信å·"
+
+#: src/easytag.c:4452
+#, fuzzy
+msgid ""
+"\n"
+"Usage: easytag [option] \n"
+" or: easytag [directory]\n"
+"\n"
+"Option:\n"
+"-------\n"
+"-h, --help Display this text and exit.\n"
+"-v, --version Print basic informations and exit.\n"
+"\n"
+"Directory:\n"
+"----------\n"
+"c:/path_to/files Use an absolute path to load,\n"
+"/path_to/files Use an absolute path to load,\n"
+"path_to/files Use a relative path.\n"
+"\n"
+msgstr ""
+"\n"
+"用法: easytag [选项] \n"
+" 或: easytag [目录]\n"
+"\n"
+"选项:\n"
+"-------\n"
+"-h,--help 显示此信æ¯å¹¶é€€å‡ºã€‚\n"
+"-v,--version 输出基本信æ¯å¹¶é€€å‡ºã€‚\n"
+"\n"
+"目录:\n"
+"-------\n"
+"/path_to/files 使用ç»å¯¹è·¯å¾„载入,\n"
+"path_to/files 使用相对路径。\n"
+"\n"
+
+#: src/easytag.c:4481
+msgid "EasyTAG: Normal exit."
+msgstr "EasyTAG: 正常退出。"
+
+#: src/easytag.c:4524 src/easytag.c:4563
+msgid ""
+"Some files have been modified but not saved...\n"
+"Do you want to save them before exiting the program?"
+msgstr ""
+
+#: src/easytag.c:4544
+msgid " Do you really want to exit the program? "
+msgstr " 您是å¦çœŸè¦é€€å‡ºç¨‹åºï¼Ÿ "
+
+#: src/et_core.c:2509
+msgid "ID3 Tag"
+msgstr "ID3 标签"
+
+#: src/et_core.c:2515
+msgid "Ogg Vorbis Tag"
+msgstr "Ogg Vorbis 标签"
+
+#: src/et_core.c:2521
+msgid "FLAC Vorbis Tag"
+msgstr "FLAC Vorbis 标签"
+
+#: src/et_core.c:2526
+msgid "APE Tag"
+msgstr "APE 标签"
+
+#: src/et_core.c:2531
+msgid "MP4/M4A/AAC Tag"
+msgstr "MP4/M4A/AAC 标签"
+
+#: src/et_core.c:2537
+msgid "Wavpack Tag"
+msgstr ""
+
+#: src/et_core.c:2557
+msgid "MP3 File"
+msgstr "MP3 文件"
+
+#: src/et_core.c:2561
+msgid "MP2 File"
+msgstr "MP2 文件"
+
+#: src/et_core.c:2567
+msgid "Ogg Vorbis File"
+msgstr "Ogg Vorbis 文件"
+
+#: src/et_core.c:2573
+#, fuzzy
+msgid "Speex File"
+msgstr "下一个文件"
+
+#: src/et_core.c:2579
+msgid "FLAC File"
+msgstr "FLAC 文件"
+
+#: src/et_core.c:2584
+msgid "MusePack File"
+msgstr "MusePack 文件"
+
+#: src/et_core.c:2588
+msgid "Monkey's Audio File"
+msgstr "Monkey's Audio 文件"
+
+#: src/et_core.c:2593
+msgid "MP4/AAC File"
+msgstr "MP4/AAC 文件"
+
+#: src/et_core.c:2599
+#, fuzzy
+msgid "Wavpack File"
+msgstr "MusePack 文件"
+
+#: src/et_core.c:2873
+#, fuzzy, c-format
+msgid "Pictures (%d)"
+msgstr "图片"
+
+#. Bitrate
+#: src/et_core.c:2912 src/flac_header.c:299 src/monkeyaudio_header.c:86
+#: src/mp4_header.c:275 src/mpeg_header.c:367 src/musepack_header.c:88
+#: src/ogg_header.c:257 src/wavpack_header.c:78
+#, c-format
+msgid "%d kb/s"
+msgstr ""
+
+#. Samplerate
+#: src/et_core.c:2917 src/flac_header.c:304 src/monkeyaudio_header.c:91
+#: src/mp4_header.c:280 src/mpeg_header.c:372 src/musepack_header.c:93
+#: src/ogg_header.c:262 src/wavpack_header.c:83
+#, c-format
+msgid "%d Hz"
+msgstr ""
+
+#: src/et_core.c:3057
+#, c-format
+msgid ""
+"Could not convert filename : '%s'\n"
+"into system filename encoding\n"
+"(Try setting the environment variable G_FILENAME_ENCODING)."
+msgstr ""
+
+#: src/et_core.c:3060 src/scan.c:661
+msgid "Filename translation"
+msgstr ""
+
+#: src/et_core.c:4525 src/et_core.c:4533
+#, c-format
+msgid "The filename '%s' exceeds %d characters and will be truncated!\n"
+msgstr ""
+
+#. Nothing to display
+#. gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+#. gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+#. Version changed to encoder version
+#. Encoder version
+#: src/flac_header.c:295 src/monkeyaudio_header.c:96 src/musepack_header.c:98
+#: src/ogg_header.c:245 src/wavpack_header.c:72
+msgid "Encoder:"
+msgstr "ç¼–ç å™¨ï¼š"
+
+#. Mode
+#. Mode
+#. mpeg4ip library seems to always return -1
+#. Mode
+#: src/flac_header.c:309 src/mp4_header.c:286 src/ogg_header.c:267
+#: src/wavpack_header.c:88
+msgid "Channels:"
+msgstr "声é“:"
+
+#: src/flac_tag.c:140 src/flac_tag.c:741
+#, fuzzy, c-format
+msgid "ERROR while opening file: '%s' as FLAC (%s)."
+msgstr ""
+"打开文件 “%s†(%s) æ—¶å‘生错误。\n"
+""
+
+#: src/flac_tag.c:983 src/ogg_tag.c:752
+#, c-format
+msgid "ERROR: Failed to write comments to file '%s' (%s)."
+msgstr ""
+
+#: src/flac_tag.c:990 src/ogg_tag.c:759
+#, c-format
+msgid "Written tag of '%s'"
+msgstr ""
+
+#: src/id3_tag.c:484
+#, c-format
+msgid "Removed tag of '%s'"
+msgstr ""
+
+#: src/id3_tag.c:488 src/id3_tag.c:585
+#, c-format
+msgid "Error while removing ID3v1 tag of '%s' (%s)"
+msgstr ""
+
+#: src/id3_tag.c:490 src/id3_tag.c:557
+#, c-format
+msgid "Error while removing ID3v2 tag of '%s' (%s)"
+msgstr ""
+
+#: src/id3_tag.c:509
+#, c-format
+msgid "Error while updating ID3v2 tag of '%s' (%s)"
+msgstr ""
+
+#: src/id3_tag.c:531
+#, c-format
+msgid ""
+"You have tried to save this tag to Unicode but it was detected that your "
+"version of id3lib is bugged.\n"
+"If you reload this file, some characters in the tag may be not displayed "
+"correctly...\n"
+"Please, apply to id3lib the patch src/id3lib/"
+"patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+"available in EasyTAG package sources.\n"
+"Note that this message will appear only one time.\n"
+"\n"
+"File : %s"
+msgstr ""
+
+#: src/id3_tag.c:577
+#, c-format
+msgid "Error while updating ID3v1 tag of '%s' (%s)"
+msgstr ""
+
+#: src/id3_tag.c:591
+#, c-format
+msgid "Updated tag of '%s'"
+msgstr ""
+
+#: src/id3_tag.c:610
+msgid "No error reported"
+msgstr ""
+
+#: src/id3_tag.c:612
+msgid "No available memory"
+msgstr ""
+
+#: src/id3_tag.c:614
+msgid "No data to parse"
+msgstr ""
+
+#: src/id3_tag.c:616
+msgid "Improperly formatted data"
+msgstr ""
+
+#: src/id3_tag.c:618
+msgid "No buffer to write to"
+msgstr ""
+
+#: src/id3_tag.c:620
+msgid "Buffer is too small"
+msgstr ""
+
+#: src/id3_tag.c:622
+msgid "Invalid frame ID"
+msgstr ""
+
+#: src/id3_tag.c:624
+msgid "Requested field not found"
+msgstr ""
+
+#: src/id3_tag.c:626
+msgid "Unknown field type"
+msgstr ""
+
+#: src/id3_tag.c:628
+msgid "Tag is already attached to a file"
+msgstr ""
+
+#: src/id3_tag.c:630
+msgid "Invalid tag version"
+msgstr ""
+
+#: src/id3_tag.c:632
+msgid "No file to parse"
+msgstr ""
+
+#: src/id3_tag.c:634
+msgid "Attempting to write to a read-only file"
+msgstr ""
+
+#: src/id3_tag.c:636
+msgid "Error in compression/uncompression"
+msgstr ""
+
+#: src/id3_tag.c:638
+msgid "Unknown error message!"
+msgstr ""
+
+#: src/id3_tag.c:1212
+#, c-format
+msgid ""
+"As the following corrupted file: '%s'\n"
+"will cause an error in id3lib, it will not be processed by the program."
+msgstr ""
+
+#: src/id3_tag.c:1214
+#, fuzzy
+msgid "Corrupted file..."
+msgstr "ä¿å­˜æ–‡ä»¶..."
+
+#: src/log.c:88
+msgid "Log"
+msgstr ""
+
+#: src/misc.c:211
+msgid " OK "
+msgstr " 确认 "
+
+#: src/misc.c:216
+msgid " Yes "
+msgstr " 是 "
+
+#: src/misc.c:221
+msgid " No "
+msgstr " å¦ "
+
+#: src/misc.c:226
+msgid " Apply "
+msgstr " 应用 "
+
+#: src/misc.c:231
+msgid " Save "
+msgstr " ä¿å­˜ "
+
+#: src/misc.c:236
+msgid " Cancel "
+msgstr " å–消 "
+
+#: src/misc.c:241
+msgid " Close "
+msgstr " 关闭 "
+
+#: src/misc.c:246
+msgid " Write "
+msgstr ""
+
+#: src/misc.c:251
+msgid " Execute "
+msgstr " 执行 "
+
+#: src/misc.c:256
+msgid " Search "
+msgstr " æœç´¢ "
+
+#: src/misc.c:261
+msgid " Browse... "
+msgstr " æµè§ˆ... "
+
+#: src/misc.c:811
+msgid "Select directory..."
+msgstr "选择目录..."
+
+#: src/misc.c:816
+msgid "Select file..."
+msgstr "选择文件..."
+
+#: src/misc.c:886
+#, fuzzy
+msgid "Warning..."
+msgstr "正在æœç´¢..."
+
+#: src/misc.c:886
+msgid "No audio player defined!"
+msgstr ""
+
+#: src/misc.c:988
+#, c-format
+msgid "Can't execute %s (%s)!\n"
+msgstr ""
+
+#. Units Tab of file size (bytes,kilobytes,...)
+#: src/misc.c:1153 src/misc.c:1172
+msgid "B"
+msgstr ""
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "KB"
+msgstr ""
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "MB"
+msgstr ""
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "GB"
+msgstr ""
+
+#: src/misc.c:1153 src/misc.c:1172
+msgid "TB"
+msgstr ""
+
+#: src/misc.c:1267
+msgid "Generate a playlist"
+msgstr "生æˆæ’­æ”¾åˆ—表"
+
+#: src/misc.c:1291
+msgid "M3U Playlist Name"
+msgstr "M3U 播放列表å"
+
+#: src/misc.c:1304
+msgid "Use directory name"
+msgstr "使用目录å"
+
+#: src/misc.c:1328 src/misc.c:1425
+msgid "Edit Masks"
+msgstr ""
+
+#. Playlist options
+#: src/misc.c:1336
+msgid "Playlist Options"
+msgstr "播放列表选项"
+
+#: src/misc.c:1342
+msgid "Include only the selected files"
+msgstr "仅包å«å·²é€‰æ‹©çš„文件"
+
+#: src/misc.c:1345
+msgid ""
+"If activated, only the selected files will be written in the playlist file. "
+"Else, all the files will be written."
+msgstr ""
+
+#: src/misc.c:1352
+msgid "Use full path for files in playlist"
+msgstr ""
+
+#: src/misc.c:1355
+msgid "Use relative path for files in playlist"
+msgstr ""
+
+#. Create playlist in parent directory
+#: src/misc.c:1365
+msgid "Create playlist in the parent directory"
+msgstr ""
+
+#: src/misc.c:1368
+msgid "If activated, the playlist will be created in the parent directory."
+msgstr ""
+
+#. DOS Separator
+#: src/misc.c:1372
+msgid "Use DOS directory separator"
+msgstr "使用 DOS 目录分隔符"
+
+#: src/misc.c:1377
+msgid ""
+"This option replaces the UNIX directory separator '/' into DOS separator "
+"'\\'."
+msgstr ""
+
+#: src/misc.c:1386
+msgid "Playlist Content"
+msgstr "播放列表内容"
+
+#: src/misc.c:1392
+msgid "Write only list of files"
+msgstr ""
+
+#: src/misc.c:1396
+msgid "Write info using filename"
+msgstr ""
+
+#: src/misc.c:1399
+msgid "Write info using :"
+msgstr ""
+
+#: src/misc.c:1658
+#, c-format
+msgid ""
+"Playlist file '%s' already exists!\n"
+"Overwrite?"
+msgstr ""
+
+#: src/misc.c:1659
+msgid "Write Playlist..."
+msgstr "写入播放列表..."
+
+#. Writing fails...
+#: src/misc.c:1673
+#, c-format
+msgid ""
+"Can't write playlist file '%s'!\n"
+"(%s)"
+msgstr ""
+
+#: src/misc.c:1680
+#, c-format
+msgid "Written playlist file '%s'"
+msgstr ""
+
+#: src/misc.c:1916
+msgid "CD"
+msgstr "光盘"
+
+#: src/misc.c:1918
+msgid "Track"
+msgstr "音轨"
+
+#: src/misc.c:1920
+msgid "Comment"
+msgstr "备注"
+
+#: src/misc.c:1921 src/picture.c:820
+msgid "Composer"
+msgstr "作曲"
+
+#: src/misc.c:1922
+msgid "Orig. Artist"
+msgstr "原始艺术家"
+
+#: src/misc.c:1923
+msgid "Copyright"
+msgstr "版æƒæ‰€æœ‰"
+
+#: src/misc.c:1924
+msgid "URL"
+msgstr ""
+
+#: src/misc.c:1925
+msgid "Encoded by"
+msgstr "使用的编ç å™¨"
+
+#: src/misc.c:1936
+msgid "Search a file"
+msgstr "æœç´¢æ–‡ä»¶"
+
+#: src/misc.c:1976
+msgid ""
+"Type the word to search into files. Or type nothing to display all files."
+msgstr ""
+
+#. Where...
+#: src/misc.c:1982
+msgid "In :"
+msgstr "在:"
+
+#: src/misc.c:1985
+msgid "the File Name"
+msgstr "文件å"
+
+#. Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+#: src/misc.c:1987
+msgid "the Tag"
+msgstr "标签"
+
+#. Property of the search
+#: src/misc.c:1997 src/prefs.c:323
+msgid "Case sensitive"
+msgstr "区分大å°å†™"
+
+#: src/misc.c:2430
+#, c-format
+msgid "Found : %d file(s)"
+msgstr ""
+
+#: src/misc.c:2692
+msgid "Load the filenames from a TXT file"
+msgstr "从文本文件中载入文件å"
+
+#: src/misc.c:2722
+msgid "File :"
+msgstr "文件:"
+
+#. Button 'load'
+#. the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+#: src/misc.c:2740
+msgid " Load "
+msgstr " 装载 "
+
+#. Label of file content
+#: src/misc.c:2752
+msgid "Loaded File Content :"
+msgstr ""
+
+#. Label of current list
+#: src/misc.c:2778
+msgid "Files Name List :"
+msgstr ""
+
+#: src/misc.c:2828
+msgid ""
+"When activating this option, after loading the filenames, the current "
+"selected scanner will be ran (the scanner window must be opened)."
+msgstr ""
+
+#: src/misc.c:3212
+msgid "Insert a blank line"
+msgstr "æ’入空白行"
+
+#: src/misc.c:3218
+msgid "Delete this line"
+msgstr "删除此行"
+
+#: src/misc.c:3224
+msgid "Delete all blank lines"
+msgstr "删除所有空白行"
+
+#: src/misc.c:3233
+msgid "Reload"
+msgstr "é‡æ–°è½½å…¥"
+
+#. Mode changed to profile name
+#: src/monkeyaudio_header.c:78 src/musepack_header.c:80
+msgid "Profile:"
+msgstr ""
+
+#: src/mp4_header.c:130
+msgid "Audio"
+msgstr "音频"
+
+#: src/mp4_header.c:131
+msgid "Unknown"
+msgstr "未知"
+
+#: src/mp4_header.c:211 src/mp4_tag.c:105 src/mp4_tag.c:243
+msgid "MP4 format invalid"
+msgstr "MP4 æ ¼å¼éžæ³•"
+
+#: src/mp4_header.c:273 src/mpeg_header.c:365
+#, c-format
+msgid "~%d kb/s"
+msgstr ""
+
+#: src/mpeg_header.c:78
+msgid "Stereo"
+msgstr ""
+
+#: src/mpeg_header.c:79
+msgid "Joint stereo"
+msgstr ""
+
+#: src/mpeg_header.c:80
+msgid "Dual channel"
+msgstr ""
+
+#: src/mpeg_header.c:81
+msgid "Single channel"
+msgstr ""
+
+#. mb->icon = icon;
+#: src/msgbox.c:135
+msgid "Repeat action for the rest of the files"
+msgstr ""
+
+#: src/ogg_header.c:100
+#, c-format
+msgid ""
+"Ogg Vorbis: The specified bitstream does not exist or the file has been "
+"initialized improperly (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:131
+#, c-format
+msgid "Ogg Vorbis: Read from media returned an error (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:134
+#, c-format
+msgid "Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:137
+#, c-format
+msgid "Ogg Vorbis: Vorbis version mismatch (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:140
+#, c-format
+msgid "Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:143
+#, c-format
+msgid ""
+"Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption "
+"(file: '%s')."
+msgstr ""
+
+#: src/ogg_header.c:195 src/ogg_tag.c:181 src/ogg_tag.c:573
+#, c-format
+msgid "ERROR: Failed to open file: '%s' as vorbis (%s)."
+msgstr ""
+
+#: src/ogg_tag.c:163
+#, c-format
+msgid "Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."
+msgstr ""
+
+#: src/picture.c:293
+msgid "Add pictures"
+msgstr "添加图片"
+
+#: src/picture.c:303 src/picture.c:661
+msgid "All Files"
+msgstr "所有文件"
+
+#: src/picture.c:309 src/picture.c:667
+msgid "PNG and JPEG"
+msgstr "PNG 和 JPEG"
+
+#: src/picture.c:445
+#, c-format
+msgid "Picture Properties %d/%d"
+msgstr ""
+
+#: src/picture.c:475
+msgid "Picture Type"
+msgstr "图åƒç±»åž‹"
+
+#. Description
+#: src/picture.c:532
+msgid "Picture Description:"
+msgstr "图åƒæ述:"
+
+#: src/picture.c:649
+#, c-format
+msgid "Save picture %d/%d"
+msgstr ""
+
+#: src/picture.c:732
+#, c-format
+msgid ""
+"The following file already exists :\n"
+"'%s'\n"
+"Do you want to overwrite?"
+msgstr ""
+
+#: src/picture.c:734
+msgid "Save file..."
+msgstr "ä¿å­˜æ–‡ä»¶..."
+
+#: src/picture.c:785
+msgid "JPEG image"
+msgstr "JPEG 图åƒ"
+
+#: src/picture.c:787
+msgid "PNG image"
+msgstr "PNG 图åƒ"
+
+#: src/picture.c:789
+msgid "Unknown image"
+msgstr "未知图åƒ"
+
+#: src/picture.c:800
+msgid "32x32 pixel PNG file icon"
+msgstr ""
+
+#: src/picture.c:802
+msgid "Other file icon"
+msgstr ""
+
+#: src/picture.c:804
+msgid "Cover (front)"
+msgstr ""
+
+#: src/picture.c:806
+msgid "Cover (back)"
+msgstr ""
+
+#: src/picture.c:808
+msgid "Leaflet page"
+msgstr ""
+
+#: src/picture.c:810
+msgid "Media (e.g. label side of CD)"
+msgstr ""
+
+#: src/picture.c:812
+msgid "Lead artist/lead performer/soloist"
+msgstr ""
+
+#: src/picture.c:814
+msgid "Artist/performer"
+msgstr "艺术家 / 表演者"
+
+#: src/picture.c:816
+msgid "Conductor"
+msgstr "指挥"
+
+#: src/picture.c:818
+msgid "Band/Orchestra"
+msgstr "ä¹é˜Ÿ"
+
+#: src/picture.c:822
+msgid "Lyricist/text writer"
+msgstr ""
+
+#: src/picture.c:824
+msgid "Recording location"
+msgstr ""
+
+#: src/picture.c:826
+msgid "During recording"
+msgstr ""
+
+#: src/picture.c:828
+msgid "During performance"
+msgstr ""
+
+#: src/picture.c:830
+msgid "Movie/video screen capture"
+msgstr ""
+
+#: src/picture.c:832
+msgid "A bright coloured fish"
+msgstr ""
+
+#: src/picture.c:834
+msgid "Illustration"
+msgstr ""
+
+#: src/picture.c:836
+msgid "Band/Artist logotype"
+msgstr ""
+
+#: src/picture.c:838
+msgid "Publisher/studio logotype"
+msgstr ""
+
+#: src/picture.c:840
+msgid "Unknown picture type"
+msgstr ""
+
+#: src/picture.c:868 src/picture.c:879
+msgid "pixels"
+msgstr "åƒç´ "
+
+#: src/picture.c:869 src/picture.c:880
+msgid "Type"
+msgstr "类型"
+
+#: src/picture.c:881
+msgid "Description"
+msgstr "æè¿°"
+
+#: src/picture.c:983
+msgid ""
+"Can't display the picture, as not enough data has been read to determine how "
+"to create the image buffer."
+msgstr ""
+
+#: src/picture.c:986
+msgid "Loading Picture File..."
+msgstr "载入图片文件..."
+
+#: src/picture.c:1080
+#, c-format
+msgid ""
+"Can't open file :\n"
+"'%s'!\n"
+"(%s)"
+msgstr ""
+"无法打开文件:\n"
+"“%sâ€ï¼\n"
+"(%s)"
+
+#: src/picture.c:1088
+msgid "Picture file not loaded..."
+msgstr ""
+
+#. Title
+#: src/prefs.c:118
+msgid "Preferences..."
+msgstr "首选项..."
+
+#. File Browser frame
+#: src/prefs.c:156
+msgid "File Browser"
+msgstr "文件æµè§ˆå™¨"
+
+#. Label
+#: src/prefs.c:167
+#, fuzzy
+msgid "Default directory :"
+msgstr "å‰å¾€é»˜è®¤ç›®å½•"
+
+#: src/prefs.c:179
+msgid ""
+"Specify the directory where your files are located. This path will be loaded "
+"when EasyTAG starts without parameter."
+msgstr ""
+
+#. Load directory on startup
+#: src/prefs.c:200
+msgid ""
+"Load on startup the default directory or the directory passed as argument"
+msgstr ""
+
+#: src/prefs.c:203
+msgid ""
+"Automatically search files, when EasyTAG starts, into the default directory. "
+"Note that this path may be overriden by the parameter passed to easytag "
+"(easytag /path_to/mp3_files)."
+msgstr ""
+
+#. Browse subdirectories
+#: src/prefs.c:208
+msgid "Search subdirectories"
+msgstr "æœç´¢å­ç›®å½•"
+
+#: src/prefs.c:211
+msgid "Search subdirectories for files when reading a directory into the tree."
+msgstr ""
+
+#. Open the node to show subdirectories
+#: src/prefs.c:215
+#, fuzzy
+msgid "Show subdirectories when selecting a directory"
+msgstr "选择目录时显示å­ç›®å½•"
+
+#: src/prefs.c:219
+msgid ""
+"This expands the selected node into the file browser to display the sub-"
+"directories."
+msgstr ""
+
+#. Browse hidden directories
+#: src/prefs.c:223
+msgid "Search hidden directories"
+msgstr "æœç´¢éšè—目录"
+
+#: src/prefs.c:228
+msgid "Search hidden directories for files (directories starting by a '.')."
+msgstr ""
+
+#. User interface
+#: src/prefs.c:247
+msgid "User Interface"
+msgstr "用户界é¢"
+
+#. Show header infos
+#: src/prefs.c:254
+msgid "Show header informations of file"
+msgstr "显示文件头信æ¯"
+
+#: src/prefs.c:257
+msgid ""
+"If activated, informations about the file as the bitrate, the time, the "
+"size, will be displayed under the filename entry."
+msgstr ""
+
+#: src/prefs.c:264
+msgid "Display changed files in list using :"
+msgstr ""
+
+#: src/prefs.c:267
+msgid "Red color"
+msgstr ""
+
+#: src/prefs.c:273
+msgid "Bold style"
+msgstr ""
+
+#. Sorting List Options
+#: src/prefs.c:279
+msgid "Sorting List Options"
+msgstr "列表排åºé€‰é¡¹"
+
+#. Sorting method
+#: src/prefs.c:289
+msgid "Sort the file list by :"
+msgstr "排åºæ–‡ä»¶åˆ—表ä¾æ®ï¼š"
+
+#. Two columns
+#. Items of option menu
+#: src/prefs.c:300
+msgid "Ascending file name"
+msgstr "文件åå‡åº"
+
+#: src/prefs.c:301
+msgid "Descending file name"
+msgstr "文件åé™åº"
+
+#: src/prefs.c:302
+msgid "Ascending track number"
+msgstr "音轨å·å‡åº"
+
+#: src/prefs.c:303
+msgid "Descending track number"
+msgstr "音轨å·é™åº"
+
+#: src/prefs.c:304
+msgid "Ascending creation date"
+msgstr "创建时间å‡åº"
+
+#: src/prefs.c:305
+msgid "Descending creation date"
+msgstr "创建日期é™åº"
+
+#: src/prefs.c:306
+msgid "Ascending title"
+msgstr "标题å‡åº"
+
+#: src/prefs.c:307
+msgid "Descending title"
+msgstr "标题é™åº"
+
+#: src/prefs.c:308
+msgid "Ascending artist"
+msgstr "艺术家å‡åº"
+
+#: src/prefs.c:309
+msgid "Descending artist"
+msgstr "艺术家é™åº"
+
+#: src/prefs.c:310
+msgid "Ascending album"
+msgstr "专辑å‡åº"
+
+#: src/prefs.c:311
+msgid "Descending album"
+msgstr "专辑é™åº"
+
+#: src/prefs.c:312
+msgid "Ascending year"
+msgstr "年份å‡åº"
+
+#: src/prefs.c:313
+msgid "Descending year"
+msgstr "年份é™åº"
+
+#: src/prefs.c:314
+msgid "Ascending genre"
+msgstr "æµæ´¾å‡åº"
+
+#: src/prefs.c:315
+msgid "Descending genre"
+msgstr "æµæ´¾é™åº"
+
+#: src/prefs.c:316
+msgid "Ascending comment"
+msgstr "备注å‡åº"
+
+#: src/prefs.c:317
+msgid "Descending comment"
+msgstr "备注é™åº"
+
+#: src/prefs.c:320
+msgid "Select the type of file sorting when loading a directory."
+msgstr ""
+
+#: src/prefs.c:329
+msgid "If activated, the sorting of the list will be dependent on the case."
+msgstr ""
+
+#. Message Dialog Position
+#: src/prefs.c:333
+msgid "Message Dialog Position"
+msgstr "对è¯æ¡†ä½ç½®"
+
+#: src/prefs.c:341
+msgid "No particular position"
+msgstr "无特别ä½ç½®"
+
+#: src/prefs.c:345
+msgid "Let the Window Manager to place the windows."
+msgstr "交给窗å£ç®¡ç†å™¨å†³å®š"
+
+#: src/prefs.c:350
+#, fuzzy
+msgid "Center of the main window"
+msgstr "å±å¹•å±…中"
+
+#: src/prefs.c:354
+#, fuzzy
+msgid "Windows should be placed in the center of the main window."
+msgstr "窗å£å°†è¢«æ”¾ç½®åœ¨å½“å‰å±å¹•ä¸­å¤®"
+
+#: src/prefs.c:359
+msgid "Center of the screen"
+msgstr "å±å¹•å±…中"
+
+#: src/prefs.c:363
+msgid "Windows should be placed in the center of the screen."
+msgstr "窗å£å°†è¢«æ”¾ç½®åœ¨å½“å‰å±å¹•ä¸­å¤®"
+
+#: src/prefs.c:368
+msgid "Mouse position"
+msgstr "é¼ æ ‡ä½ç½®"
+
+#: src/prefs.c:372
+msgid "Windows should be placed at the current mouse position."
+msgstr "窗å£å°†è¢«æ”¾ç½®åœ¨å½“å‰é¼ æ ‡ä½ç½®ã€‚"
+
+#. File Player
+#: src/prefs.c:376
+msgid "File Audio Player"
+msgstr "文件音频播放器"
+
+#: src/prefs.c:388
+msgid "Player to run :"
+msgstr "è¦è¿è¡Œçš„播放器:"
+
+#: src/prefs.c:393
+msgid ""
+"Enter the program used to play the files. Some arguments can be passed for "
+"the program (as 'xmms -p') before to receive files as other arguments."
+msgstr ""
+
+#.
+#. * File Settings
+#.
+#: src/prefs.c:415 src/prefs.c:416
+msgid "File Settings"
+msgstr "文件设置"
+
+#. File (name) Options
+#: src/prefs.c:426
+msgid "File Options"
+msgstr "文件选项"
+
+#: src/prefs.c:432
+msgid "Replace illegal characters in filename (for Windows and CD-Rom)"
+msgstr "替æ¢æ–‡ä»¶å中的éžæ³•å­—符 (为 Windows å’Œ CD-ROM)"
+
+#: src/prefs.c:435
+msgid ""
+"Convert illegal characters for FAT32/16 and ISO9660 + Joliet filesystems "
+"('\\', ':', ';', '*', '?', '\"', '<', '>', '|') of the filename to avoid "
+"problem when renaming the file. This is usefull when renaming the file from "
+"the tag with the scanner."
+msgstr ""
+
+#. Extension case (lower/upper?)
+#: src/prefs.c:444
+msgid "Convert filename extension to :"
+msgstr "将文件åŽç¼€è½¬æ¢ä¸ºï¼š"
+
+#: src/prefs.c:447
+msgid "Lower Case"
+msgstr "å°å†™"
+
+#: src/prefs.c:450
+msgid "For example, the extension will be converted to '.mp3'"
+msgstr ""
+
+#: src/prefs.c:453
+msgid "Upper Case"
+msgstr "大写"
+
+#: src/prefs.c:456
+msgid "For example, the extension will be converted to '.MP3'"
+msgstr ""
+
+#: src/prefs.c:459
+msgid "No Change"
+msgstr "ä¸å˜"
+
+#: src/prefs.c:462
+msgid "The extension will not be converted"
+msgstr ""
+
+#. Preserve modification time
+#: src/prefs.c:465
+msgid "Preserve modification time of the file"
+msgstr ""
+
+#: src/prefs.c:468
+msgid ""
+"Preserve the modification time (in file properties) when saving the file."
+msgstr ""
+
+#. Character Set for File Name
+#: src/prefs.c:473
+msgid "Character Set for File Name"
+msgstr ""
+
+#. Rules for character set
+#: src/prefs.c:489
+msgid ""
+"Rules to apply if some characters can't be converted to the system character "
+"encoding when writing filename:"
+msgstr ""
+
+#: src/prefs.c:497
+msgid "Try an other character encoding"
+msgstr "å°è¯•å…¶ä»–字符编ç "
+
+#: src/prefs.c:501
+msgid ""
+"With this option, it will try the conversion to the encoding associated to "
+"your locale (for example : ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 "
+"for 'ro'). If it fails, it will try the character encoding ISO-8859-1."
+msgstr ""
+
+#: src/prefs.c:508
+msgid ""
+"Force using the system character encoding and activate the transliteration"
+msgstr ""
+
+#: src/prefs.c:511 src/prefs.c:787 src/prefs.c:853
+msgid ""
+"With this option, when a character cannot be represented in the target "
+"character set, it can be approximated through one or several similarly "
+"looking characters."
+msgstr ""
+
+#: src/prefs.c:517
+msgid ""
+"Force using the system character encoding and silently discard some "
+"characters"
+msgstr ""
+
+#: src/prefs.c:520 src/prefs.c:796 src/prefs.c:862
+msgid ""
+"With this option, when a characters cannot be represented in the target "
+"character set, it will be silently discarded."
+msgstr ""
+
+#.
+#. * Tag Settings
+#.
+#: src/prefs.c:529 src/prefs.c:530
+msgid "Tag Settings"
+msgstr "标签设置"
+
+#. Tag Options
+#: src/prefs.c:539
+msgid "Tag Options"
+msgstr "标签选项"
+
+#: src/prefs.c:545
+msgid "Auto completion of date if not complete"
+msgstr "自动补全日期"
+
+#: src/prefs.c:548
+msgid ""
+"Try to complete the year field if you enter only the last numerals of the "
+"date (for instance, if the current year is 2005: 5 => 2005, 4 => 2004, 6 => "
+"1996, 95 => 1995, ...)."
+msgstr ""
+
+#: src/prefs.c:555
+msgid "Write the track field with the following number of digits :"
+msgstr "写入音轨列,使用åŽé¢çš„数字:"
+
+#: src/prefs.c:558
+msgid ""
+"If activated, the track field is written using the number '0' as padding to "
+"obtain a number with 'n' digits (Ex. with two digits : '05', '09', "
+"'10',...). Else it keeps the 'raw' track value."
+msgstr ""
+
+#: src/prefs.c:573
+msgid "Ogg Vorbis Files : Write also the comment to the XMMS format"
+msgstr ""
+
+#: src/prefs.c:576
+msgid ""
+"XMMS doesn't make use of the right way to identify a comment in Ogg Vorbis "
+"files as other apps do. In fact, this field is usually labeled with "
+"'comment=', whereas XMMS uses only `='. Please, uncheck this option if you "
+"don't want other apps to complain about an unknown field. Comments won't be "
+"shown in XMMS, though."
+msgstr ""
+
+#: src/prefs.c:591
+msgid ""
+"Tag field focus when switching files in list with shortcuts Page Up/Page "
+"Down:"
+msgstr ""
+
+#: src/prefs.c:600
+msgid "Keep focus to the same tag field"
+msgstr ""
+
+#: src/prefs.c:606
+msgid "Return focus to the first tag field (ie 'Title' field)"
+msgstr ""
+
+#. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+#.
+#. * ID3 Tag Settings
+#.
+#: src/prefs.c:614 src/prefs.c:615
+#, fuzzy
+msgid "ID3 Tag Settings"
+msgstr "标签设置"
+
+#. Tag Rules frame
+#: src/prefs.c:627
+msgid "ID3 Tag Rules"
+msgstr "ID3 标签规则"
+
+#. Write ID3 tags in FLAC files
+#: src/prefs.c:639
+msgid "Write ID3 tags in FLAC files (in addition to FLAC tag)"
+msgstr ""
+
+#: src/prefs.c:642
+msgid ""
+"If activated, ID3 tags will be also added in the FLAC file (according the "
+"two rules above, plus the FLAC tag). Else ID3 tags will be stripped."
+msgstr ""
+
+#. Strip tag when fields (managed by EasyTAG) are empty
+#: src/prefs.c:647
+msgid "Strip tags if all fields are set to blank"
+msgstr "如果所有列都为空则去除标签"
+
+#: src/prefs.c:650
+msgid ""
+"As ID3v2 tags may contain other data than Title, Artist, Album, Year, Track, "
+"Genre or Comment (as an attached picture, lyrics, ...), this option allows "
+"you to strip the whole tag when these seven standard data fields have been "
+"set to blank."
+msgstr ""
+
+#. Convert old ID3v2 tag version
+#: src/prefs.c:656
+msgid "Automatically convert old ID3v2 tag versions"
+msgstr "自动转æ¢æ—§çš„ ID3v2 标签版本"
+
+#: src/prefs.c:659
+msgid ""
+"If activated, an old ID3v2 tag version (as ID3v2.2) will be updated to the "
+"ID3v2.3 version."
+msgstr "如果激活,则è€çš„ ID3v2 标签版本(ID3v2.2) 将被å‡çº§ä¸º ID3v2.3 版本。"
+
+#. Use CRC32
+#: src/prefs.c:663
+msgid "Use CRC32"
+msgstr ""
+
+#: src/prefs.c:666
+#, fuzzy
+msgid "Set CRC32 in the ID3v2 tags"
+msgstr "写入 ID3v2 标签"
+
+#. Use Compression
+#: src/prefs.c:669
+msgid "Use Compression"
+msgstr ""
+
+#: src/prefs.c:672
+msgid "Set Compression in the ID3v2 tags"
+msgstr ""
+
+#. Character Set for writing ID3 tag
+#: src/prefs.c:675
+#, fuzzy
+msgid "Character Set for writing ID3 tags"
+msgstr "ID3 标签字符集"
+
+#. ID3v2 tags
+#: src/prefs.c:682
+#, fuzzy
+msgid "ID3v2 tags"
+msgstr "写入 ID3v2 标签"
+
+#. Write ID3v2 tag
+#: src/prefs.c:695
+msgid "Write ID3v2 tag"
+msgstr "写入 ID3v2 标签"
+
+#: src/prefs.c:698
+msgid ""
+"If activated, an ID3v2.4 tag will be added or updated at the beginning of "
+"the MP3 files. Else it will be stripped."
+msgstr ""
+
+#. ID3v2 tag version
+#: src/prefs.c:705
+#, fuzzy
+msgid "Version:"
+msgstr "æ述:"
+
+#: src/prefs.c:712
+msgid ""
+"Select the ID3v2 tag version to write:\n"
+" - ID3v2.3 is written using id3lib,\n"
+" - ID3v2.4 is written using libid3tag (recommended)."
+msgstr ""
+
+#. Charset
+#. Id3V1 writing character set
+#: src/prefs.c:726 src/prefs.c:824
+msgid "Charset:"
+msgstr ""
+
+#. Unicode
+#: src/prefs.c:734
+#, fuzzy
+msgid "Unicode "
+msgstr "使用的编ç å™¨"
+
+#: src/prefs.c:742
+#, fuzzy
+msgid "Unicode type to use"
+msgstr "使用的编ç å™¨"
+
+#: src/prefs.c:765
+msgid "Character set used to write the tag data in the file."
+msgstr "将标签写入文件时使用的字符集。"
+
+#. ID3v2 Additional iconv() options
+#. ID3V1 Additional iconv() options
+#: src/prefs.c:775 src/prefs.c:840
+msgid "Additional settings for iconv():"
+msgstr ""
+
+#: src/prefs.c:779 src/prefs.c:845
+#, fuzzy
+msgid "No"
+msgstr " å¦ "
+
+#: src/prefs.c:784 src/prefs.c:850
+msgid "//TRANSLIT"
+msgstr ""
+
+#: src/prefs.c:793 src/prefs.c:859
+msgid "//IGNORE"
+msgstr ""
+
+#. ID3v1 tags
+#: src/prefs.c:801
+#, fuzzy
+msgid "ID3v1 tags"
+msgstr "ID3 标签"
+
+#. Write ID3v1 tag
+#: src/prefs.c:815
+msgid "Write ID3v1.x tag"
+msgstr "写入 ID3v1.x 标签"
+
+#: src/prefs.c:818
+msgid ""
+"If activated, an ID3v1 tag will be added or updated at the end of the MP3 "
+"files. Else it will be stripped."
+msgstr ""
+
+#: src/prefs.c:835
+#, fuzzy
+msgid "Character set used to write ID3v1 tag data in the file."
+msgstr "将标签写入文件时使用的字符集。"
+
+#. Character Set for reading tag
+#: src/prefs.c:867
+#, fuzzy
+msgid "Character Set for reading ID3 tags"
+msgstr "ID3 标签字符集"
+
+#: src/prefs.c:880
+msgid "Non-standart:"
+msgstr ""
+
+#: src/prefs.c:885
+msgid ""
+"This character set will be used when reading the tag data, to convert each "
+"string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 "
+"tag).\n"
+"\n"
+"For example :\n"
+" - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-"
+"8859-1 field. This is not correct! To convert these tags to Unicode: "
+"activate this option and select UTF-8. You must also activate above the "
+"option 'Try to save tags to ISO-8859-1. If it isn't possible then use "
+"UNICODE (recommended)' or 'Always save tags to UNICODE character set'.\n"
+" - If unicode was not used, Russian people can select the character set "
+"'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+"written under Unix systems."
+msgstr ""
+
+#: src/prefs.c:903
+msgid "Character set used to read tag data in the file."
+msgstr "从文件中读å–标签时使用的字符集"
+
+#.
+#. * Scanner
+#.
+#: src/prefs.c:918 src/prefs.c:919
+msgid "Scanner"
+msgstr "扫æ器"
+
+#. Character conversion for the 'Fill Tag' scanner (=> FTS...)
+#: src/prefs.c:931
+msgid "Fill Tag Scanner - Character Conversion"
+msgstr "填充标签扫æ器 - 字符转æ¢"
+
+#: src/prefs.c:937 src/prefs.c:963
+msgid "Convert underscore character '_' and string '%20' to space ' '"
+msgstr "转æ¢ä¸‹åˆ’线 “_†和字符串 “%20†为空格 “ â€"
+
+#: src/prefs.c:939 src/prefs.c:965
+msgid "Convert space ' ' to underscore '_'"
+msgstr "转æ¢ç©ºæ ¼ “ †为下划线 “_â€"
+
+#: src/prefs.c:951 src/prefs.c:953
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for tags."
+msgstr ""
+
+#. Character conversion for the 'Rename File' scanner (=> RFS...)
+#: src/prefs.c:957
+msgid "Rename File Scanner - Character Conversion"
+msgstr "é‡å‘½å文件扫æ器 - 字符转æ¢"
+
+#: src/prefs.c:977 src/prefs.c:979
+msgid ""
+"If activated, this conversion will be used when applying a mask from the "
+"scanner for filenames."
+msgstr ""
+
+#. Character conversion for the 'Process Fields' scanner (=> PFS...)
+#: src/prefs.c:983
+msgid "Process Fields Scanner - Character Conversion"
+msgstr "列扫æ器 - 字符转æ¢"
+
+#. Don't convert some words like to, feat. first letter uppercase.
+#: src/prefs.c:990
+msgid ""
+"Don't uppercase first letter of words for some prepositions and articles."
+msgstr ""
+
+#: src/prefs.c:994
+msgid ""
+"Don't convert first letter of the words like prepositions, articles and "
+"words like feat., when using the scanner 'First letter uppercase of each "
+"word' (for example, you will obtain 'Text in an Entry' instead of 'Text In "
+"An Entry')."
+msgstr ""
+
+#. Properties of the scanner window
+#: src/prefs.c:1000
+msgid "Scanner Window"
+msgstr "扫æ器窗å£"
+
+#: src/prefs.c:1006
+msgid "Open the Scanner Window on startup"
+msgstr "å¯åŠ¨æ—¶æ‰“开扫æ器窗å£"
+
+#: src/prefs.c:1009
+msgid ""
+"Activate this option to open automatically the scanner window when EasyTAG "
+"starts."
+msgstr ""
+
+#: src/prefs.c:1012
+msgid "Scanner window always on top"
+msgstr "扫æ器窗å£ç½®é¡¶"
+
+#: src/prefs.c:1015
+msgid ""
+"If activated, the window which contains the masks will stay always over the "
+"main window."
+msgstr ""
+
+#. Other options
+#: src/prefs.c:1020
+msgid "Fields"
+msgstr ""
+
+#. Overwrite text into tag fields
+#: src/prefs.c:1027
+msgid "Overwrite fields when scanning tag"
+msgstr "扫æ标签时覆盖列"
+
+#: src/prefs.c:1030
+msgid ""
+"If activated, the scanner will replace existing text in fields by the new "
+"one. If deactivated, only blank fields of the tag will be filled."
+msgstr ""
+
+#: src/prefs.c:1041
+msgid "Set this text as default comment :"
+msgstr "将此文本作为默认备注:"
+
+#: src/prefs.c:1044
+msgid ""
+"Activate this option if you want to put the following string into the "
+"comment field when using the 'Fill Tag' scanner."
+msgstr ""
+
+#. CRC32 comment
+#: src/prefs.c:1061
+msgid "Use CRC32 as the default comment (for files with ID3 tags only)."
+msgstr "使用 CRC32 作为默认备注 (åªé™ç”¨ ID3 标签的文件)。"
+
+#: src/prefs.c:1065
+msgid ""
+"Calculates the CRC-32 value of the file and writes it into the comment field "
+"when using the 'Fill Tag' scanner."
+msgstr ""
+
+#.
+#. * CDDB
+#.
+#: src/prefs.c:1076 src/prefs.c:1077
+msgid "CD Data Base"
+msgstr "CD æ•°æ®åº“"
+
+#. CDDB Server Settings (Automatic Search)
+#: src/prefs.c:1086
+#, fuzzy
+msgid "Server Settings for Automatic Search"
+msgstr "自动æœç´¢"
+
+#: src/prefs.c:1095 src/prefs.c:1134 src/prefs.c:1168
+msgid "Name :"
+msgstr "å称:"
+
+#: src/prefs.c:1114 src/prefs.c:1142 src/prefs.c:1177 src/prefs.c:1265
+msgid "Port :"
+msgstr "端å£ï¼š"
+
+#: src/prefs.c:1124 src/prefs.c:1152 src/prefs.c:1187
+msgid "CGI Path :"
+msgstr "CGI 路径:"
+
+#. CDDB Server Settings (Manual Search)
+#: src/prefs.c:1160
+#, fuzzy
+msgid "Server Settings for Manual Search"
+msgstr "æœåŠ¡å™¨è®¾ç½®"
+
+#. Local access for CDDB (Automatic Search)
+#: src/prefs.c:1195
+#, fuzzy
+msgid "Local CD Data Base"
+msgstr "CD æ•°æ®åº“"
+
+#: src/prefs.c:1203
+#, fuzzy
+msgid "Path :"
+msgstr "CGI 路径:"
+
+#: src/prefs.c:1214
+msgid ""
+"Specify the directory where are located the local cd data base. The local cd "
+"data base contains the eleven following directories 'blues', 'classical', "
+"'country', 'data', 'folk', 'jazz', 'newage', 'reggae', 'rock', 'soundtrack' "
+"and 'misc'."
+msgstr ""
+
+#. CDDB Proxy Settings
+#: src/prefs.c:1240
+msgid "Proxy Settings"
+msgstr "代ç†æœåŠ¡å™¨è®¾ç½®"
+
+#: src/prefs.c:1249
+msgid "Use a proxy"
+msgstr "使用代ç†æœåŠ¡å™¨"
+
+#: src/prefs.c:1252
+msgid "Set active the settings of the proxy server."
+msgstr ""
+
+#: src/prefs.c:1257
+msgid "Host Name :"
+msgstr "主机å:"
+
+#: src/prefs.c:1264
+msgid "Name of the proxy server."
+msgstr "代ç†æœåŠ¡å™¨çš„å称。"
+
+#: src/prefs.c:1272
+msgid "Port of the proxy server."
+msgstr "代ç†æœåŠ¡å™¨çš„端å£ã€‚"
+
+#: src/prefs.c:1277
+msgid "User Name :"
+msgstr "用户å:"
+
+#: src/prefs.c:1284
+msgid "Name of user for the the proxy server."
+msgstr "代ç†æœåŠ¡å™¨çš„用户å。"
+
+#: src/prefs.c:1285
+msgid "User Password :"
+msgstr "用户密ç ï¼š"
+
+#: src/prefs.c:1293
+msgid "Password of user for the the proxy server."
+msgstr "代ç†æœåŠ¡å™¨ç”¨æˆ·çš„密ç "
+
+#. Track Name list (CDDB results)
+#: src/prefs.c:1298
+msgid "Track Name List"
+msgstr "音轨å列表"
+
+#: src/prefs.c:1305
+msgid ""
+"Select corresponding audio file (according position or DLM if activated "
+"below)"
+msgstr ""
+
+#: src/prefs.c:1309
+msgid ""
+"If activated, when selecting a line in the list of tracks name, the "
+"corresponding audio file in the main list will be also selected."
+msgstr ""
+
+#. Check box to use DLM (also used in the cddb window)
+#: src/prefs.c:1314
+msgid ""
+"Use the Levenshtein algorithm (DLM) to match lines (using title) with audio "
+"files (using filename)"
+msgstr ""
+
+#.
+#. * Confirmation
+#.
+#: src/prefs.c:1329 src/prefs.c:1330
+msgid "Confirmation"
+msgstr "确认"
+
+#: src/prefs.c:1338
+msgid "Confirm exit from program"
+msgstr "确定从程åºä¸­é€€å‡º"
+
+#: src/prefs.c:1341
+msgid ""
+"If activated, opens a dialog box to ask confirmation before exiting the "
+"program."
+msgstr ""
+
+#: src/prefs.c:1344
+msgid "Confirm writing of file tag"
+msgstr "为文件写入标签时确认"
+
+#: src/prefs.c:1348
+msgid "Confirm renaming of file"
+msgstr "é‡å‘½å文件时确认"
+
+#: src/prefs.c:1352
+msgid "Confirm deleting of file"
+msgstr "删除文件时确认"
+
+#: src/prefs.c:1356
+msgid "Confirm writing of playlist"
+msgstr "写入播放列表时确认"
+
+#: src/prefs.c:1378
+msgid "Apply changes (but don't save) and close this window"
+msgstr "应用å˜æ›´(但ä¸ä¿å­˜)并关闭此窗å£"
+
+#: src/prefs.c:1387
+msgid "Close this window without saving"
+msgstr "ä¸ä¿å­˜å…³é—­æ­¤çª—å£"
+
+#: src/prefs.c:1395
+msgid "Save changes and close this window"
+msgstr "ä¿å­˜å¹¶å…³é—­æ­¤çª—å£"
+
+#. For translators : be aware to NOT translate '%.*d' in this string
+#: src/prefs.c:1428
+#, c-format
+msgid "(Example : %.*d_-_Track_name_1.mp3)"
+msgstr ""
+
+#: src/prefs.c:1574
+msgid "Changes applied"
+msgstr "å˜æ›´å·²åº”用"
+
+#: src/prefs.c:1593 src/setting.c:851
+msgid "Configuration saved"
+msgstr "é…置已ä¿å­˜"
+
+#: src/prefs.c:1600
+msgid "Configuration unchanged"
+msgstr "é…置未改å˜"
+
+#: src/prefs.c:1692
+#, c-format
+msgid ""
+" The selected path for 'Default path to files' isn't valid!\n"
+"'%s'\n"
+"(%s) "
+msgstr ""
+
+#: src/prefs.c:1694
+msgid "Not a directory"
+msgstr "ä¸æ˜¯ä¸€ä¸ªç›®å½•"
+
+#: src/prefs.c:1795
+#, fuzzy, c-format
+msgid "The audio file player '%s' can't be found!"
+msgstr "ç¨‹åº â€œ%s†无法被找到ï¼"
+
+#: src/scan.c:174
+msgid "Fill Tag"
+msgstr "填充标签"
+
+#: src/scan.c:175
+msgid "Rename File and Directory"
+msgstr "é‡å‘½å文件和目录"
+
+#: src/scan.c:176
+msgid "Process Fields"
+msgstr "处ç†åˆ—"
+
+#: src/scan.c:350
+msgid "Tag successfully scanned..."
+msgstr "标签æˆåŠŸè¢«æ‰«æ"
+
+#: src/scan.c:352
+#, fuzzy, c-format
+msgid "Tag successfully scanned...(%s)"
+msgstr "标签æˆåŠŸè¢«æ‰«æ...(%s)"
+
+#: src/scan.c:392
+#, c-format
+msgid ""
+"Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"
+msgstr ""
+
+#: src/scan.c:474 src/scan.c:503
+#, c-format
+msgid "Scan Error: can't find separator '%s' within '%s'"
+msgstr "扫æ错误:无法找到分隔符 “%s†在 “%s†中"
+
+#: src/scan.c:660
+#, c-format
+msgid "Could not convert filename '%s' into system filename encoding."
+msgstr ""
+
+#: src/scan.c:683
+msgid "New file name successfully scanned..."
+msgstr "新文件åæˆåŠŸè¢«æ‰«æ..."
+
+#: src/scan.c:686
+#, c-format
+msgid "New file name successfully scanned...(%s)"
+msgstr "新文件åæˆåŠŸè¢«æ‰«æ...(%s)"
+
+#. The init position is define below, cause the scanner window must be showed before
+#. * to be able to move it.
+#. Title
+#: src/scan.c:1801
+msgid "Tag and File Name scan"
+msgstr "标签与文件å扫æ"
+
+#. Option Menu
+#: src/scan.c:1823
+#, fuzzy
+msgid "Scanner:"
+msgstr "扫æ器:"
+
+#. Selection of the item made at the end of the function
+#: src/scan.c:1842
+msgid "Select the type of scanner to use"
+msgstr "选择扫ææ–¹å¼"
+
+#: src/scan.c:1851
+msgid "Open scanner window / Scan selected files"
+msgstr "打开扫æå™¨çª—å£ / 扫æ选择的文件"
+
+#: src/scan.c:1864
+msgid "Scanner Options"
+msgstr "扫æ器选项"
+
+#: src/scan.c:1873
+msgid "Show / Hide Masks Editor"
+msgstr "显示 / éšè—掩ç ç¼–辑器"
+
+#: src/scan.c:1883
+msgid "Show / Hide Legend"
+msgstr "显示 / éšè—图示"
+
+#: src/scan.c:1893
+msgid "Close this window"
+msgstr "关闭此窗å£"
+
+#: src/scan.c:1921
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse file name and "
+"path. Used to fill in tag fields."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:1947
+msgid "Fill tag preview..."
+msgstr "填充标签预览..."
+
+#: src/scan.c:1974
+msgid "Prefix mask with current path"
+msgstr ""
+
+#: src/scan.c:1987
+msgid ""
+"Select or type in a mask using codes (see Legend) to parse tag fields. Used "
+"to rename the file.\n"
+"Use / to make directories. If the first character is /, it's a absolute "
+"path, otherwise is relative to the old path."
+msgstr ""
+
+#. Preview label
+#: src/scan.c:2014
+msgid "Rename file preview..."
+msgstr "é‡å‘½å文件预览..."
+
+#: src/scan.c:2034
+msgid "Select fields:"
+msgstr "选择列:"
+
+#: src/scan.c:2037
+msgid ""
+"The buttons on the right represent the fields which can be processed. Select "
+"those who interest you."
+msgstr ""
+
+#. Advice for Translators : set the first letter of filename translated
+#: src/scan.c:2040
+msgid "F"
+msgstr ""
+
+#: src/scan.c:2041
+msgid "Process file name field"
+msgstr "处ç†æ–‡ä»¶å列"
+
+#. Advice for Translators : set the first letter of title translated
+#: src/scan.c:2043
+msgid "T"
+msgstr "T"
+
+#: src/scan.c:2044
+msgid "Process title field"
+msgstr "处ç†æ ‡é¢˜åˆ—"
+
+#. Advice for Translators : set the first letter of artist translated
+#: src/scan.c:2046
+msgid "Ar"
+msgstr "Ar"
+
+#: src/scan.c:2047
+msgid "Process file artist field"
+msgstr "处ç†è‰ºæœ¯å®¶åˆ—"
+
+#. Advice for Translators : set the first letter of album translated
+#: src/scan.c:2049
+msgid "Al"
+msgstr "Al"
+
+#: src/scan.c:2050
+msgid "Process album field"
+msgstr "处ç†ä¸“辑列"
+
+#. Advice for Translators : set the first letter of genre translated
+#: src/scan.c:2052
+msgid "G"
+msgstr "G"
+
+#: src/scan.c:2053
+msgid "Process genre field"
+msgstr "处ç†æµæ´¾åˆ—"
+
+#. Advice for Translators : set the first letter of comment translated
+#: src/scan.c:2055
+msgid "Cm"
+msgstr "Cm"
+
+#: src/scan.c:2056
+msgid "Process comment field"
+msgstr "处ç†å¤‡æ³¨åˆ—"
+
+#. Advice for Translators : set the first letter of composer translated
+#: src/scan.c:2058
+msgid "Cp"
+msgstr "Cp"
+
+#: src/scan.c:2059
+msgid "Process composer field"
+msgstr "处ç†ä½œæ›²å®¶åˆ—"
+
+#. Advice for Translators : set the first letter of orig artist translated
+#: src/scan.c:2061
+msgid "O"
+msgstr "O"
+
+#: src/scan.c:2062
+msgid "Process original artist field"
+msgstr "处ç†åŽŸå§‹è‰ºæœ¯å®¶åˆ—"
+
+#. Advice for Translators : set the first letter of copyright translated
+#: src/scan.c:2064
+msgid "Cr"
+msgstr "Cr"
+
+#: src/scan.c:2065
+msgid "Process copyright field"
+msgstr "处ç†ç‰ˆæƒåˆ—"
+
+#. Advice for Translators : set the first letter of URL translated
+#: src/scan.c:2067
+msgid "U"
+msgstr "U"
+
+#: src/scan.c:2068
+msgid "Process URL field"
+msgstr "å¤„ç† URL 列"
+
+#. Advice for Translators : set the first letter of encoder name translated
+#: src/scan.c:2070
+msgid "E"
+msgstr "E"
+
+#: src/scan.c:2071
+msgid "Process encoder name field"
+msgstr "处ç†å称列"
+
+#: src/scan.c:2117
+msgid "Invert Selection"
+msgstr "åå‘选择"
+
+#: src/scan.c:2126
+msgid "Select/Unselect All."
+msgstr "全选 / å…¨ä¸é€‰"
+
+#. Group: character conversion
+#: src/scan.c:2133
+msgid "Convert '_' and '%20' to ' '"
+msgstr "è½¬æ¢ â€œ_†和 “%20†为 “ â€"
+
+#: src/scan.c:2138
+#, fuzzy
+msgid "Convert:"
+msgstr "转æ¢ï¼š"
+
+#: src/scan.c:2140
+#, fuzzy
+msgid "to: "
+msgstr "为:"
+
+#: src/scan.c:2166
+msgid ""
+"The underscore character or the string '%20' are replaced by one space. "
+"Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2169
+msgid ""
+"The space character is replaced by one underscore character. Example, "
+"before: 'Text In An Entry', after: 'Text_In_An_Entry'."
+msgstr ""
+
+#: src/scan.c:2171
+msgid "Replace a character by an other one."
+msgstr ""
+
+#: src/scan.c:2203
+msgid ""
+"Convert all words in all fields to upper case. Example, before: 'Text IN AN "
+"entry', after: 'TEXT IN AN ENTRY'."
+msgstr ""
+
+#: src/scan.c:2206
+msgid ""
+"Convert all words in all fields to lower case. Example, before: 'TEXT IN an "
+"entry', after: 'text in an entry'."
+msgstr ""
+
+#: src/scan.c:2209
+msgid ""
+"Convert the initial of the first word in all fields to upper case. Example, "
+"before: 'text IN An ENTRY', after: 'Text in an entry'."
+msgstr ""
+
+#: src/scan.c:2212
+msgid ""
+"Convert the initial of each word in all fields to upper case. Example, "
+"before: 'Text in an ENTRY', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2221
+msgid "Insert a space before an uppercase letter"
+msgstr ""
+
+#: src/scan.c:2222
+msgid "Remove duplicates of space or underscore"
+msgstr ""
+
+#: src/scan.c:2240
+msgid ""
+"All spaces between words are removed. Example, before: 'Text In An Entry', "
+"after: 'TextInAnEntry'."
+msgstr ""
+
+#: src/scan.c:2243
+msgid ""
+"A space is inserted before each upper case letter. Example, before: "
+"'TextInAnEntry', after: 'Text In An Entry'."
+msgstr ""
+
+#: src/scan.c:2246
+msgid ""
+"Duplicated spaces or underscores are removed. Example, before: "
+"'Text__In__An Entry', after: 'Text_In_An Entry'."
+msgstr ""
+
+#.
+#. * Frame to display codes legend
+#.
+#: src/scan.c:2252
+msgid "Legend"
+msgstr "图示"
+
+#: src/scan.c:2258
+#, c-format
+msgid "%a : artist"
+msgstr "%a :艺术家"
+
+#: src/scan.c:2261
+msgid "%b : album"
+msgstr "%b :专辑"
+
+#: src/scan.c:2264
+#, c-format
+msgid "%c : comment"
+msgstr "%c :备注"
+
+#: src/scan.c:2267
+#, c-format
+msgid "%p : composer"
+msgstr "%p :作曲"
+
+#: src/scan.c:2270
+msgid "%r : copyright"
+msgstr "%r :版æƒ"
+
+#: src/scan.c:2273
+#, c-format
+msgid "%d : disc number"
+msgstr ""
+
+#: src/scan.c:2276
+#, c-format
+msgid "%e : encoded by"
+msgstr "%e :编ç å™¨"
+
+#: src/scan.c:2279
+#, c-format
+msgid "%g : genre"
+msgstr "%g :æµæ´¾"
+
+#: src/scan.c:2282
+#, c-format
+msgid "%i : ignored"
+msgstr "%i :忽略"
+
+#: src/scan.c:2285
+msgid "%l : number of tracks"
+msgstr "%l :音轨å·"
+
+#: src/scan.c:2288
+#, c-format
+msgid "%o : orig. artist"
+msgstr "%o :原始艺术家"
+
+#: src/scan.c:2291
+#, c-format
+msgid "%n : track"
+msgstr "%n :音轨"
+
+#: src/scan.c:2294
+msgid "%t : title"
+msgstr "%t :标题"
+
+#: src/scan.c:2297
+#, c-format
+msgid "%u : URL"
+msgstr "%u : URL"
+
+#: src/scan.c:2300
+msgid "%y : year"
+msgstr "%y :年份"
+
+#.
+#. * Masks Editor
+#.
+#: src/scan.c:2307
+msgid "Mask Editor"
+msgstr "掩ç ç¼–辑器"
+
+#: src/scan.c:2364
+msgid "Create New Mask"
+msgstr "创建新掩ç "
+
+#: src/scan.c:2374
+msgid "Move Up this Mask"
+msgstr "上移此掩ç "
+
+#: src/scan.c:2384
+msgid "Move Down this Mask"
+msgstr "下移此掩ç "
+
+#: src/scan.c:2394
+msgid "Duplicate Mask"
+msgstr "å¤åˆ¶æŽ©ç "
+
+#: src/scan.c:2404
+msgid "Add Default Masks"
+msgstr "添加默认掩ç "
+
+#: src/scan.c:2414
+msgid "Remove Mask"
+msgstr "删除掩ç "
+
+#: src/scan.c:2424
+msgid "Save Masks"
+msgstr "ä¿å­˜æŽ©ç "
+
+#: src/scan.c:2994
+msgid "New_mask"
+msgstr "新掩ç (_M)"
+
+#: src/scan.c:3032
+msgid "Copy: No row selected!"
+msgstr ""
+
+#: src/scan.c:3131
+msgid "Remove: No row selected!"
+msgstr ""
+
+#: src/scan.c:3178
+msgid "Move Up: No row selected!"
+msgstr ""
+
+#: src/scan.c:3229
+msgid "Move Down: No row selected!"
+msgstr ""
+
+#: src/setting.c:872
+#, fuzzy, c-format
+msgid "ERROR: Can't write config file: %s (%s)"
+msgstr ""
+"错误:无法写入é…置文件:%s (%s)\n"
+""
+
+#: src/setting.c:1015 src/setting.c:1052
+#, c-format
+msgid "Can't open configuration file '%s' (%s)"
+msgstr ""
+
+#: src/setting.c:1016
+msgid "Loading default configuration..."
+msgstr ""
+
+#: src/setting.c:1116 src/setting.c:1123 src/setting.c:1130 src/setting.c:1137
+#: src/setting.c:1144 src/setting.c:1151 src/setting.c:1158 src/setting.c:1165
+#: src/setting.c:1172 src/setting.c:1179 src/setting.c:1186 src/setting.c:1193
+#: src/setting.c:1200 src/setting.c:1207 src/setting.c:1214 src/setting.c:1221
+#: src/setting.c:1228
+#, c-format
+msgid "Can't create or open file '%s' (%s)"
+msgstr ""
+
+#: src/setting.c:1261
+#, fuzzy, c-format
+msgid "ERROR: Can't write list to file: %s (%s)"
+msgstr ""
+"错误:无法写入é…置文件:%s (%s)\n"
+""
+
+#. Fall back to defaults
+#: src/setting.c:1341
+msgid "Loading default 'Fill Tag' masks..."
+msgstr ""
+
+#. Fall back to defaults
+#: src/setting.c:1369
+msgid "Loading default 'Rename File' masks..."
+msgstr ""
+
+#. Fall back to defaults
+#: src/setting.c:1396
+msgid "Loading default 'Rename Directory' masks..."
+msgstr ""
+
+#: src/setting.c:1589
+msgid "ERROR: The environment variable HOME is not defined!"
+msgstr ""
+
+#: src/setting.c:1605
+#, c-format
+msgid "ERROR: Can't create directory '%s' (%s)!"
+msgstr ""
+
+#: src/vcedit.c:287
+msgid "Input truncated or empty."
+msgstr ""
+
+#: src/vcedit.c:289
+msgid "Input is not an Ogg bitstream."
+msgstr "è¾“å…¥å¹¶éž Ogg 比特æµã€‚"
+
+#: src/vcedit.c:307
+msgid "Error reading first page of Ogg bitstream."
+msgstr "é”™è¯¯è¯»å– Ogg 比特æµç¬¬ä¸€é¡µã€‚"
+
+#: src/vcedit.c:313
+msgid "Error reading initial header packet."
+msgstr ""
+
+#: src/vcedit.c:341
+msgid "Ogg bitstream contains neither speex or vorbis data."
+msgstr ""
+
+#: src/vcedit.c:375
+msgid "Corrupt secondary header."
+msgstr ""
+
+#: src/vcedit.c:405
+msgid "Need to save extra headers - TODO!!"
+msgstr ""
+
+#: src/vcedit.c:419
+msgid "EOF before end of vorbis headers."
+msgstr ""
+
+#: src/vcedit.c:584
+msgid "Corrupt or missing data, continuing..."
+msgstr ""
+
+#: src/vcedit.c:621
+msgid ""
+"Error writing stream to output. Output stream may be corrupted or truncated."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+#: src/win32/win32dep.c:177
+#, c-format
+msgid "DLL '%s' not found. Try loading it..."
+msgstr ""
+
+#. Log_Print(_("DLL '%s' could not be loaded"), dllname);
+#: src/win32/win32dep.c:182
+#, c-format
+msgid "DLL '%s' could not be loaded"
+msgstr ""
+
+#. Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+#: src/win32/win32dep.c:193
+#, c-format
+msgid "This version of '%s' contains '%s'"
+msgstr ""
+
+#. Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+#: src/win32/win32dep.c:200
+#, c-format
+msgid "Function '%s' not found in dll '%s'"
+msgstr ""
+
+#. Log_Print(_("Audio player: '%s'"), player);
+#: src/win32/win32dep.c:294
+#, fuzzy, c-format
+msgid "Audio player: '%s'"
+msgstr "è¿è¡ŒéŸ³é¢‘播放器"
+
+#. ET_Win32_Path_Replace_Backslashes(app_data_dir);
+#. Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+#: src/win32/win32dep.c:434
+#, c-format
+msgid "EasyTAG settings dir: '%s'"
+msgstr ""
+
+#, fuzzy
+#~ msgid "ID3V2 tag Version"
+#~ msgstr "标签设置"
+
+#~ msgid "Always save tags to ISO-8859-1 character set"
+#~ msgstr "总是使用 ISO-8859-1 字符集ä¿å­˜æ ‡ç­¾"
+
+#~ msgid ""
+#~ "Try to save tags to ISO-8859-1. If it isn't possible then use UNICODE "
+#~ "(recommended)"
+#~ msgstr "å°è¯•ä½¿ç”¨ ISO-8859-1 ä¿å­˜æ ‡ç­¾ã€‚如果ä¸è¡Œåˆ™ä½¿ç”¨ UNICODE (推è)"
+
+#~ msgid "Always save tags to UNICODE character set"
+#~ msgstr "总是使用 UNICODE 字符集ä¿å­˜æ ‡ç­¾"
+
+#~ msgid "Use non standard character set for reading ID3 tags: "
+#~ msgstr "使用éžæ ‡å‡†å­—ç¬¦é›†è¯»å– ID3 标签:"
+
+#~ msgid "Use non standard character set for writing ID3 tags: "
+#~ msgstr "使用éžæ ‡å‡†å­—符集写入 ID3 标签:"
+
+#~ msgid "Do nothing"
+#~ msgstr "什么都ä¸åš"
+
+#, fuzzy
+#~ msgid "ERROR while opening file: '%s' (%s)"
+#~ msgstr ""
+#~ "打开文件 “%s†(%s) æ—¶å‘生错误。\n"
+#~ ""
+
+#~ msgid "Load on startup the directory"
+#~ msgstr "å¯åŠ¨æ—¶è£…入目录"
+
+#~ msgid "#:"
+#~ msgstr "#:"
+
+#~ msgid "Set yellow background for tooltips"
+#~ msgstr "å°†æ示背景色设置为黄色"
+
+#~ msgid "Save _Configuration Now"
+#~ msgstr "ç«‹å³ä¿å­˜é…ç½®(_C)"
+
+#~ msgid "Save Configuration Now"
+#~ msgstr "ç«‹å³ä¿å­˜é…ç½®"
+
+#~ msgid "Set main window size"
+#~ msgstr "设置主窗å£å°ºå¯¸"
+
+#~ msgid "Width :"
+#~ msgstr "宽:"
+
+#~ msgid "Height :"
+#~ msgstr "高:"
+
+#~ msgid " Get current size "
+#~ msgstr " 获å–当å‰å°ºå¯¸ "
+
+#~ msgid "Position :"
+#~ msgstr "ä½ç½®ï¼š"
+
+#~ msgid " Get current position "
+#~ msgstr " 获å–当å‰ä½ç½® "
+
+#~ msgid "Set scanner window position"
+#~ msgstr "设置扫æ器窗å£ä½ç½®"
+
+#~ msgid "CD Data Base Window"
+#~ msgstr "CD æ•°æ®åº“窗å£"
+
+#~ msgid "Set CD Data Base window size"
+#~ msgstr "设置 CD æ•°æ®åº“窗å£å°ºå¯¸"
+
+#~ msgid "Specify the default size for the CDDB window."
+#~ msgstr "指定 CDDB 窗å£çš„默认尺寸"
+
+#~ msgid "Save the configuration before exiting the program"
+#~ msgstr "退出程åºå‰ä¿å­˜é…ç½®"
+
+#~ msgid "Size Error..."
+#~ msgstr "大å°é”™è¯¯..."
+
+#~ msgid " Window width (%d) is bigger than screen width (%d)! "
+#~ msgstr " 窗å£å®½åº¦ (%d) 大于å±å¹•å®½åº¦ (%d)ï¼"
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100755
index 0000000..9383d83
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,84 @@
+CFLAGS = @CFLAGS@ @GTK_CFLAGS@
+
+SUBDIRS = libmpg123 libapetag id3lib
+
+bin_PROGRAMS = easytag
+
+easytag_SOURCES = \
+ about.c \
+ about.h \
+ ape_tag.c \
+ ape_tag.h \
+ bar.c \
+ bar.h \
+ browser.c \
+ browser.h \
+ cddb.c \
+ cddb.h \
+ charset.c \
+ charset.h \
+ crc32.c \
+ crc32.h \
+ dlm.c \
+ dlm.h \
+ easytag.c \
+ easytag.h \
+ et_core.c \
+ et_core.h \
+ flac_header.c \
+ flac_header.h \
+ flac_tag.c \
+ flac_tag.h \
+ genres.h \
+ id3_tag.c \
+ id3_tag.h \
+ id3v24_tag.c \
+ log.c \
+ log.h \
+ misc.c \
+ misc.h \
+ monkeyaudio_header.c \
+ monkeyaudio_header.h \
+ mpeg_header.c \
+ mpeg_header.h \
+ mp4_header.c \
+ mp4_header.h \
+ mp4_tag.c \
+ mp4_tag.h \
+ musepack_header.c \
+ musepack_header.h \
+ msgbox.c \
+ msgbox.h \
+ ogg_header.c \
+ ogg_header.h \
+ ogg_tag.c \
+ ogg_tag.h \
+ picture.c \
+ picture.h \
+ prefs.c \
+ prefs.h \
+ scan.c \
+ scan.h \
+ setting.c \
+ setting.h \
+ ui_manager.h \
+ vcedit.c \
+ vcedit.h \
+ wavpack_header.c \
+ wavpack_header.h \
+ wavpack_tag.c \
+ wavpack_tag.h
+
+EXTRA_DIST = \
+ Makefile.mingw \
+ win32/easytag.rc \
+ win32/resource.h \
+ win32/win32dep.c \
+ win32/win32dep.h \
+ win32/win_easytag.c
+
+easytag_LDADD = $(GTK_LIBS) libmpg123/libmpg123.a libapetag/libapetag.a id3lib/libid3bugfix.a
+
+localedir = $(datadir)/locale
+PACKAGE_DATA_DIR = $(datadir)/$(PACKAGE)
+INCLUDES = -DLOCALE=\"$(localedir)\" -DPACKAGE_DATA_DIR=\"$(PACKAGE_DATA_DIR)\"
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..ec0e58d
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,710 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = easytag$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_easytag_OBJECTS = about.$(OBJEXT) ape_tag.$(OBJEXT) bar.$(OBJEXT) \
+ browser.$(OBJEXT) cddb.$(OBJEXT) charset.$(OBJEXT) \
+ crc32.$(OBJEXT) dlm.$(OBJEXT) easytag.$(OBJEXT) \
+ et_core.$(OBJEXT) flac_header.$(OBJEXT) flac_tag.$(OBJEXT) \
+ id3_tag.$(OBJEXT) id3v24_tag.$(OBJEXT) log.$(OBJEXT) \
+ misc.$(OBJEXT) monkeyaudio_header.$(OBJEXT) \
+ mpeg_header.$(OBJEXT) mp4_header.$(OBJEXT) mp4_tag.$(OBJEXT) \
+ musepack_header.$(OBJEXT) msgbox.$(OBJEXT) \
+ ogg_header.$(OBJEXT) ogg_tag.$(OBJEXT) picture.$(OBJEXT) \
+ prefs.$(OBJEXT) scan.$(OBJEXT) setting.$(OBJEXT) \
+ vcedit.$(OBJEXT) wavpack_header.$(OBJEXT) \
+ wavpack_tag.$(OBJEXT)
+easytag_OBJECTS = $(am_easytag_OBJECTS)
+am__DEPENDENCIES_1 =
+easytag_DEPENDENCIES = $(am__DEPENDENCIES_1) libmpg123/libmpg123.a \
+ libapetag/libapetag.a id3lib/libid3bugfix.a
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(easytag_SOURCES)
+DIST_SOURCES = $(easytag_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@ @GTK_CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
+WAVPACK_LIBS = @WAVPACK_LIBS@
+XGETTEXT = @XGETTEXT@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = libmpg123 libapetag id3lib
+easytag_SOURCES = \
+ about.c \
+ about.h \
+ ape_tag.c \
+ ape_tag.h \
+ bar.c \
+ bar.h \
+ browser.c \
+ browser.h \
+ cddb.c \
+ cddb.h \
+ charset.c \
+ charset.h \
+ crc32.c \
+ crc32.h \
+ dlm.c \
+ dlm.h \
+ easytag.c \
+ easytag.h \
+ et_core.c \
+ et_core.h \
+ flac_header.c \
+ flac_header.h \
+ flac_tag.c \
+ flac_tag.h \
+ genres.h \
+ id3_tag.c \
+ id3_tag.h \
+ id3v24_tag.c \
+ log.c \
+ log.h \
+ misc.c \
+ misc.h \
+ monkeyaudio_header.c \
+ monkeyaudio_header.h \
+ mpeg_header.c \
+ mpeg_header.h \
+ mp4_header.c \
+ mp4_header.h \
+ mp4_tag.c \
+ mp4_tag.h \
+ musepack_header.c \
+ musepack_header.h \
+ msgbox.c \
+ msgbox.h \
+ ogg_header.c \
+ ogg_header.h \
+ ogg_tag.c \
+ ogg_tag.h \
+ picture.c \
+ picture.h \
+ prefs.c \
+ prefs.h \
+ scan.c \
+ scan.h \
+ setting.c \
+ setting.h \
+ ui_manager.h \
+ vcedit.c \
+ vcedit.h \
+ wavpack_header.c \
+ wavpack_header.h \
+ wavpack_tag.c \
+ wavpack_tag.h
+
+EXTRA_DIST = \
+ Makefile.mingw \
+ win32/easytag.rc \
+ win32/resource.h \
+ win32/win32dep.c \
+ win32/win32dep.h \
+ win32/win_easytag.c
+
+easytag_LDADD = $(GTK_LIBS) libmpg123/libmpg123.a libapetag/libapetag.a id3lib/libid3bugfix.a
+localedir = $(datadir)/locale
+PACKAGE_DATA_DIR = $(datadir)/$(PACKAGE)
+INCLUDES = -DLOCALE=\"$(localedir)\" -DPACKAGE_DATA_DIR=\"$(PACKAGE_DATA_DIR)\"
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+easytag$(EXEEXT): $(easytag_OBJECTS) $(easytag_DEPENDENCIES)
+ @rm -f easytag$(EXEEXT)
+ $(LINK) $(easytag_LDFLAGS) $(easytag_OBJECTS) $(easytag_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/about.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ape_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/browser.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddb.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/charset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/easytag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/et_core.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flac_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flac_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id3_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id3v24_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monkeyaudio_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp4_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp4_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpeg_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msgbox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/musepack_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ogg_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ogg_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/picture.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setting.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcedit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavpack_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavpack_tag.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/win32
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(PROGRAMS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-binPROGRAMS clean-generic clean-libtool \
+ clean-recursive ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-man install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/Makefile.mingw b/src/Makefile.mingw
new file mode 100755
index 0000000..aede25d
--- /dev/null
+++ b/src/Makefile.mingw
@@ -0,0 +1,178 @@
+#
+# Makefile.mingw
+#
+# Description: Makefile for win32 (mingw) version of EasyTAG
+#
+
+#
+# PATHS
+#
+
+INCLUDE_DIR := .
+EASYTAG_TOP := ..
+EASYTAG_SRC := .
+EASYTAG_INSTALL_DIR := $(EASYTAG_TOP)/win32-install-dir
+
+##
+## VARIABLE DEFINITIONS
+##
+
+CPP = g++
+CC = gcc.exe
+
+TARGET = easytag
+
+# Compiler and Linker Options
+
+CFLAGS += -g -O2 -mms-bitfields
+DEFINES += -DHAVE_GTK -DHAVE_CONFIG_H
+LDFLAGS = -mwindows
+
+WINDRES := windres
+
+##
+## INCLUDE PATHS
+##
+
+INCLUDE_PATHS = -I$(INCLUDE_DIR) \
+ -I$(INCLUDE_DIR)/win32 \
+ -I$(EASYTAG_TOP) \
+ `pkg-config --cflags gtk+-2.0` \
+ -I/local/include
+
+
+
+LIB_PATHS = `pkg-config --libs gtk+-2.0` \
+ `pkg-config --libs vorbisfile` \
+ -L$(EASYTAG_SRC) \
+ -L/local/lib \
+ -lflac \
+ -lmp4v2 \
+ -lid3 \
+ -lid3tag \
+ -liconv \
+ -lstdc++ \
+ -lz \
+ -lwavpack \
+ -lws2_32
+
+
+##
+## SOURCES, OBJECTS
+##
+
+RC_SRC = win32/easytag.rc
+
+DLL_C_SRC = about.c \
+ ape_tag.c \
+ bar.c \
+ browser.c \
+ charset.c \
+ cddb.c \
+ crc32.c \
+ dlm.c \
+ easytag.c \
+ et_core.c \
+ flac_header.c \
+ flac_tag.c \
+ id3_tag.c \
+ id3v24_tag.c \
+ id3lib/c_wrapper.c \
+ libapetag/apetaglib.c \
+ libapetag/info_mac.c \
+ libapetag/info_mpc.c \
+ libapetag/is_tag.c \
+ libmpg123/common.c \
+ libmpg123/dxhead.c \
+ libmpg123/getbits.c \
+ libmpg123/layer1.c \
+ libmpg123/layer2.c \
+ libmpg123/layer3.c \
+ libmpg123/mpg123.c \
+ log.c \
+ misc.c \
+ monkeyaudio_header.c \
+ mp4_header.c \
+ mp4_tag.c \
+ mpeg_header.c \
+ msgbox.c \
+ musepack_header.c \
+ ogg_header.c \
+ ogg_tag.c \
+ picture.c \
+ prefs.c \
+ scan.c \
+ setting.c \
+ vcedit.c \
+ wavpack_header.c \
+ wavpack_tag.c \
+ win32/win32dep.c
+
+DLL_OBJECTS = $(DLL_C_SRC:%.c=%.o) $(RC_SRC:%.rc=%.o)
+
+EXE_C_SRC = win32/win_easytag.c
+
+
+
+EXE_OBJECTS = $(EXE_C_SRC:%.c=%.o) $(RC_SRC:%.rc=%.o)
+
+
+
+##
+## LIBRARIES
+##
+
+
+
+##
+## RULES
+##
+
+# How to make a C file
+%.o: %.cpp
+ $(CPP) $(CFLAGS) $(INCLUDE_PATHS) $(DEFINES) -c $< -o $@
+
+
+# How to make a C file
+%.o: %.c
+ $(CC) $(CFLAGS) $(INCLUDE_PATHS) $(DEFINES) -c $< -o $@
+
+# How to make an RC file
+%.o: %.rc
+ $(WINDRES) -i $< -o $@
+
+##
+## TARGET DEFINITIONS
+##
+
+.PHONY: all clean
+
+all: $(TARGET).dll $(TARGET).exe
+
+install: all
+ cp $(EASYTAG_SRC)/easytag.exe $(EASYTAG_SRC)/easytag.dll $(EASYTAG_INSTALL_DIR)
+ strip -s $(EASYTAG_INSTALL_DIR)/easytag.*
+
+#
+# BUILD DLL
+#
+
+$(TARGET).lib $(TARGET).dll: $(DLL_OBJECTS)
+ $(CC) -shared $(DLL_OBJECTS) $(LIB_PATHS) $(DLL_LIBS) $(DLL_LD_FLAGS) -Wl,--out-implib,$(TARGET).lib -o $(TARGET).dll
+
+#
+# BUILD EXE
+#
+
+$(TARGET).exe: $(TARGET.dll) $(EXE_OBJECTS)
+ $(CC) $(LDFLAGS) $(EXE_OBJECTS) $(LIB_PATHS) $(EXE_LIBS) -o $(TARGET).exe
+
+##
+## CLEAN RULES
+##
+
+clean:
+ rm -rf $(DLL_OBJECTS) $(EXE_OBJECTS)
+ rm -rf $(TARGET).dll
+ rm -rf $(TARGET).lib
+ rm -rf $(TARGET).exe
diff --git a/src/about.c b/src/about.c
new file mode 100755
index 0000000..101aacc
--- /dev/null
+++ b/src/about.c
@@ -0,0 +1,536 @@
+/* about.c - 2000/05/05 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h> // for 'system'
+#ifdef ENABLE_MP3
+# include <id3tag.h>
+# ifdef ENABLE_ID3LIB
+# include <id3.h>
+# endif
+#endif
+#include <errno.h>
+
+#include "about.h"
+#include "easytag.h"
+#include "misc.h"
+#include "msgbox.h"
+#include "charset.h"
+
+#ifndef PACKAGE_DATA_DIR
+# include "../pixmaps/EasyTAG_logo.xpm"
+#endif
+
+#ifdef WIN32
+# include "win32/win32dep.h"
+#endif
+
+
+/****************
+ * Declarations *
+ ****************/
+static GtkWidget *AboutWindow = NULL;
+
+
+/**************
+ * Prototypes *
+ **************/
+void About_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+void Quit_About_Window (void);
+void About_Window_Go_To_Home_Page (void);
+
+
+
+/*************
+ * Functions *
+ *************/
+/*
+ * Close the window when the 'escape' key is pressed.
+ */
+void About_Window_Key_Press (GtkWidget *window ATTRIBUTE_UNUSED, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ Quit_About_Window();
+ break;
+ }
+ }
+}
+
+
+void Quit_About_Window (void)
+{
+ if (AboutWindow)
+ {
+ gtk_widget_destroy(AboutWindow);
+ AboutWindow = (GtkWidget *)NULL;
+ /*gtk_widget_set_sensitive(MainWindow,TRUE);*/
+ }
+}
+
+void Show_About_Window (void)
+{
+ GtkWidget *AboutNoteBook;
+ GtkWidget *Label;
+ GtkWidget *Frame;
+ GtkWidget *VBox, *hbox;
+ GtkWidget *ScrollWindow;
+ GtkWidget *TextView;
+ GtkTextBuffer *TextBuffer;
+ GtkTextIter iter;
+ GtkWidget *Button;
+ GtkWidget *Logo;
+ GdkPixmap *pixmap;
+ GdkBitmap *mask;
+ gchar temp[MAX_STRING_LEN];
+ gchar *temp_str;
+ gint i;
+#ifdef PACKAGE_DATA_DIR
+ FILE *file;
+ gchar *tmp = NULL;
+#endif
+ gchar *description_text =
+ _(""
+ " EasyTAG is an utility for viewing and editing tags for MP3, MP2, "
+ "FLAC, Ogg Vorbis, MP4/AAC, MusePack and Monkey's Audio files. Its "
+ "simple and nice GTK+ interface makes tagging easier under GNU/Linux."
+ "");
+
+
+ /* Translation contributions */
+ gchar *translations_thanks_text [][2]= {
+ {" - Bastian Kleineidam ", _("(German translation)")},
+ {" - Adrian Bunk ", _("(German translation)")},
+ {" - Colin Marquardt ", _("(German translation)")},
+ {" - Philipp Thomas ", _("(German translation)")},
+ {" - Sergey Zhumatiy ", _("(Russian translation)")},
+ {" - Andrey Astafiev ", _("(Russian translation)")},
+ {" - Vincent van Adrighem ", _("(Dutch translation)")},
+ {" - Björn Olievier ", _("(Dutch translation)")},
+ {" - Patrik Israelsson ", _("(Swedish translation)")},
+ {" - Anders Strömer ", _("(Swedish translation)")},
+ {" - Szel Miklos ", _("(Hungarian translation)")},
+ {" - Nagy Boldizsar ", _("(Hungarian translation)")},
+ {" - Mészáros Csaba ", _("(Hungarian translation)")},
+ {" - Cappelletti Lorenzo ", _("(Italian translation)")},
+ {" - Costantino Ceoldo ", _("(Italian translation)")},
+ {" - Takeshi Aihana ", _("(Japanese translation)")},
+ {" - Olexander Kunytsa ", _("(Ukrainian translation)")},
+ {" - Cawko Xakep ", _("(Ukrainian translation)")},
+ {" - Milan Siebenburger ", _("(Czech translation)")},
+ {" - Zbynek Mrkvicka ", _("(Czech translation)")},
+ {" - Jaime Serrano Cartagena ", _("(Spanish translation)")},
+ {" - Fernando M. Bueno Moreno ", _("(Spanish translation)")},
+ {" - Francisco Javier F. Serrador ", _("(Spanish translation)")},
+ {" - Maciej Kasprzyk ", _("(Polish translation)")},
+ {" - Pauliuc George ", _("(Romanian translation)")},
+ {" - Morten Brix Pedersen ", _("(Danish translation)")},
+ {" - Apollon Oikonomopoulos ", _("(Greek translation)")},
+ {" - doutor zero ", _("(Brazilian Portuguese translation)")},
+ {" - Luchezar P. Petkov ", _("(Bulgarian translation)")},
+ {" - Yang Jinsong ", _("(Chinese translation)")},
+ {" - Yuval Hager ", _("(Hebrew translation)")},
+ {NULL,NULL}
+ };
+
+ /* General contributions */
+ gchar *general_thanks_text =
+ " - Daniel Drake (GTK2 port)\n"
+ " - Mihael Vrbanec (GTK2 port)\n"
+ " - Michael Pujos (Win32 port)\n"
+ " - Andrew Shuvalov\n"
+ " - Sergey Zhumatiy\n"
+ " - Kevin Venkiteswaran\n"
+ " - Sheikholeslami Navid\n"
+ " - Marcus Tegel\n"
+ " - Robert\n"
+ " - Lars Bohn\n"
+ " - Patrik Israelsson\n"
+ " - Adrian Bunk\n"
+ " - Alexander D Harkness\n"
+ " - Vaclav Slavik\n"
+ " - Charles Kerr\n"
+ " - Gian\n"
+ " - Thomas Zajic\n"
+ " - Szel Miklos\n"
+ " - Tore Aursand\n"
+ " - Cappelletti Lorenzo\n"
+ " - Colin Marquardt\n"
+ " - Goetz Waschk\n"
+ " - Holger Schemel\n"
+ " - Artur Polaczynski\n"
+ " - Maciej Kasprzyk\n"
+ " - Daniel Pichler\n"
+ " - Santtu Lakkala\n"
+ " - Philipp Thomas\n"
+ " - Tony Mancill\n"
+ " - Pavel Minayev\n"
+ " - Justus Schwartz\n"
+ " - Fredrik Noring\n"
+ " - Guilherme Destefani\n"
+ " - Michael Ihde\n"
+ " - Stewart Whitman\n"
+ " - Javier Kohen\n"
+ " - Alexey Illarionov\n"
+ " - Der Humph\n"
+ " - Emmanuel Brun\n"
+ " - Maarten Maathuis\n"
+ " - Pierre Dumuid\n"
+ "";
+
+
+ /* Check if already opened */
+ if (AboutWindow)
+ {
+ gdk_window_raise(AboutWindow->window);
+ return;
+ }
+
+ /* Dialog window */
+ AboutWindow = gtk_dialog_new();
+
+ /* Config */
+ gtk_window_set_title(GTK_WINDOW(AboutWindow),_("About..."));
+ gtk_window_set_position(GTK_WINDOW(AboutWindow),GTK_WIN_POS_CENTER);
+
+ /* Signals connection */
+ g_signal_connect(G_OBJECT(AboutWindow),"destroy", G_CALLBACK(Quit_About_Window),NULL);
+ g_signal_connect(G_OBJECT(AboutWindow),"delete_event",G_CALLBACK(Quit_About_Window),NULL);
+ g_signal_connect(G_OBJECT(AboutWindow),"key_press_event", G_CALLBACK(About_Window_Key_Press),NULL);
+
+ /* The NoteBook */
+ AboutNoteBook = gtk_notebook_new();
+ gtk_notebook_popup_enable(GTK_NOTEBOOK(AboutNoteBook));
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(AboutWindow)->vbox),AboutNoteBook,TRUE,TRUE,0);
+
+
+ /*
+ * Tab for common informations
+ */
+
+ Label = gtk_label_new(_("About"));
+ Frame = gtk_frame_new(NULL);
+ gtk_notebook_append_page (GTK_NOTEBOOK(AboutNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 2);
+
+ VBox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+
+ /* EasyTAG Logo */
+ gtk_widget_realize(AboutWindow);
+
+#ifdef PACKAGE_DATA_DIR
+ pixmap = gdk_pixmap_create_from_xpm(AboutWindow->window,&mask,NULL,PACKAGE_DATA_DIR"/EasyTAG_logo.xpm");
+#else
+ pixmap = gdk_pixmap_create_from_xpm_d(AboutWindow->window,&mask,NULL,EasyTAG_logo_xpm);
+#endif
+
+ if (pixmap)
+ {
+ Logo = gtk_image_new_from_pixmap(pixmap, mask);
+ g_object_unref(pixmap);
+ g_object_unref(mask);
+ gtk_box_pack_start(GTK_BOX(VBox),Logo,FALSE,TRUE,0);
+ gtk_misc_set_padding(GTK_MISC(Logo),2,2);
+ }
+
+ /* Infos */
+ Label = gtk_label_new(NULL);
+ gtk_label_set_markup(GTK_LABEL(Label),"<b>"APPNAME" "VERSION"</b>");
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+
+ sprintf(temp,_("(compiled: %s)"),__DATE__);
+ Label = gtk_label_new(temp);
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+
+#ifdef ENABLE_MP3 // FIX ME : should separate gtk and id3lib
+ sprintf(temp,_("(using: GTK+ %d.%d.%d)"),GTK_MAJOR_VERSION,GTK_MINOR_VERSION,
+ GTK_MICRO_VERSION);
+ Label = gtk_label_new(temp);
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#endif
+
+#ifdef ENABLE_MP3
+ sprintf(temp, _("(MP3 file support enabled using: libid3tag %s)"), ID3_VERSION);
+ Label = gtk_label_new(temp);
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#if (defined ENABLE_ID3LIB)
+ sprintf(temp, _("(ID3v2.3 tags support enabled using: id3lib %d.%d.%d)"),
+ ID3LIB_MAJOR_VERSION, ID3LIB_MINOR_VERSION, ID3LIB_PATCH_VERSION);
+ Label = gtk_label_new(temp);
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#else
+ Label = gtk_label_new(_("(ID3v2.3 tags support disabled)"));
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#endif
+#else
+ sprintf(temp, _("(MP3 file support disabled)"));
+ Label = gtk_label_new(temp);
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#endif
+
+#ifndef ENABLE_OGG
+ Label = gtk_label_new(_("(Ogg Vorbis file support disabled)"));
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#endif
+
+#ifndef ENABLE_SPEEX
+ Label = gtk_label_new(_("(Speep file support disabled)"));
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#endif
+
+#ifndef ENABLE_FLAC
+ Label = gtk_label_new(_("(FLAC file support disabled)"));
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#endif
+
+#ifndef ENABLE_MP4
+ Label = gtk_label_new(_("(MP4/AAC file support disabled)"));
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#endif
+
+#ifndef ENABLE_WAVPACK
+ Label = gtk_label_new(_("(WavPack file support disabled)"));
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+#endif
+
+ /* Insert a blank line */
+ Label = gtk_label_new("");
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+
+ sprintf(temp,_("Author: %s"),AUTHOR);
+ Label = gtk_label_new(temp);
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+
+ sprintf(temp,_("E-mail: %s"),EMAIL);
+ Label = gtk_label_new(temp);
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+
+ hbox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),hbox,FALSE,TRUE,0);
+ Label = gtk_label_new(_("Web Page: "));
+ gtk_misc_set_alignment(GTK_MISC(Label),1,0.5);
+ gtk_box_pack_start(GTK_BOX(hbox),Label,TRUE,TRUE,0);
+ Button = gtk_button_new_with_label(WEBPAGE);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,TRUE,TRUE,0);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(About_Window_Go_To_Home_Page),NULL);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+
+ /* Insert a blank line */
+ Label = gtk_label_new("");
+ gtk_box_pack_start(GTK_BOX(VBox),Label,TRUE,TRUE,0);
+
+ Frame = gtk_frame_new(_("Description:"));
+ gtk_frame_set_shadow_type(GTK_FRAME(Frame),GTK_SHADOW_IN);
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,TRUE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 2);
+
+ Label = gtk_label_new(_(description_text));
+ gtk_misc_set_padding(GTK_MISC(Label),2,2);
+ gtk_label_set_line_wrap(GTK_LABEL(Label),TRUE);
+ gtk_container_add(GTK_CONTAINER(Frame),Label);
+
+
+ /*
+ * Tab for thanks
+ */
+
+ Label = gtk_label_new(_("Thanks"));
+ Frame = gtk_frame_new(NULL);
+ gtk_notebook_append_page (GTK_NOTEBOOK(AboutNoteBook),Frame,Label);
+
+ ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ gtk_container_add(GTK_CONTAINER(Frame),ScrollWindow);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+
+ TextBuffer = gtk_text_buffer_new(NULL);
+ gtk_text_buffer_create_tag(TextBuffer, "italic", "style", PANGO_STYLE_ITALIC, NULL);
+ gtk_text_buffer_create_tag(TextBuffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL);
+ gtk_text_buffer_create_tag(TextBuffer, "underline", "underline", PANGO_UNDERLINE_SINGLE, NULL);
+ gtk_text_buffer_create_tag(TextBuffer, "large", "scale", PANGO_SCALE_LARGE, NULL);
+ //gtk_text_buffer_create_tag(TextBuffer, "x-large", "scale", PANGO_SCALE_X_LARGE, NULL);
+ //gtk_text_buffer_create_tag(TextBuffer, "monospace", "family", "monospace", NULL);
+
+ gtk_text_buffer_get_iter_at_offset(TextBuffer, &iter, 0);
+
+ temp_str = _("Translations:\n");
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ temp_str, -1,
+ "bold", "underline", "large", NULL);
+
+ for (i=0; translations_thanks_text[i][0]!=NULL; i++)
+ {
+ // Translator name
+ if (!g_utf8_validate(translations_thanks_text[i][0], -1, NULL))
+ temp_str = convert_string(translations_thanks_text[i][0], "iso-8859-1", "utf-8",TRUE);
+ else
+ temp_str = g_strdup(translations_thanks_text[i][0]);
+ gtk_text_buffer_insert(TextBuffer, &iter, temp_str, -1);
+ g_free(temp_str);
+
+ // Translation language
+ if (!g_utf8_validate(translations_thanks_text[i][1], -1, NULL))
+ temp_str = convert_string(translations_thanks_text[i][1], "iso-8859-1", "utf-8",TRUE);
+ else
+ temp_str = g_strdup(translations_thanks_text[i][1]);
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter, temp_str, -1,
+ "italic", NULL);
+ g_free(temp_str);
+ gtk_text_buffer_insert(TextBuffer, &iter, "\n", -1);
+ }
+
+ gtk_text_buffer_insert(TextBuffer, &iter, "\n", -1);
+
+ temp_str = _("General:\n");
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ temp_str, -1,
+ "bold", "underline", "large", NULL);
+ gtk_text_buffer_insert(TextBuffer, &iter, general_thanks_text, -1);
+
+ TextView = gtk_text_view_new_with_buffer(TextBuffer);
+ gtk_container_add(GTK_CONTAINER(ScrollWindow),TextView);
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(TextView), FALSE);
+ gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(TextView), GTK_WRAP_WORD);
+
+
+ /*
+ * Tab for ChangeLog
+ */
+
+#ifdef PACKAGE_DATA_DIR
+ Label = gtk_label_new(_("Changes"));
+ Frame = gtk_frame_new(NULL);
+ gtk_notebook_append_page (GTK_NOTEBOOK(AboutNoteBook),Frame,Label);
+
+ ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ gtk_container_add(GTK_CONTAINER(Frame),ScrollWindow);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+
+ TextBuffer = gtk_text_buffer_new(NULL);
+ gtk_text_buffer_get_iter_at_offset(TextBuffer, &iter, 0);
+ gtk_text_buffer_create_tag(TextBuffer, "monospace", "family", "monospace", NULL);
+ gtk_text_buffer_create_tag(TextBuffer, "red_foreground", "foreground", "red", NULL);
+ gtk_text_buffer_create_tag(TextBuffer, "blue_foreground", "foreground", "blue", NULL);
+ gtk_text_buffer_create_tag(TextBuffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL);
+
+ gtk_text_buffer_get_iter_at_offset(TextBuffer, &iter, 0);
+
+ // The file 'ChangeLog' to read
+ if ( (file=fopen(PACKAGE_DATA_DIR"/ChangeLog","r"))==0 )
+ {
+ gchar *msg = g_strdup_printf(_("Can't open file '%s' (%s)\n"),PACKAGE_DATA_DIR"/ChangeLog",g_strerror(errno));
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ msg, -1,
+ "monospace", "red_foreground", NULL);
+ g_free(msg);
+ } else
+ {
+ gint first_version = 0;
+
+ while (fgets(temp,sizeof(temp),file))
+ {
+ if (temp[strlen(temp)-1]=='\n')
+ temp[strlen(temp)-1]='\0';
+ if (temp[strlen(temp)-1]=='\r')
+ temp[strlen(temp)-1]='\0';
+
+ // Convert line to UTF-8
+ if (!g_utf8_validate(temp, -1, NULL))
+ tmp = convert_string(temp, "iso-8859-1", "utf-8",TRUE);
+ else
+ tmp = g_strdup(temp);
+
+ if (tmp && tmp[0]!=' ') // If first character is a space => 1rst line after title
+ {
+ first_version++;
+ // To set to bold the title of the version and to red the first version
+ if (first_version > 2) // As title takes 2 lines
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ tmp, -1,
+ "monospace", "bold", NULL);
+ else
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ tmp, -1,
+ "monospace", "bold", "blue_foreground", NULL);
+ }else
+ {
+ if (first_version > 2) // As title takes 2 lines
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ tmp, -1,
+ "monospace", NULL);
+ else
+ gtk_text_buffer_insert_with_tags_by_name(TextBuffer, &iter,
+ tmp, -1,
+ "monospace", "blue_foreground", NULL);
+ }
+
+ gtk_text_buffer_insert(TextBuffer, &iter, "\n", -1);
+ g_free(tmp);
+ }
+ fclose(file);
+ }
+ TextView = gtk_text_view_new_with_buffer(TextBuffer);
+ gtk_container_add(GTK_CONTAINER(ScrollWindow),TextView);
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(TextView), FALSE);
+ gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(TextView), GTK_WRAP_WORD);
+#endif
+
+
+ /*
+ * Close Button
+ */
+ Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(AboutWindow)->action_area),Button,FALSE,FALSE,0);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Quit_About_Window),NULL);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(Button);
+
+
+ /* Disable main window */
+ /*gtk_widget_set_sensitive(MainWindow,FALSE);*/
+
+ gtk_widget_show_all(AboutWindow);
+}
+
+
+void About_Window_Go_To_Home_Page (void)
+{
+#ifdef WIN32
+ ET_Win32_Notify_Uri(WEBPAGE);
+#else
+ system("gnome-moz-remote "WEBPAGE);
+#endif
+}
diff --git a/src/about.h b/src/about.h
new file mode 100755
index 0000000..1fb4c25
--- /dev/null
+++ b/src/about.h
@@ -0,0 +1,33 @@
+/* about.h - 2000/05/05 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __ABOUT_H__
+#define __ABOUT_H__
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void Show_About_Window (void);
+
+
+#endif /* __ABOUT_H__ */
diff --git a/src/ape_tag.c b/src/ape_tag.c
new file mode 100755
index 0000000..c88f326
--- /dev/null
+++ b/src/ape_tag.c
@@ -0,0 +1,342 @@
+/* ape_tag.c */
+/*
+ * EasyTAG - Tag editor for MP3, Ogg Vorbis and MPC files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2002-2003 Artur Polaczyñski <artii@o2.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "easytag.h"
+#include "ape_tag.h"
+#include "et_core.h"
+#include "log.h"
+#include "log.h"
+#include "misc.h"
+#include "setting.h"
+#include "charset.h"
+#include "libapetag/apetaglib.h"
+
+/***************
+ * Declaration *
+ ***************/
+
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Ape_Tag_Write_File (FILE *file_in, gchar *filename_in);
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * Note:
+ * - if field is found but contains no info (strlen(str)==0), we don't read it
+ */
+gboolean Ape_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
+{
+ FILE *file;
+ gchar *string = NULL;
+ gchar *string1 = NULL;
+ apetag *ape_cnt;
+
+ if (!filename || !FileTag)
+ return FALSE;
+
+ if ((file = fopen(filename, "rb")) == NULL)
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8, g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ ape_cnt = apetag_init();
+ apetag_read_fp(ape_cnt, file, filename, 0); /* read all tags ape,id3v[12]*/
+
+ /*********
+ * Title *
+ *********/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_TITLE);
+ if (FileTag->title == NULL)
+ FileTag->title = Try_To_Validate_Utf8_String(string);
+
+
+ /**********
+ * Artist *
+ **********/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_ARTIST);
+ if (FileTag->artist == NULL)
+ FileTag->artist = Try_To_Validate_Utf8_String(string);
+
+ /*********
+ * Album *
+ *********/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_ALBUM);
+ if (FileTag->album == NULL)
+ FileTag->album = Try_To_Validate_Utf8_String(string);
+
+ /***************
+ * Disc Number *
+ ***************/
+ string = apefrm_getstr(ape_cnt, "Part");
+ if (FileTag->disc_number == NULL)
+ FileTag->disc_number = Try_To_Validate_Utf8_String(string);
+
+ /********
+ * Year *
+ ********/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_YEAR);
+ FileTag->year = Try_To_Validate_Utf8_String(string);
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_TRACK);
+ if (string)
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ string1 = g_utf8_strchr(string, -1, '/'); // strchr don't like NULL string
+ if (NUMBER_TRACK_FORMATED)
+ {
+ if (string1)
+ {
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON, atoi(string1 + 1));
+ *string1 = '\0';
+ }
+ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON, atoi(string));
+ } else
+ {
+ if (string1)
+ {
+ FileTag->track_total = g_strdup(string1 + 1);
+ *string1 = '\0';
+ }
+ FileTag->track = g_strdup(string);
+ }
+ g_free(string);
+ } else
+ {
+ FileTag->track = FileTag->track_total = NULL;
+ }
+
+ /*********
+ * Genre *
+ *********/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_GENRE);
+ if (FileTag->genre == NULL)
+ FileTag->genre = Try_To_Validate_Utf8_String(string);
+
+ /***********
+ * Comment *
+ ***********/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_COMMENT);
+ if (FileTag->comment == NULL)
+ FileTag->comment = Try_To_Validate_Utf8_String(string);
+
+ /************
+ * Composer *
+ ************/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_COMPOSER);
+ if (FileTag->composer == NULL)
+ FileTag->composer = Try_To_Validate_Utf8_String(string);
+
+ /*******************
+ * Original artist *
+ *******************/
+ string = apefrm_getstr(ape_cnt, "Original Artist");
+ if (FileTag->orig_artist == NULL)
+ FileTag->orig_artist = Try_To_Validate_Utf8_String(string);
+
+ /*************
+ * Copyright *
+ *************/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_COPYRIGHT);
+ if (FileTag->copyright == NULL)
+ FileTag->copyright = Try_To_Validate_Utf8_String(string);
+
+ /*******
+ * URL *
+ *******/
+ string = apefrm_getstr(ape_cnt, APE_TAG_FIELD_RELATED_URL);
+ if (FileTag->url == NULL)
+ FileTag->url = Try_To_Validate_Utf8_String(string);
+
+ /**************
+ * Encoded by *
+ **************/
+ string = apefrm_getstr(ape_cnt, "Encoded By");
+ if (FileTag->encoded_by == NULL)
+ FileTag->encoded_by = Try_To_Validate_Utf8_String(string);
+
+ apetag_free(ape_cnt);
+ fclose(file);
+
+ return TRUE;
+}
+
+
+
+gboolean Ape_Tag_Write_File_Tag (ET_File *ETFile)
+{
+
+ File_Tag *FileTag;
+ gchar *filename_in;
+ //FILE *file_in;
+ gchar *string;
+ //GList *list;
+ apetag *ape_mem;
+
+ if (!ETFile || !ETFile->FileTag)
+ return FALSE;
+
+ FileTag = (File_Tag *)ETFile->FileTag->data;
+ filename_in = ((File_Name *)ETFile->FileNameCur->data)->value;
+
+ ape_mem = apetag_init();
+
+ /*********
+ * Title *
+ *********/
+ if ( FileTag->title && g_utf8_strlen(FileTag->title, -1) > 0)
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_TITLE, FileTag->title);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_TITLE);
+
+
+ /**********
+ * Artist *
+ **********/
+ if ( FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_ARTIST, FileTag->artist);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_ARTIST);
+
+ /*********
+ * Album *
+ *********/
+ if ( FileTag->album && g_utf8_strlen(FileTag->album, -1) > 0)
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_ALBUM, FileTag->album);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_ALBUM);
+
+ /***************
+ * Disc Number *
+ ***************/
+ if ( FileTag->disc_number && g_utf8_strlen(FileTag->disc_number, -1) > 0)
+ apefrm_add(ape_mem, 0, "Part", FileTag->disc_number);
+ else
+ apefrm_remove(ape_mem,"Part");
+
+ /********
+ * Year *
+ ********/
+ if ( FileTag->year && g_utf8_strlen(FileTag->year, -1) > 0)
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_YEAR, FileTag->year);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_YEAR);
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ if ( FileTag->track && g_utf8_strlen(FileTag->track, -1) > 0)
+ {
+ if ( FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0 )
+ string = g_strconcat(FileTag->track,"/",FileTag->track_total,NULL);
+ else
+ string = g_strconcat(FileTag->track,NULL);
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_TRACK, string);
+ g_free(string);
+ }else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_TRACK);
+
+ /*********
+ * Genre *
+ *********/
+ if ( FileTag->genre && g_utf8_strlen(FileTag->genre, -1) > 0)
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_GENRE, FileTag->genre);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_GENRE);
+
+ /***********
+ * Comment *
+ ***********/
+ if ( FileTag->comment && g_utf8_strlen(FileTag->comment, -1) > 0)
+ apefrm_add (ape_mem, 0, APE_TAG_FIELD_COMMENT, FileTag->comment);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_COMMENT);
+
+ /************
+ * Composer *
+ ************/
+ if ( FileTag->composer && g_utf8_strlen(FileTag->composer, -1) > 0)
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_COMPOSER, FileTag->composer);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_COMPOSER);
+
+ /*******************
+ * Original artist *
+ *******************/
+ if ( FileTag->orig_artist && g_utf8_strlen(FileTag->orig_artist, -1) > 0)
+ apefrm_add(ape_mem, 0, "Original Artist", FileTag->orig_artist);
+ else
+ apefrm_remove(ape_mem,"Original Artist");
+
+ /*************
+ * Copyright *
+ *************/
+ if ( FileTag->copyright && g_utf8_strlen(FileTag->copyright, -1) > 0)
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_COPYRIGHT, FileTag->copyright);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_COPYRIGHT);
+
+ /*******
+ * URL *
+ *******/
+ if ( FileTag->url && g_utf8_strlen(FileTag->url, -1) > 0)
+ apefrm_add(ape_mem, 0, APE_TAG_FIELD_RELATED_URL, FileTag->url);
+ else
+ apefrm_remove(ape_mem,APE_TAG_FIELD_RELATED_URL);
+
+ /**************
+ * Encoded by *
+ **************/
+ if ( FileTag->encoded_by && g_utf8_strlen(FileTag->encoded_by, -1) > 0)
+ apefrm_add(ape_mem, 0, "Encoded By", FileTag->encoded_by);
+ else
+ apefrm_remove(ape_mem,"Encoded By");
+
+
+ /* reread all tag-type again excl. changed frames by apefrm_remove() */
+ apetag_save(filename_in,ape_mem,APE_TAG_V2+SAVE_NEW_OLD_APE_TAG);
+ apetag_free(ape_mem);
+
+ return TRUE;
+}
diff --git a/src/ape_tag.h b/src/ape_tag.h
new file mode 100755
index 0000000..1d21acb
--- /dev/null
+++ b/src/ape_tag.h
@@ -0,0 +1,40 @@
+/* ape_tag.h - 2001/11/08 */
+/*
+ * EasyTAG - Tag editor for MP3, Ogg Vorbis and MPC files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2002-2003 Artur Polaczyñski <artii@o2.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __APE_TAG_H__
+#define __APE_TAG_H__
+
+
+#include "et_core.h"
+
+/***************
+ * Declaration *
+ ***************/
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Ape_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag);
+gboolean Ape_Tag_Write_File_Tag (ET_File *ETFile);
+
+#endif /* __APE_TAG_H__ */
diff --git a/src/bar.c b/src/bar.c
new file mode 100755
index 0000000..fc44855
--- /dev/null
+++ b/src/bar.c
@@ -0,0 +1,482 @@
+/* bar.c - 2000/05/05 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+
+#include "bar.h"
+#include "easytag.h"
+#include "about.h"
+#include "prefs.h"
+#include "setting.h"
+#include "browser.h"
+#include "scan.h"
+#include "cddb.h"
+#include "log.h"
+#include "misc.h"
+#include "charset.h"
+#include "ui_manager.h"
+
+/***************
+ * Declaration *
+ ***************/
+GtkWidget *StatusBar = NULL;
+static guint StatusbarTimerId = 0;
+GList *ActionPairsList = NULL;
+
+/**************
+ * Prototypes *
+ **************/
+void Init_Menu_Bar (void);
+void Menu_Sort_Action (GtkAction *action, gpointer data);
+
+void Statusbar_Start_Timer (void);
+gboolean Statusbar_Stop_Timer (void);
+void Statusbar_Remove_Timer (void);
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * Dynamic reimplementation of switch macros
+ */
+#define QCASE(string,callback) if (quark == g_quark_from_string((string))) { (callback)(); }
+#define QCASE_DATA(string,callback,data) if (quark == g_quark_from_string((string))) { (callback)((data)); }
+
+/*
+ * Menu bar
+ */
+void Menu_Sort_Action (GtkAction *item, gpointer data)
+{
+ GtkWidget *TBViewMode;
+ const gchar *action = gtk_action_get_name(item);
+ GQuark quark = g_quark_from_string(action);
+
+ QCASE_DATA(AM_SORT_ASCENDING_FILENAME, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_FILENAME);
+ QCASE_DATA(AM_SORT_DESCENDING_FILENAME, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_FILENAME);
+ QCASE_DATA(AM_SORT_ASCENDING_CREATION_DATE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_CREATION_DATE);
+ QCASE_DATA(AM_SORT_DESCENDING_CREATION_DATE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_CREATION_DATE);
+ QCASE_DATA(AM_SORT_ASCENDING_TRACK_NUMBER, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_TRACK_NUMBER);
+ QCASE_DATA(AM_SORT_DESCENDING_TRACK_NUMBER, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_TRACK_NUMBER);
+ QCASE_DATA(AM_SORT_ASCENDING_TITLE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_TITLE);
+ QCASE_DATA(AM_SORT_DESCENDING_TITLE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_TITLE);
+ QCASE_DATA(AM_SORT_ASCENDING_ARTIST, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_ARTIST);
+ QCASE_DATA(AM_SORT_DESCENDING_ARTIST, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_ARTIST);
+ QCASE_DATA(AM_SORT_ASCENDING_ALBUM, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_ALBUM);
+ QCASE_DATA(AM_SORT_DESCENDING_ALBUM, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_ALBUM);
+ QCASE_DATA(AM_SORT_ASCENDING_YEAR, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_YEAR);
+ QCASE_DATA(AM_SORT_DESCENDING_YEAR, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_YEAR);
+ QCASE_DATA(AM_SORT_ASCENDING_GENRE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_GENRE);
+ QCASE_DATA(AM_SORT_DESCENDING_GENRE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_GENRE);
+ QCASE_DATA(AM_SORT_ASCENDING_COMMENT, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_COMMENT);
+ QCASE_DATA(AM_SORT_DESCENDING_COMMENT, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_COMMENT);
+ QCASE_DATA(AM_SORT_ASCENDING_COMPOSER, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_COMPOSER);
+ QCASE_DATA(AM_SORT_DESCENDING_COMPOSER, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_COMPOSER);
+ QCASE_DATA(AM_SORT_ASCENDING_ORIG_ARTIST, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_ORIG_ARTIST);
+ QCASE_DATA(AM_SORT_DESCENDING_ORIG_ARTIST, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_ORIG_ARTIST);
+ QCASE_DATA(AM_SORT_ASCENDING_COPYRIGHT, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_COPYRIGHT);
+ QCASE_DATA(AM_SORT_DESCENDING_COPYRIGHT, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_COPYRIGHT);
+ QCASE_DATA(AM_SORT_ASCENDING_URL, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_URL);
+ QCASE_DATA(AM_SORT_DESCENDING_URL, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_URL);
+ QCASE_DATA(AM_SORT_ASCENDING_ENCODED_BY, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_ENCODED_BY);
+ QCASE_DATA(AM_SORT_DESCENDING_ENCODED_BY, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_ENCODED_BY);
+ QCASE_DATA(AM_SORT_ASCENDING_FILE_TYPE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_FILE_TYPE);
+ QCASE_DATA(AM_SORT_DESCENDING_FILE_TYPE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_FILE_TYPE);
+ QCASE_DATA(AM_SORT_ASCENDING_FILE_SIZE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_FILE_SIZE);
+ QCASE_DATA(AM_SORT_DESCENDING_FILE_SIZE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_FILE_SIZE);
+ QCASE_DATA(AM_SORT_ASCENDING_FILE_DURATION, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_FILE_DURATION);
+ QCASE_DATA(AM_SORT_DESCENDING_FILE_DURATION, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_FILE_DURATION);
+ QCASE_DATA(AM_SORT_ASCENDING_FILE_BITRATE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_FILE_BITRATE);
+ QCASE_DATA(AM_SORT_DESCENDING_FILE_BITRATE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_FILE_BITRATE);
+ QCASE_DATA(AM_SORT_ASCENDING_FILE_SAMPLERATE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_ASCENDING_FILE_SAMPLERATE);
+ QCASE_DATA(AM_SORT_DESCENDING_FILE_SAMPLERATE, ET_Sort_Displayed_File_List_And_Update_UI, SORTING_BY_DESCENDING_FILE_SAMPLERATE);
+ QCASE_DATA(AM_INITIALIZE_TREE, Browser_Tree_Rebuild, NULL);
+
+ if (quark == g_quark_from_string(AM_TREE_OR_ARTISTALBUM_VIEW))
+ {
+ // Toggle button to switch between Browser view and Artist / Album view
+ TBViewMode = gtk_ui_manager_get_widget(UIManager, "/ToolBar/ViewModeToggle");
+ gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(TBViewMode),
+ !gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(TBViewMode)));
+ }
+}
+
+void Create_UI (GtkWidget **ppmenubar, GtkWidget **pptoolbar)
+{
+ GtkWidget *menubar;
+ GtkWidget *toolbar;
+ GtkWidget *toolbarwidget;
+
+ /*
+ * Structure :
+ * - name
+ * - stock_id
+ * - label
+ * - accelerator
+ * - tooltip
+ * - callback
+ */
+ GtkActionEntry ActionEntries[] =
+ {
+
+ /*
+ * Main Menu Actions
+ */
+ { MENU_FILE, NULL, _("_File"), NULL, NULL, NULL},
+ { MENU_FILE_SORT_TAG, GTK_STOCK_SORT_ASCENDING, _("Sort list by tag"), NULL, NULL, NULL },
+ { MENU_FILE_SORT_PROP, GTK_STOCK_SORT_ASCENDING, _("Sort list by property"), NULL, NULL, NULL },
+ { AM_SORT_ASCENDING_FILENAME, GTK_STOCK_SORT_ASCENDING, _("Ascending by filename"), NULL, _("Ascending by filename"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_FILENAME, GTK_STOCK_SORT_DESCENDING, _("Descending by filename"), NULL, _("Descending by filename"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_CREATION_DATE, GTK_STOCK_SORT_ASCENDING, _("Ascending by creation date"), NULL, _("Ascending by creation date"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_CREATION_DATE, GTK_STOCK_SORT_DESCENDING, _("Descending by creation date"), NULL, _("Descending by creation date"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_TRACK_NUMBER, GTK_STOCK_SORT_ASCENDING, _("Ascending by track number"), NULL, _("Ascending by track number"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_TRACK_NUMBER, GTK_STOCK_SORT_DESCENDING, _("Descending by track number"), NULL, _("Descending by track number"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_TITLE, GTK_STOCK_SORT_ASCENDING, _("Ascending by title"), NULL, _("Ascending by title"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_TITLE, GTK_STOCK_SORT_DESCENDING, _("Descending by title"), NULL, _("Descending by title"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_ARTIST, GTK_STOCK_SORT_ASCENDING, _("Ascending by artist"), NULL, _("Ascending by artist"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_ARTIST, GTK_STOCK_SORT_DESCENDING, _("Descending by artist"), NULL, _("Descending by artist"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_ALBUM, GTK_STOCK_SORT_ASCENDING, _("Ascending by album"), NULL, _("Ascending by album"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_ALBUM, GTK_STOCK_SORT_DESCENDING, _("Descending by album"), NULL, _("Descending by album"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_YEAR, GTK_STOCK_SORT_ASCENDING, _("Ascending by year"), NULL, _("Ascending by year"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_YEAR, GTK_STOCK_SORT_DESCENDING, _("Descending by year"), NULL, _("Descending by year"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_GENRE, GTK_STOCK_SORT_ASCENDING, _("Ascending by genre"), NULL, _("Ascending by genre"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_GENRE, GTK_STOCK_SORT_DESCENDING, _("Descending by genre"), NULL, _("Descending by genre"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_COMMENT, GTK_STOCK_SORT_ASCENDING, _("Ascending by comment"), NULL, _("Ascending by comment"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_COMMENT, GTK_STOCK_SORT_DESCENDING, _("Descending by comment"), NULL, _("Descending by comment"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_COMPOSER, GTK_STOCK_SORT_ASCENDING, _("Ascending by composer"), NULL, _("Ascending by composer"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_COMPOSER, GTK_STOCK_SORT_DESCENDING, _("Descending by composer"), NULL, _("Descending by composer"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_ORIG_ARTIST, GTK_STOCK_SORT_ASCENDING, _("Ascending by original artist"), NULL, _("Ascending by original artist"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_ORIG_ARTIST, GTK_STOCK_SORT_DESCENDING, _("Descending by original artist"), NULL, _("Descending by original artist"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_COPYRIGHT, GTK_STOCK_SORT_ASCENDING, _("Ascending by copyright"), NULL, _("Ascending by copyright"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_COPYRIGHT, GTK_STOCK_SORT_DESCENDING, _("Descending by copyright"), NULL, _("Descending by copyright"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_URL, GTK_STOCK_SORT_ASCENDING, _("Ascending by URL"), NULL, _("Ascending by URL"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_URL, GTK_STOCK_SORT_DESCENDING, _("Descending by URL"), NULL, _("Descending by URL"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_ENCODED_BY, GTK_STOCK_SORT_ASCENDING, _("Ascending by encoder name"), NULL, _("Ascending by encoder name"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_ENCODED_BY, GTK_STOCK_SORT_DESCENDING, _("Descending by encoder name"), NULL, _("Descending by encoder name"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_FILE_TYPE, GTK_STOCK_SORT_ASCENDING, _("Ascending by file type"), NULL, _("Ascending by file type"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_FILE_TYPE, GTK_STOCK_SORT_DESCENDING, _("Descending by file type"), NULL, _("Descending by file type"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_FILE_SIZE, GTK_STOCK_SORT_ASCENDING, _("Ascending by file size"), NULL, _("Ascending by file size"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_FILE_SIZE, GTK_STOCK_SORT_DESCENDING, _("Descending by file size"), NULL, _("Descending by file size"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_FILE_DURATION, GTK_STOCK_SORT_ASCENDING, _("Ascending by duration"), NULL, _("Ascending by duration"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_FILE_DURATION, GTK_STOCK_SORT_DESCENDING, _("Descending by duration"), NULL, _("Descending by duration"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_FILE_BITRATE, GTK_STOCK_SORT_ASCENDING, _("Ascending by bitrate"), NULL, _("Ascending by bitrate"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_FILE_BITRATE, GTK_STOCK_SORT_DESCENDING, _("Descending by bitrate"), NULL, _("Descending by bitrate"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_ASCENDING_FILE_SAMPLERATE, GTK_STOCK_SORT_ASCENDING, _("Ascending by samplerate"), NULL, _("Ascending by samplerate"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_SORT_DESCENDING_FILE_SAMPLERATE, GTK_STOCK_SORT_DESCENDING, _("Descending by samplerate"), NULL, _("Descending by samplerate"), G_CALLBACK(Menu_Sort_Action) },
+
+ { AM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window) },
+ { AM_SELECT_ALL_FILES, "easytag-select-all", _("Select All Files"), "<Control>A", _("Select All Files"), G_CALLBACK(Action_Select_All_Files) },
+ { AM_UNSELECT_ALL_FILES, "easytag-unselect-all", _("Unselect All Files"), "<Shift><Control>A", _("Unselect All Files"), G_CALLBACK(Action_Unselect_All_Files) },
+ { AM_INVERT_SELECTION, "easytag-invert-selection", _("Invert Files Selection"), "<Control>I", _("Invert Files Selection"), G_CALLBACK(Action_Invert_Files_Selection) },
+ { AM_DELETE_FILE, GTK_STOCK_DELETE, _("Delete File(s)"), NULL, _("Delete File(s)"), G_CALLBACK(Action_Delete_Selected_Files) },
+ { AM_FIRST, GTK_STOCK_GOTO_FIRST, _("_First File"), "<Control>Home", _("First File"), G_CALLBACK(Action_Select_First_File) },
+ { AM_PREV, GTK_STOCK_GO_BACK, _("_Previous File"), "Page_Up", _("Previous File"), G_CALLBACK(Action_Select_Prev_File) },
+ { AM_NEXT, GTK_STOCK_GO_FORWARD, _("_Next File"), "Page_Down", _("Next File"), G_CALLBACK(Action_Select_Next_File) },
+ { AM_LAST, GTK_STOCK_GOTO_LAST, _("_Last File"), "<Control>End", _("Last File"), G_CALLBACK(Action_Select_Last_File) },
+ // XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2, behaviour is different
+ // and binding Ctrl+C effectively stops the user copying text..
+ { AM_SCAN, "easytag-scan", _("S_can File(s)"), NULL, _("Scan File(s)"), G_CALLBACK(Action_Scan_Selected_Files) },
+ { AM_REMOVE, GTK_STOCK_CLEAR, _("_Remove Tag(s)"), "<Control>R", _("Remove Tag(s)"), G_CALLBACK(Action_Remove_Selected_Tags) },
+ { AM_UNDO, GTK_STOCK_UNDO, _("_Undo Last File(s) Changes"), "<Control>Z", _("Undo Last File(s) Changes"), G_CALLBACK(Action_Undo_Selected_Files) },
+ { AM_REDO, GTK_STOCK_REDO, _("R_edo Last File(s) Changes"), "<Shift><Control>Z", _("Redo Last File(s) Changes"), G_CALLBACK(Action_Redo_Selected_File) },
+ { AM_SAVE, GTK_STOCK_SAVE, _("_Save File(s)"), "<Control>S", _("Save File(s)"), G_CALLBACK(Action_Save_Selected_Files) },
+ { AM_SAVE_FORCED, GTK_STOCK_SAVE, _("_Force Saving File(s)"), "<Shift><Control>S", _("Force Saving File(s)"), G_CALLBACK(Action_Force_Saving_Selected_Files) },
+ { AM_UNDO_HISTORY, GTK_STOCK_UNDO, _("Undo Last Changes"), NULL, _("Undo Last Changes"), G_CALLBACK(Action_Undo_From_History_List) },
+ { AM_REDO_HISTORY, GTK_STOCK_REDO, _("Redo Last Changes"), NULL, _("Redo Last Changes"), G_CALLBACK(Action_Redo_From_History_List) },
+ { AM_QUIT, GTK_STOCK_QUIT, _("_Quit"), "<Control>Q", _("Quit"), G_CALLBACK(Quit_MainWindow) },
+
+ { MENU_BROWSER, NULL, _("_Browser"), NULL, NULL, NULL },
+ { AM_LOAD_HOME_DIR, GTK_STOCK_HOME, _("Go to _Home Directory"), "<Alt>Home", _("Go to Home Directory"), G_CALLBACK(Browser_Load_Home_Directory) },
+ { AM_LOAD_DEFAULT_DIR, GTK_STOCK_HARDDISK, _("Go to _Default Directory"), "<Control>D", _("Go to Default Directory"), G_CALLBACK(Browser_Load_Default_Directory) },
+ { AM_SET_PATH_AS_DEFAULT, GTK_STOCK_JUMP_TO, _("Set _Current Path as Default"), NULL, _("Set Current Path as Default"), G_CALLBACK(Set_Current_Path_As_Default) },
+ { AM_TREE_OR_ARTISTALBUM_VIEW, "easytag-artist-album", _("Tree View | Artist-Album View"), NULL, _("Tree View | Artist-Album View"), G_CALLBACK(Menu_Sort_Action) },
+ { AM_RENAME_DIR, GTK_STOCK_INDEX, _("Rename Directory ..."), "F2", _("Rename Directory ..."), G_CALLBACK(Browser_Open_Rename_Directory_Window) },
+ { AM_RELOAD_DIRECTORY, GTK_STOCK_REFRESH, _("Reload Directory"), "F5", _("Reload Directory"), G_CALLBACK(Browser_Reload_Directory) },
+ { AM_BROWSE_DIRECTORY_WITH, GTK_STOCK_EXECUTE, _("Browse Directory with ..."), NULL, _("Browse Directory with ..."), G_CALLBACK(Browser_Open_Run_Program_Tree_Window) },
+ { AM_COLLAPSE_TREE, NULL, _("_Collapse Tree"), "<Control><Shift>C", _("_Collapse Tree"), G_CALLBACK(Browser_Tree_Collapse) },
+ { AM_INITIALIZE_TREE, GTK_STOCK_REFRESH, _("_Refresh Tree"), "<Control><Shift>R", _("_Refresh Tree"), G_CALLBACK(Browser_Tree_Rebuild) },
+
+ { MENU_SCANNER, NULL, _("S_canner"), NULL, NULL, NULL },
+ { AM_SCANNER_FILL_TAG, "easytag-scan", _("_Fill Tag(s) ..."), NULL, _("Fill Tag(s) ..."), G_CALLBACK(Scan_Use_Fill_Tag_Scanner) },
+ { AM_SCANNER_RENAME_FILE, "easytag-scan", _("_Rename File(s) and Directory ..."), NULL, _("Rename File(s) and Directory ..."),G_CALLBACK(Scan_Use_Rename_File_Scanner) },
+ { AM_SCANNER_PROCESS_FIELDS, "easytag-scan", _("_Process Field(s) ..."), NULL, _("Process Fields(s) ..."), G_CALLBACK(Scan_Use_Process_Fields_Scanner) },
+
+ { MENU_MISC, NULL, _("_Misc"), NULL, NULL, NULL },
+ { AM_SEARCH_FILE, GTK_STOCK_FIND, _("Search _File(s) ..."), "<Control>F", _("Search File(s)..."), G_CALLBACK(Open_Search_File_Window) },
+ { AM_CDDB_SEARCH, GTK_STOCK_CDROM, _("CD Data _Base Search ..."), "<Control>B", _("CDDB Search ..."), G_CALLBACK(Open_Cddb_Window) },
+ { AM_FILENAME_FROM_TXT, GTK_STOCK_OPEN, _("Load Filenames from TXT ..."), "<Alt>T", _("Load Filenames from TXT ..."), G_CALLBACK(Open_Load_Filename_Window) },
+ { AM_WRITE_PLAYLIST, GTK_STOCK_SAVE_AS, _("Write Playlist ..."), "<Alt>W", _("Write Playlist ..."), G_CALLBACK(Open_Write_Playlist_Window) },
+ { AM_RUN_AUDIO_PLAYER, "easytag-sound", _("Run Audio Player"), "<Alt>X", _("Run Audio Player"), G_CALLBACK(Run_Audio_Player_Using_Selection) },
+
+ { MENU_SETTINGS, NULL, _("_Settings"), NULL, NULL, NULL },
+ { AM_OPEN_OPTIONS_WINDOW, GTK_STOCK_PREFERENCES, _("_Preferences ..."), "<Alt>P", _("Preferences ..."), G_CALLBACK(Open_OptionsWindow) },
+
+ { MENU_HELP, NULL, _("_Help"), NULL, NULL, NULL },
+ { AM_OPEN_ABOUT_WINDOW, GTK_STOCK_HELP, _("_About"), NULL, _("About"), G_CALLBACK(Show_About_Window) },
+
+
+ /*
+ * Following items are on toolbar but not on menu
+ */
+ { AM_STOP, GTK_STOCK_STOP, _("Stop the current action"), NULL, _("Stop the current action"), G_CALLBACK(Action_Main_Stop_Button_Pressed) },
+
+
+ /*
+ * Popup menu's Actions
+ */
+ { POPUP_FILE, NULL, _("_File Operations"), NULL, NULL, NULL },
+ { POPUP_SUBMENU_SCANNER, "easytag-scan", _("S_canner"), NULL, NULL, NULL },
+ { POPUP_DIR_RUN_AUDIO, "easytag-sound", _("Run Audio Player"), NULL, _("Run Audio Player"), G_CALLBACK(Run_Audio_Player_Using_Directory) },
+ { AM_ARTIST_RUN_AUDIO_PLAYER, "easytag-sound", _("Run Audio Player"), NULL, _("Run Audio Player"), G_CALLBACK(Run_Audio_Player_Using_Browser_Artist_List) },
+ { AM_ALBUM_RUN_AUDIO_PLAYER, "easytag-sound", _("Run Audio Player"), NULL, _("Run Audio Player"), G_CALLBACK(Run_Audio_Player_Using_Browser_Album_List) },
+ { AM_CDDB_SEARCH_FILE, GTK_STOCK_CDROM, _("CDDB Search File(s)..."), NULL, _("CDDB Search File(s)..."), G_CALLBACK(Cddb_Popup_Menu_Search_Selected_File) },
+ //{ AM_ARTIST_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+ //{ AM_ALBUM_OPEN_FILE_WITH, GTK_STOCK_OPEN, _("Open File(s) with ..."), NULL, _("Open File(s) with ..."), G_CALLBACK(Browser_Open_Run_Program_List_Window??? Browser_Open_Run_Program_Tree_Window???) },
+
+ { AM_LOG_CLEAN, GTK_STOCK_CLEAR, _("Clean Log"), NULL, _("Clean Log"), G_CALLBACK(Log_Clean_Log_List) }
+
+ };
+
+ GtkToggleActionEntry ToggleActionEntries[] =
+ {
+ //{ AM_BROWSE_SUBDIR, GTK_STOCK_INDEX, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, FALSE },
+ { AM_BROWSE_SUBDIR, NULL, _("Browse _Sub-directories"), NULL, _("Browse _Sub-directories"), NULL, BROWSE_SUBDIR },
+#ifndef WIN32 // No sense here for Win32, "hidden" means : starts with a '.'
+ //{ AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), FALSE },
+ { AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"), NULL, _("Show Hidden Directories"), G_CALLBACK(Browser_Tree_Rebuild), BROWSE_HIDDEN_DIR },
+#endif
+ { AM_VIEWMODE_TOGGLE, "easytag-artist-album", _("Show tree browser / Display by Artist and Album"), NULL, _("Show tree browser / Display by Artist and Album"), G_CALLBACK(Action_Select_Browser_Style), FALSE },
+ };
+
+ GError *error = NULL;
+ guint num_menu_entries;
+ guint num_toggle_entries;
+ guint i;
+
+ /* Calculate number of items into the menu */
+ num_menu_entries = G_N_ELEMENTS(ActionEntries);
+ num_toggle_entries = G_N_ELEMENTS(ToggleActionEntries);
+
+ /* Populate quarks list with the entries */
+ for(i = 0; i < num_menu_entries; i++)
+ {
+ Action_Pair* ActionPair = g_malloc0(sizeof(Action_Pair));
+ ActionPair->action = ActionEntries[i].name;
+ ActionPair->quark = g_quark_from_string(ActionPair->action);
+ ActionPairsList = g_list_append(ActionPairsList, ActionPair);
+ }
+
+ for(i = 0; i < num_toggle_entries; i++)
+ {
+ Action_Pair* ActionPair = g_malloc0(sizeof(Action_Pair));
+ ActionPair->action = ToggleActionEntries[i].name;
+ ActionPair->quark = g_quark_from_string(ActionPair->action);
+ ActionPairsList = g_list_append(ActionPairsList, ActionPair);
+ }
+
+ /* UI Management */
+ ActionGroup = gtk_action_group_new("actions");
+ gtk_action_group_add_actions(ActionGroup, ActionEntries, num_menu_entries, NULL);
+ gtk_action_group_add_toggle_actions(ActionGroup, ToggleActionEntries, num_toggle_entries, NULL);
+
+ UIManager = gtk_ui_manager_new();
+ if (!gtk_ui_manager_add_ui_from_string(UIManager, ui_xml, -1, &error))
+ {
+ g_error(_("Could not merge UI, error was: %s\n"), error->message);
+ g_error_free(error);
+ }
+ gtk_ui_manager_insert_action_group(UIManager, ActionGroup, 0);
+ gtk_window_add_accel_group(GTK_WINDOW(MainWindow), gtk_ui_manager_get_accel_group(UIManager));
+
+ /* Menu (not placed in a handlebar) */
+ menubar = gtk_ui_manager_get_widget(UIManager, "/MenuBar");
+ Init_Menu_Bar();
+ gtk_widget_show_all(menubar);
+
+ /* Toolbar is placed in a handlebar */
+ toolbar = gtk_handle_box_new();
+ toolbarwidget = gtk_ui_manager_get_widget(UIManager, "/ToolBar");
+ gtk_container_add(GTK_CONTAINER(toolbar), toolbarwidget);
+ gtk_toolbar_set_style(GTK_TOOLBAR(toolbarwidget), GTK_TOOLBAR_ICONS);
+ gtk_widget_show_all(toolbar);
+
+ *pptoolbar = toolbar;
+ *ppmenubar = menubar;
+}
+
+
+/*
+ * Initialize some items of the main menu
+ */
+void Init_Menu_Bar (void)
+{
+
+ CheckMenuItemBrowseSubdirMainMenu = gtk_ui_manager_get_widget(UIManager, "/MenuBar/BrowserMenu/BrowseSubdir");
+ if (CheckMenuItemBrowseSubdirMainMenu)
+ {
+ // Link to update BROWSE_SUBDIR when changed
+ g_signal_connect(G_OBJECT(CheckMenuItemBrowseSubdirMainMenu),"toggled",
+ G_CALLBACK(Check_Menu_Item_Toggled_Browse_Subdir),NULL);
+ }
+
+ CheckMenuItemBrowseHiddenDirMainMenu = gtk_ui_manager_get_widget(UIManager, "/MenuBar/BrowserMenu/BrowseHiddenDir");
+ if (CheckMenuItemBrowseHiddenDirMainMenu)
+ {
+ // Link to update BROWSE_HIDDEN_DIR when changed
+ g_signal_connect(G_OBJECT(CheckMenuItemBrowseHiddenDirMainMenu),"toggled",
+ G_CALLBACK(Check_Menu_Item_Toggled_Browse_Hidden_Dir),NULL);
+ }
+
+ /* If entry not implemented */
+ //{GtkWidget *widget = gtk_item_factory_get_widget_by_action(ItemFactory,FILENAME_FROM_TXT);
+ //if (widget) gtk_widget_set_sensitive(widget,FALSE);}
+}
+
+/*
+ * Callback to update state of check button to browse subdir into menu
+ */
+void Check_Menu_Item_Toggled_Browse_Subdir (GtkWidget *checkmenuitem)
+{
+ BROWSE_SUBDIR = GTK_CHECK_MENU_ITEM(checkmenuitem)->active;
+ Check_Menu_Item_Update_Browse_Subdir();
+}
+void Check_Menu_Item_Update_Browse_Subdir (void)
+{
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(CheckMenuItemBrowseSubdirMainMenu),BROWSE_SUBDIR);
+}
+
+/*
+ * Callback to update state of check button to show hiddendirectories into menu
+ */
+void Check_Menu_Item_Toggled_Browse_Hidden_Dir (GtkWidget *checkmenuitem)
+{
+ BROWSE_HIDDEN_DIR = GTK_CHECK_MENU_ITEM(checkmenuitem)->active;
+ Check_Menu_Item_Update_Browse_Hidden_Dir();
+
+ // Reload directory, in case we have changed BROWSE_HIDDEN_DIR
+ //Browser_Tree_Rebuild(NULL); // Commented, as already done in GtkToggleActionEntry for AM_BROWSER_HIDDEN_DIR
+}
+void Check_Menu_Item_Update_Browse_Hidden_Dir (void)
+{
+#ifndef WIN32
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(CheckMenuItemBrowseHiddenDirMainMenu),BROWSE_HIDDEN_DIR);
+#endif
+}
+
+
+
+
+
+
+
+
+
+/*
+ * Status bar functions
+ */
+GtkWidget *Create_Status_Bar (void)
+{
+ StatusBar = gtk_statusbar_new();
+ /* Specify a size to avoid statubar resizing if the message is too long */
+ gtk_widget_set_size_request(StatusBar, 200, -1);
+ /* Create serie */
+ StatusBarContext = gtk_statusbar_get_context_id(GTK_STATUSBAR(StatusBar),"Messages");
+
+ Statusbar_Message(_("Ready to start..."),TRUE);
+
+ gtk_widget_show(StatusBar);
+ return StatusBar;
+}
+
+gboolean Statusbar_Stop_Timer (void)
+{
+ gtk_statusbar_pop(GTK_STATUSBAR(StatusBar),StatusBarContext);
+ return FALSE; /* Stop the timer */
+}
+
+void Statusbar_Start_Timer (void)
+{
+ Statusbar_Remove_Timer();
+ StatusbarTimerId = g_timeout_add(4000,(GtkFunction)Statusbar_Stop_Timer,NULL);
+}
+
+void Statusbar_Remove_Timer (void)
+{
+ if (StatusbarTimerId)
+ {
+ g_source_remove(StatusbarTimerId);
+ StatusbarTimerId = 0;
+ }
+}
+
+/*
+ * Send a message to the status bar
+ * - with_timer: if TRUE, the message will be displayed during 4s
+ * if FALSE, the message will be displayed up to the next posted message
+ */
+void Statusbar_Message (gchar *message, gint with_timer)
+{
+ gchar *msg_temp;
+ if (!StatusBar) return;
+
+ /* Validate UTF8 */
+ if (!g_utf8_validate(message, -1, NULL))
+ msg_temp = convert_to_utf8(message);
+ else
+ msg_temp = g_strdup(message);
+
+ /* Remove a running timer */
+ Statusbar_Remove_Timer();
+
+ /* Pop last message */
+ gtk_statusbar_pop(GTK_STATUSBAR(StatusBar),StatusBarContext);
+
+ /* Push the given message */
+ gtk_statusbar_push(GTK_STATUSBAR(StatusBar),StatusBarContext,msg_temp);
+
+ g_free(msg_temp);
+
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ if (with_timer)
+ Statusbar_Start_Timer();
+}
+
+
+
+
+
+
+
+/*
+ * Progress bar
+ */
+GtkWidget *Create_Progress_Bar (void)
+{
+ ProgressBar = gtk_progress_bar_new();
+
+ gtk_widget_show(ProgressBar);
+ return ProgressBar;
+}
diff --git a/src/bar.h b/src/bar.h
new file mode 100755
index 0000000..846c2f0
--- /dev/null
+++ b/src/bar.h
@@ -0,0 +1,165 @@
+/* bar.h - 2000/05/05 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __BAR_H__
+#define __BAR_H__
+
+/***************
+ * Declaration *
+ ***************/
+GtkWidget *MenuBar;
+GtkWidget *ProgressBar;
+GtkUIManager *UIManager;
+GtkActionGroup *ActionGroup;
+guint StatusBarContext;
+
+GtkWidget *CheckMenuItemBrowseSubdirMainMenu;
+GtkWidget *CheckMenuItemBrowseHiddenDirMainMenu;
+
+#define MENU_FILE "FileMenu"
+#define MENU_BROWSER "BrowserMenu"
+#define MENU_SCANNER "ScannerMenu"
+#define MENU_MISC "MiscMenu"
+#define MENU_SETTINGS "SettingsMenu"
+#define MENU_HELP "HelpMenu"
+
+#define MENU_FILE_SORT_TAG "SortTagMenu"
+#define MENU_FILE_SORT_PROP "SortPropMenu"
+#define MENU_SORT_TAG_PATH "FileMenu/SortTagMenu"
+#define MENU_SORT_PROP_PATH "FileMenu/SortPropMenu"
+
+#define POPUP_FILE "FilePopup"
+#define POPUP_DIR "DirPopup"
+#define POPUP_SUBMENU_SCANNER "ScannerSubpopup"
+#define POPUP_DIR_RUN_AUDIO "DirPopupRunAudio"
+#define POPUP_LOG "LogPopup"
+
+#define AM_PREV "PreviousFile"
+#define AM_NEXT "NextFile"
+#define AM_FIRST "FirstFile"
+#define AM_LAST "LastFile"
+#define AM_SCAN "ScanFile"
+#define AM_REMOVE "RemoveTag"
+#define AM_UNDO "UndoFile"
+#define AM_REDO "RedoFile"
+#define AM_UNDO_HISTORY "Undo"
+#define AM_REDO_HISTORY "Redo"
+#define AM_SAVE "SaveFile"
+#define AM_SAVE_FORCED "SaveFileForced"
+#define AM_SELECT_ALL_FILES "SelAll"
+#define AM_UNSELECT_ALL_FILES "UnselAll"
+#define AM_INVERT_SELECTION "SelInv"
+#define AM_DELETE_FILE "DeleteFile"
+#define AM_LOAD_HOME_DIR "GoToHome"
+#define AM_LOAD_DEFAULT_DIR "GoToDefaultPath"
+#define AM_SET_PATH_AS_DEFAULT "SetDefaultPath"
+#define AM_RENAME_DIR "RenameDir"
+#define AM_BROWSE_SUBDIR "BrowseSubdir"
+#define AM_BROWSER_HIDDEN_DIR "BrowseHiddenDir"
+#define AM_COLLAPSE_TREE "CollapseTree"
+#define AM_INITIALIZE_TREE "RefreshTree"
+#define AM_RELOAD_DIRECTORY "ReloadDir"
+#define AM_TREE_OR_ARTISTALBUM_VIEW "ViewMode"
+#define AM_BROWSE_DIRECTORY_WITH "BrowseDir"
+#define AM_OPEN_FILE_WITH "OpenFile"
+#define AM_OPEN_OPTIONS_WINDOW "Preferences"
+#define AM_SCANNER_FILL_TAG "FillTag"
+#define AM_SCANNER_RENAME_FILE "RenameFile"
+#define AM_SCANNER_PROCESS_FIELDS "ProcessFields"
+#define AM_SEARCH_FILE "SearchFile"
+#define AM_CDDB_SEARCH_FILE "CDDBSearchFile"
+#define AM_CDDB_SEARCH "CDDBSearch"
+#define AM_FILENAME_FROM_TXT "LoadFilenames"
+#define AM_WRITE_PLAYLIST "WritePlaylist"
+#define AM_RUN_AUDIO_PLAYER "RunAudio"
+#define AM_OPEN_ABOUT_WINDOW "About"
+#define AM_QUIT "Quit"
+
+#define AM_ARTIST_RUN_AUDIO_PLAYER "ArtistRunAudio"
+#define AM_ARTIST_OPEN_FILE_WITH "ArtistOpenFile"
+#define AM_ALBUM_RUN_AUDIO_PLAYER "AlbumRunAudio"
+#define AM_ALBUM_OPEN_FILE_WITH "AlbumOpenFile"
+
+#define AM_LOG_CLEAN "CleanLog"
+
+#define AM_STOP "Stop"
+#define AM_VIEWMODE_TOGGLE "ViewModeToggle"
+
+#define AM_SORT_ASCENDING_FILENAME "SortFilenameAsc"
+#define AM_SORT_DESCENDING_FILENAME "SortFilenameDesc"
+#define AM_SORT_ASCENDING_CREATION_DATE "SortDateAsc"
+#define AM_SORT_DESCENDING_CREATION_DATE "SortDateDesc"
+#define AM_SORT_ASCENDING_TRACK_NUMBER "SortTrackNumAsc"
+#define AM_SORT_DESCENDING_TRACK_NUMBER "SortTrackNumDesc"
+#define AM_SORT_ASCENDING_TITLE "SortTitleAsc"
+#define AM_SORT_DESCENDING_TITLE "SortTitleDesc"
+#define AM_SORT_ASCENDING_ARTIST "SortArtistAsc"
+#define AM_SORT_DESCENDING_ARTIST "SortArtistDesc"
+#define AM_SORT_ASCENDING_ALBUM "SortAlbumAsc"
+#define AM_SORT_DESCENDING_ALBUM "SortAlbumDesc"
+#define AM_SORT_ASCENDING_YEAR "SortYearAsc"
+#define AM_SORT_DESCENDING_YEAR "SortYearDesc"
+#define AM_SORT_ASCENDING_GENRE "SortGenreAsc"
+#define AM_SORT_DESCENDING_GENRE "SortGenreDesc"
+#define AM_SORT_ASCENDING_COMMENT "SortCommentAsc"
+#define AM_SORT_DESCENDING_COMMENT "SortCommentDesc"
+#define AM_SORT_ASCENDING_COMPOSER "SortComposerAsc"
+#define AM_SORT_DESCENDING_COMPOSER "SortComposerDesc"
+#define AM_SORT_ASCENDING_ORIG_ARTIST "SortOrigArtistAsc"
+#define AM_SORT_DESCENDING_ORIG_ARTIST "SortOrigArtistDesc"
+#define AM_SORT_ASCENDING_COPYRIGHT "SortCopyrightAsc"
+#define AM_SORT_DESCENDING_COPYRIGHT "SortCopyrightDesc"
+#define AM_SORT_ASCENDING_URL "SortUrlAsc"
+#define AM_SORT_DESCENDING_URL "SortUrlDesc"
+#define AM_SORT_ASCENDING_ENCODED_BY "SortEncodedByAsc"
+#define AM_SORT_DESCENDING_ENCODED_BY "SortEncodedByDesc"
+#define AM_SORT_ASCENDING_FILE_TYPE "SortTypeAsc"
+#define AM_SORT_DESCENDING_FILE_TYPE "SortTypeDesc"
+#define AM_SORT_ASCENDING_FILE_SIZE "SortSizeAsc"
+#define AM_SORT_DESCENDING_FILE_SIZE "SortSizeDesc"
+#define AM_SORT_ASCENDING_FILE_DURATION "SortDurationAsc"
+#define AM_SORT_DESCENDING_FILE_DURATION "SortDurationDesc"
+#define AM_SORT_ASCENDING_FILE_BITRATE "SortBitrateAsc"
+#define AM_SORT_DESCENDING_FILE_BITRATE "SortBitrateDesc"
+#define AM_SORT_ASCENDING_FILE_SAMPLERATE "SortSamplerateAsc"
+#define AM_SORT_DESCENDING_FILE_SAMPLERATE "SortSamplerateDesc"
+
+typedef struct _Action_Pair Action_Pair;
+struct _Action_Pair {
+ const gchar *action;
+ GQuark quark;
+};
+
+/**************
+ * Prototypes *
+ **************/
+
+void Create_UI (GtkWidget **menubar, GtkWidget **toolbar);
+GtkWidget *Create_Status_Bar (void);
+void Statusbar_Message (gchar *message, gint with_timer);
+GtkWidget *Create_Progress_Bar (void);
+
+void Check_Menu_Item_Toggled_Browse_Subdir (GtkWidget *checkmenuitem);
+void Check_Menu_Item_Update_Browse_Subdir (void);
+void Check_Menu_Item_Toggled_Browse_Hidden_Dir (GtkWidget *checkmenuitem);
+void Check_Menu_Item_Update_Browse_Hidden_Dir (void);
+
+#endif /* __BAR_H__ */
diff --git a/src/browser.c b/src/browser.c
new file mode 100755
index 0000000..e807e7a
--- /dev/null
+++ b/src/browser.c
@@ -0,0 +1,4084 @@
+/* browser.c - 2000/04/28 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+/* Some parts of this browser are taken from:
+ * XMMS - Cross-platform multimedia player
+ * Copyright (C) 1998-1999 Peter Alm, Mikael Alm, Olle Hallnas,
+ * Thomas Nilsson and 4Front Technologies
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdk.h>
+#include <glib/gi18n-lib.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <dirent.h>
+#include <string.h>
+#include <stdio.h>
+#include <errno.h>
+
+#include "easytag.h"
+#include "browser.h"
+#include "et_core.h"
+#include "scan.h"
+#include "msgbox.h"
+#include "bar.h"
+#include "log.h"
+#include "misc.h"
+#include "setting.h"
+#include "charset.h"
+#include "dlm.h"
+
+#include <assert.h>
+
+#ifdef WIN32
+# include <windows.h>
+# include "win32/win32dep.h"
+#endif
+
+/* Pixmaps */
+#include "../pixmaps/opened_folder.xpm"
+#include "../pixmaps/closed_folder.xpm"
+#include "../pixmaps/closed_folder_locked.xpm"
+#ifdef WIN32
+#include "../pixmaps/ram_disk.xpm"
+#endif
+
+
+
+/****************
+ * Declarations *
+ ****************/
+
+// Pixmaps
+static GdkPixbuf *opened_folder_pixmap = NULL, *closed_folder_pixmap, *closed_folder_locked_pixmap;
+#ifdef WIN32
+static GdkPixbuf *harddrive_pixmap, *removable_pixmap, *cdrom_pixmap, *network_pixmap, *ramdisk_pixmap;
+#endif
+
+GtkWidget *BrowserTree; // Tree of directories
+GtkTreeStore *directoryTreeModel;
+GtkWidget *BrowserList; // List of files
+GtkListStore *fileListModel;
+GtkWidget *BrowserLabel;
+GtkWidget *BrowserButton;
+GtkWidget *BrowserNoteBook;
+GtkWidget *BrowserArtistList;
+GtkListStore *artistListModel;
+GtkWidget *BrowserAlbumList;
+GtkListStore *albumListModel;
+gchar *BrowserCurrentPath = NULL; // Path selected in the browser area (BrowserEntry or BrowserTree)
+
+GtkListStore *RunProgramModel;
+
+GtkWidget *RunProgramTreeWindow = NULL;
+GtkWidget *RunProgramListWindow = NULL;
+
+// The Rename Directory window
+GtkWidget *RenameDirectoryWindow = NULL;
+GtkWidget *RenameDirectoryCombo;
+GtkWidget *RenameDirectoryWithMask;
+GtkWidget *RenameDirectoryMaskCombo;
+GtkListStore *RenameDirectoryMaskModel = NULL;
+GtkWidget *RenameDirectoryMaskStatusIconBox;
+GtkWidget *RenameDirectoryPreviewLabel = NULL;
+
+guint blrs_idle_handler_id = 0;
+guint blru_idle_handler_id = 0;
+guint bl_row_selected;
+
+ET_File *LastBrowserListETFileSelected; // The last ETFile selected in the BrowserList
+
+
+gchar *Rename_Directory_Masks [] =
+{
+ "%a - %b",
+ "%a_-_%b",
+ "%a - %b (%y) - %g",
+ "%a_-_%b_(%y)_-_%g",
+ "VA - %b (%y)",
+ "VA_-_%b_(%y)",
+ NULL
+};
+
+
+/**************
+ * Prototypes *
+ **************/
+
+gboolean Browser_Tree_Key_Press (GtkWidget *tree, GdkEvent *event, gpointer data);
+void Browser_Tree_Set_Node_Visible (GtkWidget *directoryView, GtkTreePath * path);
+void Browser_List_Set_Row_Visible (GtkTreeModel *treeModel, GtkTreeIter *rowIter);
+void Browser_Tree_Disable (void);
+void Browser_Tree_Enable (void);
+void Browser_Tree_Initialize (void);
+gboolean Browser_Tree_Node_Selected (GtkTreeSelection *selection, gpointer user_data);
+void Browser_Tree_Rename_Directory (gchar *last_path, gchar *new_path);
+void Browser_Tree_Handle_Rename (GtkTreeIter *parentnode, gchar *old_path, gchar *new_path);
+
+static gint Browser_List_Key_Press (GtkWidget *list, GdkEvent *event, gpointer data);
+gboolean Browser_List_Button_Press (GtkTreeView *treeView, GdkEventButton *event);
+void Browser_List_Disable (void);
+void Browser_List_Enable (void);
+void Browser_List_Row_Selected (GtkTreeSelection * selection, gpointer data);
+gint Browser_List_Sort_Func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data);
+void Browser_List_Select_All_Files (void);
+void Browser_List_Unselect_All_Files (void);
+void Browser_List_Invert_File_Selection (void);
+
+void Browser_Entry_Activated (void);
+void Browser_Entry_Disable (void);
+void Browser_Entry_Enable (void);
+
+void Browser_Button_Clicked (void);
+
+void Browser_Artist_List_Load_Files (ET_File *etfile_to_select);
+void Browser_Artist_List_Row_Selected (GtkTreeSelection *selection, gpointer data);
+void Browser_Artist_List_Set_Row_Appearance(GtkTreeIter *row);
+
+void Browser_Album_List_Load_Files (GList *albumlist, ET_File *etfile_to_select);
+void Browser_Album_List_Row_Selected (GtkTreeSelection *selection, gpointer data);
+void Browser_Album_List_Set_Row_Appearance(GtkTreeIter *row);
+
+gchar *Browser_Get_Current_Path (void);
+void Browser_Update_Current_Path (gchar *path);
+void Browser_Load_Home_Directory (void);
+void Browser_Load_Default_Directory (void);
+void Browser_Reload_Directory (void);
+
+gint Browser_Win32_Get_Drive_Root (gchar *drive, GtkTreeIter *rootNode, GtkTreePath **rootPath);
+
+static gboolean check_for_subdir (gchar *path);
+
+GtkTreePath *Find_Child_Node(GtkTreeIter *parent, gchar *searchtext);
+
+gboolean Check_For_Access_Permission (gchar *path);
+
+static void expand_cb (GtkWidget *tree, GtkTreeIter *iter, GtkTreePath *path, gpointer data);
+static void collapse_cb (GtkWidget *tree, GtkTreeIter *iter, GtkTreePath *treePath, gpointer data);
+
+/* Pop up menus */
+gboolean Browser_Popup_Menu_Handler (GtkMenu *menu, GdkEventButton *event);
+
+/* For window to rename a directory */
+void Browser_Open_Rename_Directory_Window (void);
+void Destroy_Rename_Directory_Window (void);
+void Rename_Directory (void);
+gboolean Rename_Directory_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+void Rename_Directory_With_Mask_Toggled (void);
+
+/* For window to run a program with the directory */
+void Browser_Open_Run_Program_Tree_Window (void);
+void Destroy_Run_Program_Tree_Window (void);
+gboolean Run_Program_Tree_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+void Run_Program_With_Directory (GtkObject *combobox);
+
+/* For window to run a program with the file */
+void Browser_Open_Run_Program_List_Window (void);
+void Destroy_Run_Program_List_Window (void);
+gboolean Run_Program_List_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+void Run_Program_With_Selected_Files (GtkObject *combobox);
+
+gboolean Run_Program (gchar *program_name, GList *args_list);
+
+
+
+/*************
+ * Functions *
+ *************/
+/*
+ * Load home directory
+ */
+void Browser_Load_Home_Directory (void)
+{
+ Browser_Tree_Select_Dir(HOME_VARIABLE);
+}
+
+
+/*
+ * Load default directory
+ */
+void Browser_Load_Default_Directory (void)
+{
+ gchar *temp;
+ temp = g_strdup(DEFAULT_PATH_TO_MP3);
+
+ if (temp && g_utf8_strlen(temp, -1)>0)
+ {
+ Browser_Tree_Select_Dir(temp);
+ } else
+ {
+ g_free(temp);
+ temp = g_strdup(HOME_VARIABLE);
+ Browser_Tree_Select_Dir(HOME_VARIABLE);
+ }
+ g_free(temp);
+}
+
+
+/*
+ * Get the path from the selected node (row) in the browser
+ * Warning: return NULL if no row selected int the tree.
+ * Remember to free the value returned from this function!
+ */
+gchar *Browser_Tree_Get_Path_Of_Selected_Node (void)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter selectedIter;
+ gchar *path;
+
+ if (!BrowserTree) return NULL;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserTree));
+ if (selection
+ && gtk_tree_selection_get_selected(selection, NULL, &selectedIter))
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(directoryTreeModel), &selectedIter,
+ TREE_COLUMN_FULL_PATH, &path, -1);
+ return path;
+ }else
+ {
+ return NULL;
+ }
+}
+
+
+/*
+ * Set the 'path' within the variable BrowserCurrentPath.
+ */
+void Browser_Update_Current_Path (gchar *path)
+{
+ /* Be sure that we aren't passing 'BrowserCurrentPath' as parameter of the function :
+ * to avoid some memory problems */
+ if (path == NULL || path == BrowserCurrentPath) return;
+
+ if (BrowserCurrentPath != NULL)
+ g_free(BrowserCurrentPath);
+ BrowserCurrentPath = g_strdup(path);
+
+#ifdef WIN32
+ /* On win32 : "c:\path\to\dir" succeed with stat() for example, while "c:\path\to\dir\" fails */
+ ET_Win32_Path_Remove_Trailing_Backslash(BrowserCurrentPath);
+#endif
+
+ if (strcmp(G_DIR_SEPARATOR_S,BrowserCurrentPath) == 0)
+ gtk_widget_set_sensitive(BrowserButton,FALSE);
+ else
+ gtk_widget_set_sensitive(BrowserButton,TRUE);
+}
+
+
+/*
+ * Return the current path
+ */
+gchar *Browser_Get_Current_Path (void)
+{
+ return BrowserCurrentPath;
+}
+
+/*
+ * Reload the current directory.
+ */
+void Browser_Reload_Directory (void)
+{
+ if (BrowserTree && BrowserCurrentPath != NULL)
+ {
+ // Unselect files, to automatically reload the file of the directory
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserTree));
+ if (selection)
+ {
+ gtk_tree_selection_unselect_all(selection);
+ }
+ Browser_Tree_Select_Dir(BrowserCurrentPath);
+ }
+}
+
+/*
+ * Set the current path (selected node) in browser as default path (within config variable).
+ */
+void Set_Current_Path_As_Default (void)
+{
+ if (DEFAULT_PATH_TO_MP3 != NULL)
+ g_free(DEFAULT_PATH_TO_MP3);
+ DEFAULT_PATH_TO_MP3 = g_strdup(BrowserCurrentPath);
+ Statusbar_Message(_("New default path for files selected"),TRUE);
+}
+
+/*
+ * When you press the key 'enter' in the BrowserEntry to validate the text (browse the directory)
+ */
+void Browser_Entry_Activated (void)
+{
+ const gchar *path_utf8;
+ gchar *path;
+
+ path_utf8 = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(BrowserEntryCombo)->child));
+ Add_String_To_Combo_List(GTK_LIST_STORE(BrowserEntryModel), (gchar *)path_utf8);
+
+ path = filename_from_display(path_utf8);
+
+ Browser_Tree_Select_Dir(path);
+ g_free(path);
+}
+
+/*
+ * Set a text into the BrowserEntry (and don't activate it)
+ */
+void Browser_Entry_Set_Text (gchar *text)
+{
+ if (!text || !BrowserEntryCombo)
+ return;
+
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(BrowserEntryCombo)->child),text);
+}
+
+/*
+ * Button to go to parent directory
+ */
+void Browser_Button_Clicked (void)
+{
+ gchar *parent_dir, *path;
+
+ parent_dir = Browser_Get_Current_Path();
+ if (strlen(parent_dir)>1)
+ {
+ if ( parent_dir[strlen(parent_dir)-1]==G_DIR_SEPARATOR )
+ parent_dir[strlen(parent_dir)-1] = '\0';
+ path = g_path_get_dirname(parent_dir);
+
+ Browser_Tree_Select_Dir(path);
+ g_free(path);
+ }
+}
+
+/*
+ * Set a text into the BrowserLabel
+ */
+void Browser_Label_Set_Text (gchar *text)
+{
+ if (BrowserLabel && text)
+ gtk_label_set_text(GTK_LABEL(BrowserLabel),text?text:"");
+}
+
+/*
+ * Key Press events into browser tree
+ */
+gboolean Browser_Tree_Key_Press (GtkWidget *tree, GdkEvent *event, gpointer data)
+{
+ GdkEventKey *kevent;
+ GtkTreeIter SelectedNode;
+ GtkTreeModel *treeModel;
+ GtkTreeSelection *treeSelection;
+ GtkTreePath *treePath;
+
+ if (!tree) return FALSE;
+
+ treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
+
+ if (event && event->type==GDK_KEY_PRESS)
+ {
+ if (!gtk_tree_selection_get_selected(treeSelection, &treeModel, &SelectedNode))
+ return FALSE;
+
+ kevent = (GdkEventKey *)event;
+ treePath = gtk_tree_model_get_path(GTK_TREE_MODEL(treeModel), &SelectedNode);
+
+ switch(kevent->keyval)
+ {
+ case GDK_KP_Enter: /* Enter key in Num Pad */
+ case GDK_Return: /* 'Normal' Enter key */
+ case GDK_t: /* Expand/Collapse node */
+ case GDK_T: /* Expand/Collapse node */
+ if(gtk_tree_view_row_expanded(GTK_TREE_VIEW(tree), treePath))
+ gtk_tree_view_collapse_row(GTK_TREE_VIEW(tree), treePath);
+ else
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(tree), treePath, FALSE);
+
+ gtk_tree_path_free(treePath);
+ return TRUE;
+ break;
+
+ case GDK_e: /* Expand node */
+ case GDK_E: /* Expand node */
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(tree), treePath, FALSE);
+ gtk_tree_path_free(treePath);
+ return TRUE;
+ break;
+
+ case GDK_c: /* Collapse node */
+ case GDK_C: /* Collapse node */
+ gtk_tree_view_collapse_row(GTK_TREE_VIEW(tree), treePath);
+ gtk_tree_path_free(treePath);
+ return TRUE;
+ break;
+ }
+ gtk_tree_path_free(treePath);
+ }
+ return FALSE;
+}
+
+/*
+ * Key Press events into browser list
+ */
+gboolean Browser_List_Stop_Timer (guint *flag)
+{
+ *flag = FALSE;
+ return FALSE;
+}
+
+/*
+ * Key press into browser list
+ * - Delete = delete file
+ * Also tries to capture text input and relate it to files
+ */
+gboolean Browser_List_Key_Press (GtkWidget *list, GdkEvent *event, gpointer data)
+{
+ gchar *string, *current_filename = NULL, *current_filename_copy = NULL, *temp;
+ static gchar *key_string = NULL;
+ gint key_string_length;
+ static guint BrowserListTimerId = 0;
+ static gboolean timer_is_running = FALSE;
+ gint row;
+ gboolean valid;
+ GdkEventKey *kevent;
+
+ GtkTreePath *currentPath = NULL;
+ GtkTreeIter currentIter;
+ ET_File *currentETFile;
+
+ GtkTreeModel *fileListModel;
+ GtkTreeSelection *fileSelection;
+
+
+ if (!list) return FALSE;
+
+ fileListModel = gtk_tree_view_get_model(GTK_TREE_VIEW(list));
+ fileSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list));
+
+ kevent = (GdkEventKey *)event;
+ if (event && event->type==GDK_KEY_PRESS)
+ {
+ if (gtk_tree_selection_count_selected_rows(fileSelection))
+ {
+ switch(kevent->keyval)
+ {
+ case GDK_Delete:
+ Action_Delete_Selected_Files();
+ return TRUE;
+ }
+ }
+ }
+
+ /*
+ * Tries to select file corresponding to the character sequence entered
+ */
+ if ( strlen(kevent->string)>0 ) // Alphanumeric key?
+ {
+ // If the timer is running: concatenate the character of the pressed key, else starts a new string
+ string = key_string;
+ if (timer_is_running)
+ key_string = g_strconcat(key_string,kevent->string,NULL);
+ else
+ key_string = g_strdup(kevent->string);
+ g_free(string);
+
+ // Remove the current timer
+ if (BrowserListTimerId)
+ {
+ g_source_remove(BrowserListTimerId);
+ BrowserListTimerId = 0;
+ }
+ // Start a new timer of 500ms
+ BrowserListTimerId = g_timeout_add(500,(GtkFunction)Browser_List_Stop_Timer,&timer_is_running);
+ timer_is_running = TRUE;
+
+ // Browse the list keeping the current classification
+ for (row=0; row < gtk_tree_model_iter_n_children(fileListModel, NULL); row++)
+ {
+ if (row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, currentPath);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter,
+ LIST_FILE_POINTER, &currentETFile,
+ LIST_FILE_NAME, &current_filename,
+ -1);
+
+ /* UTF-8 comparison */
+ if (g_utf8_validate(key_string, -1, NULL) == FALSE)
+ {
+ temp = convert_to_utf8(key_string);
+ g_free(key_string);
+ key_string = temp;
+ }
+
+ key_string_length = g_utf8_strlen(key_string, -1);
+ current_filename_copy = g_malloc(strlen(current_filename) + 1);
+ g_utf8_strncpy(current_filename_copy, current_filename, key_string_length);
+
+ temp = g_utf8_casefold(current_filename_copy, -1);
+ g_free(current_filename_copy);
+ current_filename_copy = temp;
+
+ temp = g_utf8_casefold(key_string, -1);
+ g_free(key_string);
+ key_string = temp;
+
+ if (g_utf8_collate(current_filename_copy,key_string)==0 )
+ {
+ if (!gtk_tree_selection_iter_is_selected(fileSelection,&currentIter))
+ gtk_tree_selection_select_iter(fileSelection,&currentIter);
+
+ g_free(current_filename);
+ break;
+ }
+ g_free(current_filename);
+ }
+ }
+ g_free(current_filename_copy);
+ gtk_tree_path_free(currentPath);
+ }
+ return FALSE;
+}
+
+/*
+ * Action for double/triple click
+ */
+gboolean Browser_List_Button_Press (GtkTreeView *treeView, GdkEventButton *event)
+{
+ if (!event)
+ return FALSE;
+
+ if (event->type==GDK_2BUTTON_PRESS && event->button==1)
+ {
+ /* Double left mouse click */
+ // Select files of the same directory (usefull when browsing sub-directories)
+ GList *etfilelist = NULL;
+ gchar *path_ref = NULL;
+ gchar *patch_check = NULL;
+ GtkTreePath *currentPath = NULL;
+
+ if (!ETCore->ETFileDisplayed)
+ return FALSE;
+
+ // File taken as reference...
+ path_ref = g_path_get_dirname( ((File_Name *)ETCore->ETFileDisplayed->FileNameCur->data)->value );
+
+ // Search and select files of the same directory
+ etfilelist = g_list_first(ETCore->ETFileDisplayedList);
+ while (etfilelist)
+ {
+ // Path of the file to check if it is in the same directory
+ patch_check = g_path_get_dirname( ((File_Name *)((ET_File *)etfilelist->data)->FileNameCur->data)->value );
+
+ if ( path_ref && patch_check && strcmp(path_ref,patch_check)==0 )
+ {
+ // Use of 'currentPath' to try to increase speed. Indeed, in many
+ // cases, the next file to select, is the next in the list
+ currentPath = Browser_List_Select_File_By_Etfile2((ET_File *)etfilelist->data,TRUE,currentPath);
+ }
+ etfilelist = g_list_next(etfilelist);
+ g_free(patch_check);
+ }
+ g_free(path_ref);
+ if (currentPath)
+ gtk_tree_path_free(currentPath);
+ }else if (event->type==GDK_3BUTTON_PRESS && event->button==1)
+ {
+ /* Triple left mouse click */
+ // Select all files of the list
+ Action_Select_All_Files();
+ }
+ return FALSE;
+}
+
+/*
+ * Collapse (close) tree recursively up to the root node.
+ */
+void Browser_Tree_Collapse (void)
+{
+ GtkTreePath *rootPath;
+
+ if (!BrowserTree) return;
+
+ gtk_tree_view_collapse_all(GTK_TREE_VIEW(BrowserTree));
+
+#ifndef WIN32
+ /* But keep the main directory opened */
+ rootPath = gtk_tree_path_new_first();
+ gtk_tree_view_expand_to_path(GTK_TREE_VIEW(BrowserTree), rootPath);
+ gtk_tree_path_free(rootPath);
+#endif
+}
+
+
+/*
+ * Set a row (or node) visible in the TreeView (by scrolling the tree)
+ */
+void Browser_Tree_Set_Node_Visible (GtkWidget *directoryView, GtkTreePath * path)
+{
+ if (!directoryView) return;
+
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(directoryView), path, NULL, TRUE, 0.5, 0.0);
+}
+
+
+/*
+ * Set a row visible in the file list (by scrolling the list)
+ */
+void Browser_List_Set_Row_Visible (GtkTreeModel *treeModel, GtkTreeIter *rowIter)
+{
+ /*
+ * TODO: Make this only scroll to the row if it is not visible
+ * (like in easytag GTK1)
+ * See function gtk_tree_view_get_visible_rect() ??
+ */
+ GtkTreePath *rowPath;
+
+ if (!treeModel) return;
+
+ rowPath = gtk_tree_model_get_path(treeModel, rowIter);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(BrowserList), rowPath, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(rowPath);
+}
+
+/*
+ * Triggers when a new node in the browser tree is selected
+ * Do file-save confirmation, and then prompt the new dir to be loaded
+ */
+gboolean Browser_Tree_Node_Selected (GtkTreeSelection *selection, gpointer user_data)
+{
+ gchar *pathName, *pathName_utf8;
+ static int counter = 0;
+ GtkTreeIter selectedIter;
+ GtkTreePath *selectedPath;
+
+ if (!gtk_tree_selection_get_selected(selection, NULL, &selectedIter))
+ return TRUE;
+ selectedPath = gtk_tree_model_get_path(GTK_TREE_MODEL(directoryTreeModel), &selectedIter);
+
+ /* Open the node */
+ if (OPEN_SELECTED_BROWSER_NODE)
+ {
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(BrowserTree), selectedPath, FALSE);
+ }
+
+ /* Don't start a new reading, if another one is running... */
+ if (ReadingDirectory == TRUE)
+ return TRUE;
+
+ //Browser_Tree_Set_Node_Visible(BrowserTree, selectedPath);
+ gtk_tree_path_free(selectedPath);
+ gtk_tree_model_get(GTK_TREE_MODEL(directoryTreeModel), &selectedIter,
+ TREE_COLUMN_FULL_PATH, &pathName, -1);
+ if (!pathName)
+ return FALSE;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+ Update_Command_Buttons_Sensivity(); // Not clean to put this here...
+
+ /* Check if all files have been saved before changing the directory */
+ if (ET_Check_If_All_Files_Are_Saved() != TRUE)
+ {
+ GtkWidget *msgbox = NULL;
+ gint button;
+
+ msgbox = msg_box_new(_("Confirm..."),_("Some files have been modified but not "
+ "saved...\nDo you want to save them before changing the directory?"),
+ GTK_STOCK_DIALOG_QUESTION,BUTTON_CANCEL,BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ button = msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ switch (button)
+ {
+ case BUTTON_YES:
+ if (Save_All_Files_With_Answer(FALSE)==-1)
+ return TRUE;
+ break;
+ case BUTTON_NO:
+ break;
+ case BUTTON_CANCEL:
+ case -1:
+ return TRUE;
+ }
+ }
+
+ /* Memorize the current path */
+ Browser_Update_Current_Path(pathName);
+
+ /* Display the selected path into the BrowserEntry */
+ pathName_utf8 = filename_to_display(pathName);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(BrowserEntryCombo)->child), pathName_utf8);
+
+ /* Start to read the directory */
+ /* The first time 'counter' is equal to zero and if we don't want to load
+ * directory on startup, we skip the 'reading', but we must read it */
+ if (LOAD_ON_STARTUP || counter)
+ Read_Directory(pathName);
+ else
+ /* As we don't use the function 'Read_Directory' we must add this function here */
+ Update_Command_Buttons_Sensivity();
+ counter++;
+
+ g_free(pathName);
+ g_free(pathName_utf8);
+ return FALSE;
+}
+
+
+gint Browser_Win32_Get_Drive_Root (gchar *drive, GtkTreeIter *rootNode, GtkTreePath **rootPath)
+{
+ gint root_index;
+ gboolean found = FALSE;
+ GtkTreeIter parentNode;
+ gchar *nodeName;
+
+ gtk_tree_model_get_iter_first(GTK_TREE_MODEL(directoryTreeModel), &parentNode);
+
+ // Find root of path, ie: the drive letter
+ root_index = 0;
+
+ do
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(directoryTreeModel), &parentNode,
+ TREE_COLUMN_FULL_PATH, &nodeName, -1);
+ if (strncasecmp(drive,nodeName, strlen(drive)) == 0)
+ {
+ g_free(nodeName);
+ found = TRUE;
+ break;
+ }
+ root_index++;
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(directoryTreeModel), &parentNode));
+
+ if (!found) return FALSE;
+
+ *rootNode = parentNode;
+ *rootPath = gtk_tree_path_new_from_indices(root_index, -1);
+
+ return TRUE;
+}
+
+
+/*
+ * Browser_Tree_Select_Dir: Select the directory corresponding to the 'path' in
+ * the tree browser, but it doesn't read it!
+ * Check if path is correct before selecting it. And returns 1 on success, else 0.
+ */
+gint Browser_Tree_Select_Dir (gchar *current_path)
+{
+ GtkTreePath *rootPath = NULL;
+ GtkTreeIter parentNode, currentNode;
+ struct stat stbuf;
+ gint index = 1; // Skip the first token as it is NULL due to leading /
+ gchar **parts;
+ gchar *nodeName;
+ gchar *temp;
+
+ if (!BrowserTree) return FALSE;
+
+ /* Load current_path */
+ if(!current_path || !*current_path)
+ {
+ return TRUE;
+ }
+
+#ifdef WIN32
+ /* On win32 : stat("c:\path\to\dir") succeed, while stat("c:\path\to\dir\") fails */
+ ET_Win32_Path_Remove_Trailing_Backslash(current_path);
+#endif
+
+ /* If path is invalid: inform the user, but load the first directories
+ * of the full path while parent directories are valid */
+ if (stat(current_path,&stbuf)==-1)
+ {
+ GtkWidget *msgbox;
+ gchar *msg;
+ gchar *current_path_utf8;
+
+ current_path_utf8 = filename_to_display(current_path);
+ msg = g_strdup_printf(_("The entered path is invalid!:\n%s\n(%s)"),
+ current_path_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(current_path_utf8);
+ return FALSE;
+ }
+
+ Browser_Update_Current_Path(current_path);
+
+ parts = g_strsplit((const gchar*)current_path, G_DIR_SEPARATOR_S, 0);
+
+ // Expand root node (fill parentNode and rootPath)
+#ifdef WIN32
+ if (!Browser_Win32_Get_Drive_Root(parts[0], &parentNode, &rootPath))
+ return FALSE;
+#else
+ gtk_tree_model_get_iter_first(GTK_TREE_MODEL(directoryTreeModel), &parentNode);
+ rootPath = gtk_tree_path_new_first();
+#endif
+ if (rootPath)
+ {
+ gtk_tree_view_expand_to_path(GTK_TREE_VIEW(BrowserTree), rootPath);
+ gtk_tree_path_free(rootPath);
+ }
+
+ while (parts[index]) // it is NULL-terminated
+ {
+ if (strlen(parts[index]) == 0)
+ {
+ index++;
+ continue;
+ }
+
+ if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(directoryTreeModel), &currentNode, &parentNode))
+ {
+ break;
+ }
+ do
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(directoryTreeModel), &currentNode,
+ TREE_COLUMN_FULL_PATH, &temp, -1);
+ nodeName = g_path_get_basename(temp);
+ g_free(temp);
+#ifdef WIN32
+ if (strcasecmp(parts[index],nodeName) == 0)
+#else
+ if (strcmp(parts[index],nodeName) == 0)
+#endif
+ {
+ g_free(nodeName);
+ break;
+ }
+ g_free(nodeName);
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(directoryTreeModel), &currentNode));
+
+ parentNode = currentNode;
+ rootPath = gtk_tree_model_get_path(GTK_TREE_MODEL(directoryTreeModel), &parentNode);
+ if (rootPath)
+ {
+ gtk_tree_view_expand_to_path(GTK_TREE_VIEW(BrowserTree), rootPath);
+ gtk_tree_path_free(rootPath);
+ }
+ index++;
+ }
+
+ rootPath = gtk_tree_model_get_path(GTK_TREE_MODEL(directoryTreeModel), &parentNode);
+ if (rootPath)
+ {
+ gtk_tree_view_expand_to_path(GTK_TREE_VIEW(BrowserTree), rootPath);
+ gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserTree)), rootPath);
+ Browser_Tree_Set_Node_Visible(BrowserTree, rootPath);
+ gtk_tree_path_free(rootPath);
+ }
+
+ g_strfreev(parts);
+ return TRUE;
+}
+
+/*
+ * Callback to select-row event
+ * Displays the file info of the lowest selected file in the right-hand pane
+ */
+void Browser_List_Row_Selected (GtkTreeSelection *selection, gpointer data)
+{
+ GList *selectedRows;
+ GtkTreePath *lastSelected;
+ GtkTreeIter lastFile;
+ ET_File *fileETFile;
+
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+
+ /*
+ * After a file is deleted, this function is called :
+ * So we must handle the situation if no rows are selected
+ */
+ if (g_list_length(selectedRows) == 0)
+ {
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ return;
+ }
+
+ if (!LastBrowserListETFileSelected)
+ {
+ // Returns the last line selected (in ascending line order) to display the item
+ lastSelected = (GtkTreePath *)g_list_last(selectedRows)->data;
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &lastFile, lastSelected))
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &lastFile, LIST_FILE_POINTER, &fileETFile, -1);
+
+ Action_Select_Nth_File_By_Etfile(fileETFile);
+ }else
+ {
+ // The real last selected line
+ Action_Select_Nth_File_By_Etfile(LastBrowserListETFileSelected);
+ }
+
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+}
+
+/*
+ * Loads the specified etfilelist into the browser list
+ * Also supports optionally selecting a specific etfile
+ * but be careful, this does not call Browser_List_Row_Selected !
+ */
+void Browser_List_Load_File_List (GList *etfilelist, ET_File *etfile_to_select)
+{
+ gboolean activate_bg_color = 0;
+ GtkTreeIter row;
+
+ if (!BrowserList) return;
+
+ gtk_list_store_clear(fileListModel);
+ etfilelist = g_list_first(etfilelist);
+ while (etfilelist)
+ {
+ guint fileKey = ((ET_File *)etfilelist->data)->ETFileKey;
+ gchar *current_filename_utf8 = ((File_Name *)((ET_File *)etfilelist->data)->FileNameCur->data)->value_utf8;
+ gchar *basename_utf8 = g_path_get_basename(current_filename_utf8);
+
+ // Change background color when changing directory (the first row must not be changed)
+ if (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL) > 0)
+ {
+ gchar *dir1_utf8;
+ gchar *dir2_utf8;
+ gchar *previous_filename_utf8 = ((File_Name *)((ET_File *)etfilelist->prev->data)->FileNameCur->data)->value_utf8;
+
+ dir1_utf8 = g_path_get_dirname(previous_filename_utf8);
+ dir2_utf8 = g_path_get_dirname(current_filename_utf8);
+
+ if (g_utf8_collate(dir1_utf8, dir2_utf8) != 0)
+ activate_bg_color = !activate_bg_color;
+
+ g_free(dir1_utf8);
+ g_free(dir2_utf8);
+ }
+
+ // File list displays the current filename (name on HD)
+ gtk_list_store_append(fileListModel, &row);
+ gtk_list_store_set(fileListModel, &row,
+ LIST_FILE_NAME, basename_utf8,
+ LIST_FILE_POINTER, etfilelist->data,
+ LIST_FILE_KEY, fileKey,
+ LIST_FILE_OTHERDIR, activate_bg_color,
+ -1);
+ g_free(basename_utf8);
+
+ if (etfile_to_select == etfilelist->data)
+ {
+ Browser_List_Select_File_By_Iter(&row, TRUE);
+ //ET_Display_File_Data_To_UI(etfilelist->data);
+ }
+
+ // Set appearance of the row
+ Browser_List_Set_Row_Appearance(&row);
+
+ etfilelist = g_list_next(etfilelist);
+ }
+}
+
+
+/*
+ * Update state of files in the list after changes (without clearing the list model!)
+ * - Refresh filename is file saved,
+ * - Change color is something change on the file
+ */
+void Browser_List_Refresh_Whole_List (void)
+{
+ ET_File *ETFile;
+ //GtkTreeIter iter;
+ GtkTreePath *currentPath = NULL;
+ GtkTreeIter iter;
+ gint row;
+ gchar *current_basename_utf8;
+ gboolean valid;
+ GtkWidget *TBViewMode;
+
+ if (!ETCore->ETFileDisplayedList || !BrowserList ||
+ gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL) == 0)
+ {
+ return;
+ }
+
+ TBViewMode = gtk_ui_manager_get_widget(UIManager, "/ToolBar/ViewModeToggle");
+
+ // Browse the full list for changes
+ //gtk_tree_model_get_iter_first(GTK_TREE_MODEL(fileListModel), &iter);
+ // g_print("above worked %d rows\n", gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL));
+
+ currentPath = gtk_tree_path_new_first();
+
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &iter, currentPath);
+ while (valid)
+ {
+ // Refresh filename
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &iter,
+ LIST_FILE_POINTER, &ETFile, -1);
+ current_basename_utf8 = g_path_get_basename( ((File_Name *)ETFile->FileNameCur->data)->value_utf8 );
+ gtk_list_store_set(fileListModel, &iter, LIST_FILE_NAME, current_basename_utf8, -1);
+ g_free(current_basename_utf8);
+
+ Browser_List_Set_Row_Appearance(&iter);
+
+ valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(fileListModel), &iter);
+ }
+ gtk_tree_path_free(currentPath);
+
+ // When displaying Artist + Album lists => refresh also rows color
+ if ( gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(TBViewMode)) )
+ {
+
+ for (row=0; row < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(artistListModel), NULL); row++)
+ {
+ if (row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(artistListModel), &iter, currentPath);
+ Browser_Artist_List_Set_Row_Appearance(&iter);
+ }
+ gtk_tree_path_free(currentPath);
+
+
+ for (row=0; row < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(albumListModel), NULL); row++)
+ {
+ if (row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(albumListModel), &iter, currentPath);
+ Browser_Album_List_Set_Row_Appearance(&iter);
+ }
+ gtk_tree_path_free(currentPath);
+ }
+}
+
+
+/*
+ * Update state of one file in the list after changes (without clearing the clist!)
+ * - Refresh filename is file saved,
+ * - Change color is something change on the file
+ */
+void Browser_List_Refresh_File_In_List (ET_File *ETFile)
+{
+ GList *selectedRow = NULL;
+ GtkWidget *TBViewMode;
+ GtkTreeSelection *selection;
+ GtkTreeIter selectedIter;
+ GtkTreePath *currentPath = NULL;
+ ET_File *file;
+ gboolean row_found = FALSE;
+ gchar *current_basename_utf8;
+ gboolean valid;
+ gint row;
+ gchar *artist, *album;
+
+ if (!ETCore->ETFileDisplayedList || !BrowserList || !ETFile ||
+ gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL) == 0)
+ {
+ return;
+ }
+
+ TBViewMode = gtk_ui_manager_get_widget(UIManager, "/ToolBar/ViewModeToggle");
+
+ // Search the row of the modified file to update it (when found: row_found=TRUE)
+ // 1/3. Get position of ETFile in ETFileList
+ if (row_found == FALSE)
+ {
+ valid = gtk_tree_model_iter_nth_child (GTK_TREE_MODEL(fileListModel), &selectedIter, NULL, ETFile->IndexKey-1);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &selectedIter,
+ LIST_FILE_POINTER, &file, -1);
+ if (ETFile->ETFileKey == file->ETFileKey)
+ {
+ row_found = TRUE;
+ }
+ }
+ }
+
+ // 2/3. Try with the selected file in list (works only if we select the same file)
+ if (row_found == FALSE)
+ {
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selectedRow = gtk_tree_selection_get_selected_rows(selection, NULL);
+ if (selectedRow && selectedRow->data != NULL)
+ {
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &selectedIter,
+ (GtkTreePath*) selectedRow->data);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &selectedIter,
+ LIST_FILE_POINTER, &file, -1);
+ if (ETFile->ETFileKey == file->ETFileKey)
+ {
+ row_found = TRUE;
+ }
+ }
+ }
+ g_list_foreach(selectedRow, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRow);
+ }
+
+ // 3/3. Fails, now we browse the full list to find it
+ if (row_found == FALSE)
+ {
+ valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(fileListModel), &selectedIter);
+ while (valid && !row_found)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &selectedIter,
+ LIST_FILE_POINTER, &file, -1);
+ if (ETFile->ETFileKey == file->ETFileKey)
+ {
+ row_found = TRUE;
+ } else
+ {
+ valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(fileListModel), &selectedIter);
+ }
+ }
+ }
+
+ // Error somewhere...
+ if (row_found == FALSE)
+ return;
+
+ // Displayed the filename
+ current_basename_utf8 = g_path_get_basename( ((File_Name *)file->FileNameCur->data)->value_utf8 );
+ gtk_list_store_set(fileListModel, &selectedIter, LIST_FILE_NAME, current_basename_utf8, -1);
+ g_free(current_basename_utf8);
+
+ // Change appearance (line to red) if filename changed
+ Browser_List_Set_Row_Appearance(&selectedIter);
+
+ // When displaying Artist + Album lists => refresh also rows color
+ if ( gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(TBViewMode)) )
+ {
+ gchar *current_artist = ((File_Tag *)ETFile->FileTag->data)->artist;
+ gchar *current_album = ((File_Tag *)ETFile->FileTag->data)->album;
+
+ for (row=0; row < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(artistListModel), NULL); row++)
+ {
+ if (row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(artistListModel), &selectedIter, currentPath);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(artistListModel), &selectedIter, ARTIST_NAME, &artist, -1);
+
+ if ( (!current_artist && !artist)
+ || (current_artist && artist && g_utf8_collate(current_artist,artist)==0) )
+ {
+ // Set color of the row
+ Browser_Artist_List_Set_Row_Appearance(&selectedIter);
+ g_free(artist);
+ break;
+ }
+ g_free(artist);
+ }
+ }
+ gtk_tree_path_free(currentPath); currentPath = NULL;
+
+ //
+ // FIX ME : see also if we must add a new line / or change list of the ETFile
+ //
+ for (row=0; row < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(albumListModel), NULL); row++)
+ {
+ if (row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(albumListModel), &selectedIter, currentPath);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(albumListModel), &selectedIter, ALBUM_NAME, &album, -1);
+
+ if ( (!current_album && !album)
+ || (current_album && album && g_utf8_collate(current_album,album)==0) )
+ {
+ // Set color of the row
+ Browser_Album_List_Set_Row_Appearance(&selectedIter);
+ g_free(album);
+ break;
+ }
+ g_free(album);
+ }
+ }
+ gtk_tree_path_free(currentPath); currentPath = NULL;
+
+ //
+ // FIX ME : see also if we must add a new line / or change list of the ETFile
+ //
+ }
+}
+
+
+/*
+ * Set the appearance of the row
+ */
+void Browser_List_Set_Row_Appearance (GtkTreeIter *iter)
+{
+ ET_File *rowETFile;
+ gboolean otherdir = FALSE;
+ GdkColor *backgroundcolor;
+ gchar *temp;
+
+ if (iter == NULL)
+ return;
+
+ // Get the ETFile reference
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), iter,
+ LIST_FILE_POINTER, &rowETFile,
+ LIST_FILE_OTHERDIR, &otherdir,
+ LIST_FILE_NAME, &temp, -1);
+
+ if (otherdir)
+ backgroundcolor = &LIGHT_BLUE;
+ else
+ backgroundcolor = NULL;
+
+ // Set text to bold/red if filename or tag changed
+ if ( ET_Check_If_File_Is_Saved(rowETFile) == FALSE )
+ {
+ if (CHANGED_FILES_DISPLAYED_TO_BOLD)
+ {
+ gtk_list_store_set(fileListModel, iter, LIST_FONT_WEIGHT, PANGO_WEIGHT_BOLD, LIST_ROW_BACKGROUND, backgroundcolor, LIST_ROW_FOREGROUND, NULL, -1);
+ } else
+ {
+ gtk_list_store_set(fileListModel, iter, LIST_FONT_WEIGHT, PANGO_WEIGHT_NORMAL, LIST_ROW_BACKGROUND, backgroundcolor, LIST_ROW_FOREGROUND, &RED, -1);
+ }
+ } else
+ {
+ gtk_list_store_set(fileListModel, iter, LIST_FONT_WEIGHT, PANGO_WEIGHT_NORMAL, LIST_ROW_BACKGROUND, backgroundcolor, LIST_ROW_FOREGROUND, NULL ,-1);
+ }
+ // Frees allocated item from gtk_tree_model_get...
+ g_free(temp);
+}
+
+
+/*
+ * Remove a file from the list, by ETFile
+ */
+void Browser_List_Remove_File (ET_File *searchETFile)
+{
+ gint row;
+ GtkTreePath *currentPath = NULL;
+ GtkTreeIter currentIter;
+ ET_File *currentETFile;
+ gboolean valid;
+
+ if (searchETFile == NULL)
+ return;
+
+ // Go through the file list until it is found
+ for (row=0; row < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL); row++)
+ {
+ if (row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, currentPath);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter, LIST_FILE_POINTER, &currentETFile, -1);
+
+ if (currentETFile == searchETFile)
+ {
+ // Reinit this value to avoid a crash after deleting files...
+ if (LastBrowserListETFileSelected == searchETFile)
+ LastBrowserListETFileSelected = NULL;
+
+ gtk_list_store_remove(fileListModel, &currentIter);
+ break;
+ }
+ }
+ }
+}
+
+/*
+ * Get ETFile pointer of a file from a Tree Iter
+ */
+ET_File *Browser_List_Get_ETFile_From_Path (GtkTreePath *path)
+{
+ GtkTreeIter iter;
+
+ if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &iter, path))
+ return NULL;
+
+ return Browser_List_Get_ETFile_From_Iter(&iter);
+}
+
+/*
+ * Get ETFile pointer of a file from a Tree Iter
+ */
+ET_File *Browser_List_Get_ETFile_From_Iter (GtkTreeIter *iter)
+{
+ ET_File *etfile;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), iter, LIST_FILE_POINTER, &etfile, -1);
+ return etfile;
+}
+
+
+/*
+ * Select the specified file in the list, by its ETFile
+ */
+void Browser_List_Select_File_By_Etfile (ET_File *searchETFile, gboolean select_it)
+{
+ GtkTreePath *currentPath = NULL;
+
+ currentPath = Browser_List_Select_File_By_Etfile2(searchETFile, select_it, NULL);
+ if (currentPath)
+ gtk_tree_path_free(currentPath);
+}
+/*
+ * Select the specified file in the list, by its ETFile
+ * - startPath : if set : starting path to try increase speed
+ * - returns allocated "currentPath" to free
+ */
+GtkTreePath *Browser_List_Select_File_By_Etfile2 (ET_File *searchETFile, gboolean select_it, GtkTreePath *startPath)
+{
+ gint row;
+ GtkTreePath *currentPath = NULL;
+ GtkTreeIter currentIter;
+ ET_File *currentETFile;
+ gboolean valid;
+
+ if (searchETFile == NULL)
+ return NULL;
+
+ // If the path is used, we try the next item (to increase speed), as it is correct in many cases...
+ if (startPath)
+ {
+ // Try the next path
+ gtk_tree_path_next(startPath);
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, startPath);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter, LIST_FILE_POINTER, &currentETFile, -1);
+ // It is the good file?
+ if (currentETFile == searchETFile)
+ {
+ Browser_List_Select_File_By_Iter(&currentIter, select_it);
+ return startPath;
+ }
+ }
+ }
+
+ // Else, we try the whole list...
+ // Go through the file list until it is found
+ currentPath = gtk_tree_path_new_first();
+ for (row=0; row < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL); row++)
+ {
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, currentPath);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter, LIST_FILE_POINTER, &currentETFile, -1);
+
+ if (currentETFile == searchETFile)
+ {
+ Browser_List_Select_File_By_Iter(&currentIter, select_it);
+ return currentPath;
+ //break;
+ }
+ }
+ gtk_tree_path_next(currentPath);
+ }
+ gtk_tree_path_free(currentPath);
+
+ return NULL;
+}
+
+
+/*
+ * Select the specified file in the list, by an iter
+ */
+void Browser_List_Select_File_By_Iter (GtkTreeIter *rowIter, gboolean select_it)
+{
+ if (!BrowserList) return;
+
+ if (select_it)
+ {
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ if (selection)
+ {
+ g_signal_handlers_block_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ gtk_tree_selection_select_iter(selection, rowIter);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ }
+ }
+ Browser_List_Set_Row_Visible(GTK_TREE_MODEL(fileListModel), rowIter);
+}
+
+/*
+ * Select the specified file in the list, by a string representation of an iter
+ * e.g. output of gtk_tree_model_get_string_from_iter()
+ */
+void Browser_List_Select_File_By_Iter_String (const gchar* stringIter, gboolean select_it)
+{
+ GtkTreeIter iter;
+
+ if (!fileListModel || !BrowserList) return;
+
+ if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(fileListModel), &iter, stringIter))
+ {
+ if (select_it)
+ {
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+
+ // FIX ME : Why signal was blocked if selected? Don't remember...
+ if (selection)
+ {
+ //g_signal_handlers_block_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ gtk_tree_selection_select_iter(selection, &iter);
+ //g_signal_handlers_unblock_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ }
+ }
+ Browser_List_Set_Row_Visible(GTK_TREE_MODEL(fileListModel), &iter);
+ }
+}
+
+/*
+ * Select the specified file in the list, by fuzzy string matching based on
+ * the Damerau-Levenshtein Metric (patch from Santtu Lakkala - 23/08/2004)
+ */
+ET_File *Browser_List_Select_File_By_DLM (const gchar* string, gboolean select_it)
+{
+ GtkTreeIter iter;
+ GtkTreeIter iter2;
+ GtkTreeSelection *selection;
+ ET_File *current_etfile = NULL, *retval = NULL;
+ gchar *current_filename = NULL, *current_title = NULL;
+ int max = 0, this;
+
+ if (!fileListModel || !BrowserList) return NULL;
+
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(fileListModel), &iter))
+ {
+ do
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &iter,
+ LIST_FILE_NAME, &current_filename,
+ LIST_FILE_POINTER, &current_etfile, -1);
+ current_title = ((File_Tag *)current_etfile->FileTag->data)->title;
+
+ if ((this = dlm((current_title ? current_title : current_filename), string)) > max) // See "dlm.c"
+ {
+ max = this;
+ iter2 = iter;
+ retval = current_etfile;
+ }
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(fileListModel), &iter));
+
+ if (select_it)
+ {
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ if (selection)
+ {
+ g_signal_handlers_block_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ gtk_tree_selection_select_iter(selection, &iter2);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ }
+ }
+ Browser_List_Set_Row_Visible(GTK_TREE_MODEL(fileListModel), &iter2);
+ }
+ return retval;
+}
+
+
+/*
+ * Unselect the specified file in the list, by its ETFile
+ */
+void Browser_List_Unselect_File_By_Etfile(ET_File *searchETFile)
+{
+ gint row;
+ GtkTreePath *currentPath = NULL;
+ GtkTreeIter currentIter;
+ ET_File *currentETFile;
+ gboolean valid;
+
+ if (searchETFile == NULL)
+ return;
+
+ // Go through the file list until it is found
+ for (row=0; row < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL); row++)
+ {
+ if (row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &currentIter, currentPath);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &currentIter, LIST_FILE_POINTER, &currentETFile, -1);
+
+ if (currentETFile == searchETFile)
+ {
+ Browser_List_Unselect_File_By_Iter(&currentIter);
+ break;
+ }
+ }
+ }
+}
+
+
+/*
+ * Unselect the specified file, by its iter.
+ */
+void Browser_List_Unselect_File_By_Iter (GtkTreeIter *rowIter)
+{
+ GtkTreeSelection *selection;
+
+ if (!BrowserList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ if (selection)
+ {
+ g_signal_handlers_block_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ gtk_tree_selection_unselect_iter(selection, rowIter);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ }
+}
+
+
+/*
+ * Unselect the specified file in the list, by a string representation of an iter
+ * e.g. output of gtk_tree_model_get_string_from_iter()
+ */
+void Browser_List_Unselect_File_By_Iter_String(const gchar* stringIter)
+{
+ GtkTreeIter iter;
+
+ if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(fileListModel), &iter, stringIter))
+ Browser_List_Unselect_File_By_Iter(&iter);
+}
+
+/*
+ * Clear all entries on the file list
+ */
+void Browser_List_Clear()
+{
+ gtk_list_store_clear(fileListModel);
+ gtk_list_store_clear(artistListModel);
+ gtk_list_store_clear(albumListModel);
+
+}
+
+/*
+ * Refresh the list sorting (call me after SORTING_FILE_MODE has changed)
+ */
+void Browser_List_Refresh_Sort (void)
+{
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(fileListModel), 0, Browser_List_Sort_Func, NULL, NULL);
+}
+
+/*
+ * Intelligently sort the file list based on the current sorting method
+ */
+gint Browser_List_Sort_Func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data)
+{
+ ET_File *ETFile1;
+ ET_File *ETFile2;
+ //gchar *text1;
+ //gchar *text2;
+ gint result = 0;
+
+ gtk_tree_model_get(model, a, LIST_FILE_POINTER, &ETFile1, -1);
+ gtk_tree_model_get(model, b, LIST_FILE_POINTER, &ETFile2, -1);
+ //gtk_tree_model_get(model, a, LIST_FILE_POINTER, &ETFile1, LIST_FILE_NAME, &text1, -1);
+ //gtk_tree_model_get(model, b, LIST_FILE_POINTER, &ETFile2, LIST_FILE_NAME, &text2, -1);
+
+ switch (SORTING_FILE_MODE)
+ {
+ case SORTING_UNKNOWN:
+ case SORTING_BY_ASCENDING_FILENAME:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_FILENAME:
+ result = ET_Comp_Func_Sort_File_By_Descending_Filename(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_TRACK_NUMBER:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Track_Number(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_TRACK_NUMBER:
+ result = ET_Comp_Func_Sort_File_By_Descending_Track_Number(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_CREATION_DATE:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Creation_Date(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_CREATION_DATE:
+ result = ET_Comp_Func_Sort_File_By_Descending_Creation_Date(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_TITLE:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Title(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_TITLE:
+ result = ET_Comp_Func_Sort_File_By_Descending_Title(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_ARTIST:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Artist(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_ARTIST:
+ result = ET_Comp_Func_Sort_File_By_Descending_Artist(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_ALBUM:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Album(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_ALBUM:
+ result = ET_Comp_Func_Sort_File_By_Descending_Album(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_YEAR:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Year(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_YEAR:
+ result = ET_Comp_Func_Sort_File_By_Descending_Year(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_GENRE:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Genre(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_GENRE:
+ result = ET_Comp_Func_Sort_File_By_Descending_Genre(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_COMMENT:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Comment(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_COMMENT:
+ result = ET_Comp_Func_Sort_File_By_Descending_Comment(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_COMPOSER:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Composer(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_COMPOSER:
+ result = ET_Comp_Func_Sort_File_By_Descending_Composer(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_ORIG_ARTIST:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Orig_Artist(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_ORIG_ARTIST:
+ result = ET_Comp_Func_Sort_File_By_Descending_Orig_Artist(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_COPYRIGHT:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Copyright(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_COPYRIGHT:
+ result = ET_Comp_Func_Sort_File_By_Descending_Copyright(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_URL:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Url(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_URL:
+ result = ET_Comp_Func_Sort_File_By_Descending_Url(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_ENCODED_BY:
+ result = ET_Comp_Func_Sort_File_By_Ascending_Encoded_By(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_ENCODED_BY:
+ result = ET_Comp_Func_Sort_File_By_Descending_Encoded_By(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_FILE_TYPE:
+ result = ET_Comp_Func_Sort_File_By_Ascending_File_Type(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_FILE_TYPE:
+ result = ET_Comp_Func_Sort_File_By_Descending_File_Type(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_FILE_SIZE:
+ result = ET_Comp_Func_Sort_File_By_Ascending_File_Size(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_FILE_SIZE:
+ result = ET_Comp_Func_Sort_File_By_Descending_File_Size(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_FILE_DURATION:
+ result = ET_Comp_Func_Sort_File_By_Ascending_File_Duration(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_FILE_DURATION:
+ result = ET_Comp_Func_Sort_File_By_Descending_File_Duration(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_FILE_BITRATE:
+ result = ET_Comp_Func_Sort_File_By_Ascending_File_Bitrate(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_FILE_BITRATE:
+ result = ET_Comp_Func_Sort_File_By_Descending_File_Bitrate(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_ASCENDING_FILE_SAMPLERATE:
+ result = ET_Comp_Func_Sort_File_By_Ascending_File_Samplerate(ETFile1, ETFile2);
+ break;
+ case SORTING_BY_DESCENDING_FILE_SAMPLERATE:
+ result = ET_Comp_Func_Sort_File_By_Descending_File_Samplerate(ETFile1, ETFile2);
+ break;
+ }
+
+ // Frees allocated item from gtk_tree_model_get...
+ //g_free(text1);
+ //g_free(text2);
+
+ return result;
+}
+
+/*
+ * Select all files on the file list
+ */
+void Browser_List_Select_All_Files (void)
+{
+ GtkTreeSelection *selection;
+
+ if (!BrowserList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ if (selection)
+ {
+ // Must block the select signal to avoid the selecting, one by one, of all files in the main files list
+ g_signal_handlers_block_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ gtk_tree_selection_select_all(selection);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection),G_CALLBACK(Browser_List_Row_Selected),NULL);
+ }
+}
+
+/*
+ * Unselect all files on the file list
+ */
+void Browser_List_Unselect_All_Files (void)
+{
+ GtkTreeSelection *selection;
+
+ if (!BrowserList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ if (selection)
+ {
+ gtk_tree_selection_unselect_all(selection);
+ }
+}
+
+/*
+ * Invert the selection of the file list
+ */
+void Browser_List_Invert_File_Selection (void)
+{
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ gboolean valid;
+
+ if (!fileListModel || !BrowserList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ if (selection)
+ {
+ /* Must block the select signal to avoid selecting all files (one by one) in the main files list */
+ g_signal_handlers_block_by_func(G_OBJECT(selection), G_CALLBACK(Browser_List_Row_Selected), NULL);
+ valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(fileListModel), &iter);
+ while (valid)
+ {
+ if (gtk_tree_selection_iter_is_selected(selection, &iter))
+ {
+ gtk_tree_selection_unselect_iter(selection, &iter);
+ } else
+ {
+ gtk_tree_selection_select_iter(selection, &iter);
+ }
+ valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(fileListModel), &iter);
+ }
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection), G_CALLBACK(Browser_List_Row_Selected), NULL);
+ }
+}
+
+
+/*
+ * Load the list of Artists found in the tags
+ */
+gint Browser_Artist_List_Data_Comp_Func_Sort_By_Ascending_Album (ET_File *ETFile1, ET_File *ETFile2)
+{
+ gchar *current_album1 = ((File_Tag *)((GList *)ETFile1->FileTag)->data)->album;
+ gchar *current_album2 = ((File_Tag *)((GList *)ETFile2->FileTag)->data)->album;
+
+ if (!current_album1 && !current_album2)
+ return 0;
+ else if (!current_album1)
+ return -1;
+ else if (!current_album2)
+ return 1;
+ else
+ return strcmp(current_album1,current_album2);
+}
+
+void Browser_Artist_List_Load_Files (ET_File *etfile_to_select)
+{
+ GList *ArtistList;
+ GList *AlbumList;
+ GList *etfilelist;
+ ET_File *etfile;
+ GList *list;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ gchar *artistname, *artist_to_select = NULL;
+
+ if (!BrowserArtistList) return;
+
+ if (etfile_to_select)
+ artist_to_select = ((File_Tag *)etfile_to_select->FileTag->data)->artist;
+
+ gtk_list_store_clear(artistListModel);
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserArtistList));
+
+ ArtistList = ETCore->ETArtistAlbumFileList;
+ while (ArtistList)
+ {
+ gint nbr_files = 0;
+
+ // Insert a line for each artist
+ AlbumList = (GList *)ArtistList->data;
+ etfilelist = (GList *)AlbumList->data;
+ etfile = (ET_File *)etfilelist->data;
+ artistname = ((File_Tag *)etfile->FileTag->data)->artist;
+
+ // Third column text : number of files
+ list = g_list_first(AlbumList);
+ while (list)
+ {
+ nbr_files += g_list_length(g_list_first((GList *)list->data));
+ list = list->next;
+ }
+
+ // Add the new row
+ gtk_list_store_append(artistListModel, &iter);
+ gtk_list_store_set(artistListModel, &iter,
+ ARTIST_NAME, artistname,
+ ARTIST_NUM_ALBUMS, g_list_length(g_list_first(AlbumList)),
+ ARTIST_NUM_FILES, nbr_files,
+ ARTIST_ALBUM_LIST_POINTER, AlbumList,
+ -1);
+
+ // Todo: Use something better than string comparison
+ if ( (!artistname && !artist_to_select)
+ || (artistname && artist_to_select && strcmp(artistname,artist_to_select) == 0) )
+ {
+ GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(artistListModel), &iter);
+
+ g_signal_handlers_block_by_func(G_OBJECT(selection),G_CALLBACK(Browser_Artist_List_Row_Selected),NULL);
+ gtk_tree_selection_select_iter(selection, &iter);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection),G_CALLBACK(Browser_Artist_List_Row_Selected),NULL);
+
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(BrowserArtistList), path, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(path);
+
+ Browser_Album_List_Load_Files(AlbumList, etfile_to_select);
+
+ // Now that we've found the artist, no need to continue searching
+ artist_to_select = NULL;
+ }
+
+ // Set color of the row
+ Browser_Artist_List_Set_Row_Appearance(&iter);
+
+ ArtistList = ArtistList->next;
+ }
+
+ // Select the first line if we weren't asked to select anything
+ if (!etfile_to_select && gtk_tree_model_get_iter_first(GTK_TREE_MODEL(artistListModel), &iter))
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(artistListModel), &iter,
+ ARTIST_ALBUM_LIST_POINTER, &AlbumList,
+ -1);
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+ Browser_Album_List_Load_Files(AlbumList,NULL);
+ }
+}
+
+
+/*
+ * Callback to select-row event
+ */
+void Browser_Artist_List_Row_Selected(GtkTreeSelection* selection, gpointer data)
+{
+ GList *AlbumList;
+ GtkTreeIter iter;
+
+ // Display the relevant albums
+ if(!gtk_tree_selection_get_selected(selection, NULL, &iter))
+ return; // We might be called with no row selected
+
+ // Save the current displayed data
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ gtk_tree_model_get(GTK_TREE_MODEL(artistListModel), &iter, ARTIST_ALBUM_LIST_POINTER, &AlbumList, -1);
+ Browser_Album_List_Load_Files(AlbumList, NULL);
+}
+
+/*
+ * Set the color of the row of BrowserArtistList
+ */
+void Browser_Artist_List_Set_Row_Appearance (GtkTreeIter *iter)
+{
+ GList *AlbumList;
+ GList *etfilelist;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(artistListModel), iter, ARTIST_ALBUM_LIST_POINTER, &AlbumList, -1);
+
+ // Reset the style of the row if one of the files was changed
+ while (AlbumList)
+ {
+ etfilelist = (GList *)AlbumList->data;
+ while (etfilelist)
+ {
+ if ( ET_Check_If_File_Is_Saved((ET_File *)etfilelist->data) == FALSE )
+ {
+ if (CHANGED_FILES_DISPLAYED_TO_BOLD)
+ {
+ // Set the font-style to "bold"
+ gtk_list_store_set(artistListModel, iter, ARTIST_FONT_WEIGHT, PANGO_WEIGHT_BOLD, -1);
+ } else
+ {
+ // Set the background-color to "red"
+ gtk_list_store_set(artistListModel, iter, ARTIST_FONT_WEIGHT, PANGO_WEIGHT_NORMAL, ARTIST_ROW_FOREGROUND, &RED, -1);
+ }
+ break;
+ }
+ etfilelist = etfilelist->next;
+ }
+ AlbumList = AlbumList->next;
+ }
+}
+
+
+
+/*
+ * Load the list of Albums for each Artist
+ */
+void Browser_Album_List_Load_Files (GList *albumlist, ET_File *etfile_to_select)
+{
+ GList *AlbumList;
+ GList *etfilelist = NULL;
+ ET_File *etfile;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ gchar *albumname, *album_to_select = NULL;
+
+ if (!BrowserAlbumList) return;
+
+ if (etfile_to_select)
+ album_to_select = ((File_Tag *)etfile_to_select->FileTag->data)->album;
+
+ gtk_list_store_clear(albumListModel);
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserAlbumList));
+
+ // Create a first row to select all albums of the artist
+ // FIX ME : the attached list must be freed!
+ AlbumList = albumlist;
+ while (AlbumList)
+ {
+ GList *etfilelist_tmp;
+ etfilelist_tmp = (GList *)AlbumList->data;
+ // We must make a copy to not "alter" the initial list by appending an other list
+ etfilelist_tmp = g_list_copy(etfilelist_tmp);
+ etfilelist = g_list_concat(etfilelist, etfilelist_tmp);
+
+ AlbumList = AlbumList->next;
+ }
+ gtk_list_store_append(albumListModel, &iter);
+ gtk_list_store_set(albumListModel, &iter,
+ ALBUM_NAME, _("<All albums>"),
+ ALBUM_NUM_FILES, g_list_length(g_list_first(etfilelist)),
+ ALBUM_ETFILE_LIST_POINTER, etfilelist,
+ -1);
+
+ // Create a line for each album of the artist
+ AlbumList = albumlist;
+ while (AlbumList)
+ {
+ // Insert a line for each album
+ etfilelist = (GList *)AlbumList->data;
+ etfile = (ET_File *)etfilelist->data;
+ albumname = ((File_Tag *)etfile->FileTag->data)->album;
+
+ // Add the new row
+ gtk_list_store_append(albumListModel, &iter);
+ gtk_list_store_set(albumListModel, &iter,
+ ALBUM_NAME, albumname,
+ ALBUM_NUM_FILES, g_list_length(g_list_first(etfilelist)),
+ ALBUM_ETFILE_LIST_POINTER, etfilelist,
+ -1);
+
+ if ( (!albumname && !album_to_select)
+ || (albumname && album_to_select && strcmp(albumname,album_to_select) == 0) )
+ {
+ GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(albumListModel), &iter);
+
+ g_signal_handlers_block_by_func(G_OBJECT(selection),G_CALLBACK(Browser_Album_List_Row_Selected),NULL);
+ gtk_tree_selection_select_iter(selection, &iter);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection),G_CALLBACK(Browser_Album_List_Row_Selected),NULL);
+
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(BrowserAlbumList), path, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(path);
+
+ ET_Set_Displayed_File_List(etfilelist);
+ Browser_List_Load_File_List(etfilelist,etfile_to_select);
+
+ // Now that we've found the album, no need to continue searching
+ album_to_select = NULL;
+ }
+
+ // Set color of the row
+ Browser_Album_List_Set_Row_Appearance(&iter);
+
+ AlbumList = AlbumList->next;
+ }
+
+ // Select the first line if we werent asked to select anything
+ if (!etfile_to_select && gtk_tree_model_get_iter_first(GTK_TREE_MODEL(albumListModel), &iter))
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(albumListModel), &iter,
+ ALBUM_ETFILE_LIST_POINTER, &etfilelist,
+ -1);
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ // Set the attached list as "Displayed List"
+ ET_Set_Displayed_File_List(etfilelist);
+ Browser_List_Load_File_List(etfilelist, NULL);
+
+ // Displays the first item
+ Action_Select_Nth_File_By_Etfile((ET_File *)etfilelist->data);
+ }
+}
+
+/*
+ * Callback to select-row event
+ */
+void Browser_Album_List_Row_Selected (GtkTreeSelection *selection, gpointer data)
+{
+ GList *etfilelist;
+ GtkTreeIter iter;
+
+
+ // We might be called with no rows selected
+ if (!gtk_tree_selection_get_selected(selection, NULL, &iter))
+ return;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(albumListModel), &iter, ALBUM_ETFILE_LIST_POINTER, &etfilelist, -1);
+
+ // Save the current displayed data
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ // Set the attached list as "Displayed List"
+ ET_Set_Displayed_File_List(etfilelist);
+
+ Browser_List_Load_File_List(etfilelist, NULL);
+
+ // Displays the first item
+ Action_Select_Nth_File_By_Etfile((ET_File *)etfilelist->data);
+}
+
+
+/*
+ * Set the color of the row of BrowserAlbumList
+ */
+void Browser_Album_List_Set_Row_Appearance (GtkTreeIter *iter)
+{
+ GList *etfilelist;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(albumListModel), iter, ALBUM_ETFILE_LIST_POINTER, &etfilelist, -1);
+
+ // Reset the style of the row if one of the files was changed
+ while (etfilelist)
+ {
+ if ( ET_Check_If_File_Is_Saved((ET_File *)etfilelist->data) == FALSE )
+ {
+ if (CHANGED_FILES_DISPLAYED_TO_BOLD)
+ {
+ // Set the font-style to "bold"
+ gtk_list_store_set(albumListModel, iter, ALBUM_FONT_WEIGHT, PANGO_WEIGHT_BOLD, -1);
+ } else
+ {
+ // Set the background-color to "red"
+ gtk_list_store_set(albumListModel, iter, ALBUM_ROW_FOREGROUND, &RED, -1);
+ }
+ break;
+ }
+ etfilelist = etfilelist->next;
+ }
+}
+
+void Browser_Display_Tree_Or_Artist_Album_List (void)
+{
+ ET_File *etfile = ETCore->ETFileDisplayed; // ETFile to display again after changing browser view
+ GtkWidget *TBViewMode;
+
+ // Save the current displayed data
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ // Toggle button to switch view
+ TBViewMode = gtk_ui_manager_get_widget(UIManager, "/ToolBar/ViewModeToggle");
+
+ // Button pressed in the toolbar
+ if ( gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(TBViewMode)) )
+ {
+ /*
+ * Artist + Album view
+ */
+
+ // Display Artist + Album lists
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(BrowserNoteBook),1);
+ ET_Create_Artist_Album_File_List();
+ Browser_Artist_List_Load_Files(etfile);
+
+ }else
+ {
+
+ /*
+ * Browser (classic) view
+ */
+ // Set the whole list as "Displayed list"
+ ET_Set_Displayed_File_List(ETCore->ETFileList);
+
+ // Display Tree Browser
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(BrowserNoteBook),0);
+ Browser_List_Load_File_List(ETCore->ETFileDisplayedList, etfile);
+
+ // Displays the first file if nothing specified
+ if (!etfile)
+ {
+ GList *etfilelist = ET_Displayed_File_List_First();
+ if (etfilelist)
+ etfile = (ET_File *)etfilelist->data;
+ Action_Select_Nth_File_By_Etfile(etfile);
+ }
+ }
+
+ //ET_Display_File_Data_To_UI(etfile); // Causes a crash
+}
+
+/*
+ * Disable (FALSE) / Enable (TRUE) all user widgets in the browser area (Tree + List + Entry)
+ */
+void Browser_Area_Set_Sensitive (gboolean activate)
+{
+ gtk_widget_set_sensitive(GTK_WIDGET(BrowserEntryCombo),activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(BrowserTree), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(BrowserList), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(BrowserArtistList),activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(BrowserAlbumList), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(BrowserButton), activate);
+}
+
+
+/*
+ * Browser_Popup_Menu_Handler : displays the corresponding menu
+ */
+gboolean Browser_Popup_Menu_Handler (GtkMenu *menu, GdkEventButton *event)
+{
+ if (event && (event->type==GDK_BUTTON_PRESS) && (event->button == 3))
+ {
+ gtk_menu_popup(menu,NULL,NULL,NULL,NULL,event->button,event->time);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*
+ * Destroy the whole tree up to the root node
+ */
+void Browser_Tree_Initialize (void)
+{
+ GtkTreeIter parent_iter;
+ GtkTreeIter dummy_iter;
+
+ if (!directoryTreeModel) return;
+
+ gtk_tree_store_clear(directoryTreeModel);
+
+#ifdef WIN32
+
+ /* Code strangely familiar with gtkfilesystemwin32.c */
+
+ GdkPixbuf *drive_pixmap;
+ DWORD drives;
+ UINT drive_type;
+ gchar drive[4] = "A:/";
+ gchar drive_backslashed[5] = "A:\\";
+ gchar drive_slashless[3] = "A:";
+ gchar drive_label[256];
+
+ drives = GetLogicalDrives();
+ if (!drives)
+ g_warning ("GetLogicalDrives failed.");
+
+ while (drives && drive[0] <= 'Z')
+ {
+ if (drives & 1)
+ {
+ char *drive_dir_name;
+
+ drive_type = GetDriveType(drive_backslashed);
+
+ // DRIVE_REMOVABLE 2
+ // DRIVE_FIXED 3
+ // DRIVE_REMOTE 4
+ // DRIVE_CDROM 5
+ // DRIVE_RAMDISK 6
+ // DRIVE_UNKNOWN 0
+ // DRIVE_NO_ROOT_DIR 1
+ switch(drive_type)
+ {
+ case DRIVE_FIXED:
+ drive_pixmap = harddrive_pixmap;
+ break;
+ case DRIVE_REMOVABLE:
+ drive_pixmap = removable_pixmap;
+ break;
+ case DRIVE_CDROM:
+ drive_pixmap = cdrom_pixmap;
+ break;
+ case DRIVE_REMOTE:
+ drive_pixmap = network_pixmap;
+ break;
+ case DRIVE_RAMDISK:
+ drive_pixmap = ramdisk_pixmap;
+ break;
+ default:
+ drive_pixmap = closed_folder_pixmap;
+ }
+
+ drive_label[0] = 0;
+
+ GetVolumeInformation(drive_backslashed, drive_label, 256, NULL, NULL, NULL, NULL, 0);
+
+ /* Drive letter first so alphabetical drive list order works */
+ drive_dir_name = g_strconcat("(", drive_slashless, ") ", drive_label, NULL);
+
+ gtk_tree_store_append(directoryTreeModel, &parent_iter, NULL);
+ gtk_tree_store_set(directoryTreeModel, &parent_iter,
+ TREE_COLUMN_DIR_NAME, drive_dir_name,
+ TREE_COLUMN_FULL_PATH, drive_backslashed,
+ TREE_COLUMN_HAS_SUBDIR, TRUE,
+ TREE_COLUMN_SCANNED, FALSE,
+ TREE_COLUMN_PIXBUF, drive_pixmap,
+ -1);
+ // Insert dummy node
+ gtk_tree_store_append(directoryTreeModel, &dummy_iter, &parent_iter);
+
+ g_free(drive_dir_name);
+ }
+ drives >>= 1;
+ drive[0]++;
+ drive_backslashed[0]++;
+ drive_slashless[0]++;
+ }
+
+#else
+
+ gtk_tree_store_append(directoryTreeModel, &parent_iter, NULL);
+ gtk_tree_store_set(directoryTreeModel, &parent_iter,
+ TREE_COLUMN_DIR_NAME, G_DIR_SEPARATOR_S,
+ TREE_COLUMN_FULL_PATH, G_DIR_SEPARATOR_S,
+ TREE_COLUMN_HAS_SUBDIR, TRUE,
+ TREE_COLUMN_SCANNED, FALSE,
+ TREE_COLUMN_PIXBUF, closed_folder_pixmap,
+ -1);
+ // insert dummy node
+ gtk_tree_store_append(directoryTreeModel, &dummy_iter, &parent_iter);
+
+#endif
+
+}
+
+/*
+ * Browser_Tree_Rebuild: Refresh the tree browser by destroying it and rebuilding it.
+ * Opens tree nodes corresponding to 'path_to_load' if this parameter isn't NULL.
+ * If NULL, selects the current path.
+ */
+void Browser_Tree_Rebuild (gchar *path_to_load)
+{
+ gchar *current_path = NULL;
+ GtkTreeSelection *selection;
+
+ /* May be called from GtkUIManager callback */
+ if (GTK_IS_ACTION(path_to_load))
+ path_to_load = NULL;
+
+ if (path_to_load != NULL)
+ {
+ Browser_Tree_Initialize();
+ Browser_Tree_Select_Dir(path_to_load);
+ return;
+ }
+
+ /* Memorize the current path to load it again at the end */
+ current_path = Browser_Tree_Get_Path_Of_Selected_Node();
+ if (current_path==NULL && BrowserEntryCombo)
+ {
+ /* If no node selected, get path from BrowserEntry or default path */
+ if (BrowserCurrentPath != NULL)
+ current_path = g_strdup(BrowserCurrentPath);
+ else if (g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(BrowserEntryCombo)->child)), -1) > 0)
+ current_path = filename_from_display(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(BrowserEntryCombo)->child)));
+ else
+ current_path = g_strdup(DEFAULT_PATH_TO_MP3);
+ }
+
+ Browser_Tree_Initialize();
+ /* Select again the memorized path without loading files */
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserTree));
+ if (selection)
+ {
+ g_signal_handlers_block_by_func(G_OBJECT(selection),G_CALLBACK(Browser_Tree_Node_Selected),NULL);
+ Browser_Tree_Select_Dir(current_path);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection),G_CALLBACK(Browser_Tree_Node_Selected),NULL);
+ }
+ g_free(current_path);
+
+ Update_Command_Buttons_Sensivity();
+}
+
+/*
+ * Renames a directory
+ * last_path:
+ * new_path:
+ * Parameters are non-utf8!
+ */
+void Browser_Tree_Rename_Directory (gchar *last_path, gchar *new_path)
+{
+
+ gchar **textsplit;
+ gint i;
+ GtkTreeIter iter;
+ GtkTreePath *childpath;
+ GtkTreePath *parentpath;
+ gchar *new_basename;
+ gchar *new_basename_utf8;
+ gchar *path;
+ gboolean valid;
+
+ if (!last_path || !new_path)
+ return;
+
+ /*
+ * Find the existing tree entry
+ */
+ textsplit = g_strsplit(last_path, G_DIR_SEPARATOR_S, 0);
+
+#ifdef WIN32
+ if (!Browser_Win32_Get_Drive_Root(textsplit[0], &iter, &parentpath))
+ return;
+#else
+ parentpath = gtk_tree_path_new_first();
+#endif
+
+ for (i = 1; textsplit[i] != NULL; i++)
+ {
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(directoryTreeModel), &iter, parentpath);
+ childpath = Find_Child_Node(&iter, textsplit[i]);
+ if (childpath == NULL)
+ {
+ // ERROR! Could not find it!
+ gchar *text_utf8 = filename_to_display(textsplit[i]);
+ Log_Print(_("Error: Searching for %s, could not find node %s in tree."), last_path, text_utf8);
+ g_strfreev(textsplit);
+ g_free(text_utf8);
+ return;
+ }
+ gtk_tree_path_free(parentpath);
+ parentpath = childpath;
+ }
+
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(directoryTreeModel), &iter, parentpath);
+ gtk_tree_path_free(parentpath);
+
+ /* Rename the on-screen node */
+ new_basename = g_path_get_basename(new_path);
+ new_basename_utf8 = filename_to_display(new_basename);
+ gtk_tree_store_set(directoryTreeModel, &iter,
+ TREE_COLUMN_DIR_NAME, new_basename_utf8,
+ TREE_COLUMN_FULL_PATH, new_path,
+ -1);
+
+ /* Update fullpath of child nodes */
+ Browser_Tree_Handle_Rename(&iter, last_path, new_path);
+
+ /* Update the variable of the current path */
+ path = Browser_Tree_Get_Path_Of_Selected_Node();
+ Browser_Update_Current_Path(path);
+ g_free(path);
+
+ g_strfreev(textsplit);
+ g_free(new_basename);
+ g_free(new_basename_utf8);
+}
+
+/*
+ * Recursive function to update paths of all child nodes
+ */
+void Browser_Tree_Handle_Rename (GtkTreeIter *parentnode, gchar *old_path, gchar *new_path)
+{
+ GtkTreeIter iter;
+ gchar *path;
+ gchar *path_shift;
+ gchar *path_new;
+
+ // If there are no children then nothing needs to be done!
+ if(!gtk_tree_model_iter_children(GTK_TREE_MODEL(directoryTreeModel), &iter, parentnode))
+ return;
+
+ do
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(directoryTreeModel), &iter,
+ TREE_COLUMN_FULL_PATH, &path, -1);
+ if(path == NULL)
+ continue;
+
+ path_shift = g_utf8_offset_to_pointer(path, g_utf8_strlen(old_path, -1));
+ path_new = g_strconcat(new_path, path_shift, NULL);
+
+ gtk_tree_store_set(directoryTreeModel, &iter,
+ TREE_COLUMN_FULL_PATH, path_new, -1);
+
+ g_free(path_new);
+ g_free(path);
+
+ // Recurse if necessary
+ if(gtk_tree_model_iter_has_child(GTK_TREE_MODEL(directoryTreeModel), &iter))
+ Browser_Tree_Handle_Rename(&iter, old_path, new_path);
+
+ } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(directoryTreeModel), &iter));
+
+}
+
+/*
+ * Find the child node of "parentnode" that has text of "childtext
+ * Returns NULL on failure
+ */
+GtkTreePath *Find_Child_Node (GtkTreeIter *parentnode, gchar *childtext)
+{
+ gint row;
+ GtkTreeIter iter;
+ gchar *text;
+ gchar *temp;
+
+ for (row=0; row < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(directoryTreeModel), parentnode); row++)
+ {
+ if (row == 0)
+ {
+ if (gtk_tree_model_iter_children(GTK_TREE_MODEL(directoryTreeModel), &iter, parentnode) == FALSE) return NULL;
+ } else
+ {
+ if (gtk_tree_model_iter_next(GTK_TREE_MODEL(directoryTreeModel), &iter) == FALSE)
+ return NULL;
+ }
+ gtk_tree_model_get(GTK_TREE_MODEL(directoryTreeModel), &iter,
+ TREE_COLUMN_FULL_PATH, &temp, -1);
+ text = g_path_get_basename(temp);
+ g_free(temp);
+ if(strcmp(childtext,text) == 0)
+ {
+ g_free(text);
+ return gtk_tree_model_get_path(GTK_TREE_MODEL(directoryTreeModel), &iter);
+ }
+ g_free(text);
+
+ }
+
+ return NULL;
+}
+
+/*
+ * Check if path has any subdirectories
+ * Returns true if subdirectories exist.
+ * path should be in raw filename format (non-UTF8)
+ */
+static gboolean check_for_subdir (gchar *path)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ struct stat statbuf;
+ gchar *npath;
+
+ if( (dir=opendir(path)) )
+ {
+ while( (dirent=readdir(dir)) )
+ {
+ // We don't read the directories '.' and '..', but may read hidden directories like '.mydir'
+ if ( (g_ascii_strcasecmp (dirent->d_name,"..") != 0)
+ && ( (g_ascii_strncasecmp(dirent->d_name,".", 1) != 0) || (BROWSE_HIDDEN_DIR && strlen(dirent->d_name) > 1)) )
+ {
+#ifdef WIN32
+ // On win32 : stat("/path/to/dir") succeed, while stat("/path/to/dir/") fails
+ npath = g_strconcat(path,dirent->d_name,NULL);
+#else
+ npath = g_strconcat(path,dirent->d_name,G_DIR_SEPARATOR_S,NULL);
+#endif
+
+ if (stat(npath,&statbuf) == -1)
+ {
+ g_free(npath);
+ continue;
+ }
+
+ g_free(npath);
+
+ if(S_ISDIR(statbuf.st_mode))
+ {
+ closedir(dir);
+ return TRUE;
+ }
+ }
+ }
+ closedir(dir);
+ }
+ return FALSE;
+}
+
+/*
+ * Check if you have access permissions for directory path. Returns 1 if ok, else 0.
+ */
+gboolean Check_For_Access_Permission (gchar *path)
+{
+ DIR *dir;
+
+ if( (dir=opendir(path)) == NULL )
+ {
+ if (errno == EACCES)
+ return FALSE;
+ } else
+ {
+ closedir(dir);
+ }
+ return TRUE;
+}
+
+
+/*
+ * Sets the selection function. If set, this function is called before any node
+ * is selected or unselected, giving some control over which nodes are selected.
+ * The select function should return TRUE if the state of the node may be toggled,
+ * and FALSE if the state of the node should be left unchanged.
+ */
+gboolean Browser_List_Select_Func (GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer data)
+{
+ // This line will be selected at the end of the event.
+ // We store the last ETFile selected, as gtk_tree_selection_get_selected_rows
+ // returns the selection, in the ascending line order, instead of the real
+ // order of line selection (so we can't displayed the last selected file)
+ // FIXME : should generate a list to get the previous selected file if unselected the last selected file
+ if (!path_currently_selected)
+ {
+ GtkTreeIter iter;
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &iter, path))
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &iter,
+ LIST_FILE_POINTER, &LastBrowserListETFileSelected, -1);
+ }else
+ {
+ LastBrowserListETFileSelected = NULL;
+ }
+ //g_print(">>>%s -> %d -> %x\n",gtk_tree_path_to_string(path),path_currently_selected,LastBrowserListETFileSelected);
+
+ return TRUE;
+}
+
+
+/*
+ * Open up a node on the browser tree
+ * Scanning and showing all subdirectories
+ */
+static void expand_cb (GtkWidget *tree, GtkTreeIter *iter, GtkTreePath *gtreePath, gpointer data)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ gchar *path;
+ gchar *dirname_utf8;
+ struct stat statbuf;
+ gchar *fullpath_file;
+ gchar *parentPath;
+ gboolean treeScanned;
+ gboolean has_subdir = FALSE;
+ GtkTreeIter currentIter;
+ GtkTreeIter subNodeIter;
+ GdkPixbuf *pixbuf;
+
+ if (!directoryTreeModel) return;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(directoryTreeModel), iter,
+ TREE_COLUMN_FULL_PATH, &parentPath,
+ TREE_COLUMN_SCANNED, &treeScanned, -1);
+
+ if (treeScanned)
+ return;
+
+ if ( (dir=opendir(parentPath)) )
+ {
+ while ( (dirent=readdir(dir)) )
+ {
+ path = g_strconcat(parentPath, dirent->d_name, NULL);
+ stat(path, &statbuf);
+
+ // We don't read the directories '.' and '..', but may read hidden directories like '.mydir'
+ if (S_ISDIR(statbuf.st_mode)
+ && ( (g_ascii_strcasecmp (dirent->d_name,"..") != 0)
+ && ((g_ascii_strncasecmp(dirent->d_name,".", 1) != 0) || (BROWSE_HIDDEN_DIR && strlen(dirent->d_name) > 1)) ) )
+ {
+
+ if (path[strlen(path)-1]!=G_DIR_SEPARATOR)
+ fullpath_file = g_strconcat(path,G_DIR_SEPARATOR_S,NULL);
+ else
+ fullpath_file = g_strdup(path);
+
+ dirname_utf8 = filename_to_display(dirent->d_name);
+ //if (!dirname_utf8)
+ //{
+ // gchar *escaped_temp = g_strescape(dirent->d_name, NULL);
+ // g_free(escaped_temp);
+ //}
+
+ if (check_for_subdir(fullpath_file))
+ has_subdir = TRUE;
+ else
+ has_subdir = FALSE;
+
+ /* Select pixmap for accessible/unaccessible directory */
+ if (Check_For_Access_Permission(path))
+ pixbuf = closed_folder_pixmap;
+ else
+ pixbuf = closed_folder_locked_pixmap;
+
+ gtk_tree_store_append(directoryTreeModel, &currentIter, iter);
+ gtk_tree_store_set(directoryTreeModel, &currentIter,
+ TREE_COLUMN_DIR_NAME, dirname_utf8,
+ TREE_COLUMN_FULL_PATH, fullpath_file,
+ TREE_COLUMN_HAS_SUBDIR, !has_subdir,
+ TREE_COLUMN_SCANNED, FALSE,
+ TREE_COLUMN_PIXBUF, pixbuf, -1);
+
+ if (has_subdir)
+ {
+ // Insert a dummy node
+ gtk_tree_store_append(directoryTreeModel, &subNodeIter, &currentIter);
+ }
+
+ g_free(fullpath_file);
+ g_free(dirname_utf8);
+ }
+ g_free(path);
+
+ }
+ closedir(dir);
+ }
+
+ // remove dummy node
+ gtk_tree_model_iter_children(GTK_TREE_MODEL(directoryTreeModel), &subNodeIter, iter);
+ gtk_tree_store_remove(directoryTreeModel, &subNodeIter);
+
+#ifdef WIN32
+ // set open folder pixmap except on drive (depth == 0)
+ if (gtk_tree_path_get_depth(gtreePath) > 1)
+ {
+ // update the icon of the node to opened folder :-)
+ gtk_tree_store_set(directoryTreeModel, iter,
+ TREE_COLUMN_SCANNED, TRUE,
+ TREE_COLUMN_PIXBUF, opened_folder_pixmap, -1);
+ }
+#else
+ // update the icon of the node to opened folder :-)
+ gtk_tree_store_set(directoryTreeModel, iter,
+ TREE_COLUMN_SCANNED, TRUE,
+ TREE_COLUMN_PIXBUF, opened_folder_pixmap, -1);
+#endif
+
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(directoryTreeModel),
+ TREE_COLUMN_DIR_NAME, GTK_SORT_ASCENDING);
+
+ g_free(parentPath);
+}
+
+static void collapse_cb (GtkWidget *tree, GtkTreeIter *iter, GtkTreePath *treePath, gpointer data)
+{
+ GtkTreeIter subNodeIter;
+
+ if (!directoryTreeModel) return;
+
+ gtk_tree_model_iter_children(GTK_TREE_MODEL(directoryTreeModel),
+ &subNodeIter, iter);
+ while (gtk_tree_model_iter_has_child(GTK_TREE_MODEL(directoryTreeModel), iter))
+ {
+ gtk_tree_model_iter_children(GTK_TREE_MODEL(directoryTreeModel), &subNodeIter, iter);
+ gtk_tree_store_remove(directoryTreeModel, &subNodeIter);
+ }
+
+#ifdef WIN32
+ // set closed folder pixmap except on drive (depth == 0)
+ if(gtk_tree_path_get_depth(treePath) > 1)
+ {
+ // update the icon of the node to closed folder :-)
+ gtk_tree_store_set(directoryTreeModel, iter,
+ TREE_COLUMN_SCANNED, FALSE,
+ TREE_COLUMN_PIXBUF, closed_folder_pixmap, -1);
+ }
+#else
+ // update the icon of the node to closed folder :-)
+ gtk_tree_store_set(directoryTreeModel, iter,
+ TREE_COLUMN_SCANNED, FALSE,
+ TREE_COLUMN_PIXBUF, closed_folder_pixmap, -1);
+#endif
+
+ // insert dummy node
+ gtk_tree_store_append(directoryTreeModel, &subNodeIter, iter);
+}
+
+/*
+ * Create item of the browser (Entry + Tree + List).
+ */
+GtkWidget *Create_Browser_Items (GtkWidget *parent)
+{
+ GtkWidget *VerticalBox;
+ GtkWidget *HBox;
+ GtkWidget *ScrollWindowDirectoryTree;
+ GtkWidget *ScrollWindowFileList;
+ GtkWidget *ScrollWindowArtistList;
+ GtkWidget *ScrollWindowAlbumList;
+ GtkWidget *Label;
+ GtkWidget *Icon;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkTooltips *Tips;
+ GtkWidget *PopupMenu;
+ gchar *ArtistList_Titles[] = {N_("Artist"),N_("# Albums"),N_("# Files")};
+ gchar *AlbumList_Titles[] = {N_("Album"),N_("# Files")};
+
+ Tips = gtk_tooltips_new();
+ VerticalBox = gtk_vbox_new(FALSE,2);
+ gtk_container_set_border_width(GTK_CONTAINER(VerticalBox),2);
+
+
+ // HBox for BrowserEntry + BrowserLabel
+ HBox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VerticalBox),HBox,FALSE,TRUE,0);
+
+ /*
+ * The button to go to the parent directory
+ */
+ BrowserButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock("easytag-parent-folder", GTK_ICON_SIZE_SMALL_TOOLBAR); // On Win32, GTK_ICON_SIZE_BUTTON enlarge the combobox...
+ gtk_container_add(GTK_CONTAINER(BrowserButton),Icon);
+ gtk_box_pack_start(GTK_BOX(HBox),BrowserButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(BrowserButton),GTK_RELIEF_NONE);
+ g_signal_connect(G_OBJECT(BrowserButton),"clicked",G_CALLBACK(Browser_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,BrowserButton,_("Go to parent directory"),NULL);
+
+ /*
+ * The entry box for displaying path
+ */
+ if (BrowserEntryModel != NULL)
+ gtk_list_store_clear(BrowserEntryModel);
+ else
+ BrowserEntryModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+
+ BrowserEntryCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(BrowserEntryModel), MISC_COMBO_TEXT);
+ /* History list */
+ Load_Path_Entry_List(BrowserEntryModel, MISC_COMBO_TEXT);
+ //gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(BrowserEntryCombo),2); // Two columns to display paths
+
+ g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_BIN(BrowserEntryCombo)->child)),"activate",G_CALLBACK(Browser_Entry_Activated),NULL);
+ gtk_box_pack_start(GTK_BOX(HBox),BrowserEntryCombo,TRUE,TRUE,1);
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(BrowserEntryCombo)->child)),_("Enter a directory to browse."),NULL);
+
+
+ /*
+ * The label for displaying number of files in path (without subdirs)
+ */
+ BrowserLabel = gtk_label_new(" ... ");
+ gtk_box_pack_start(GTK_BOX(HBox),BrowserLabel,FALSE,FALSE,2);
+
+
+ /* Create pixmaps */
+ if(!opened_folder_pixmap)
+ {
+ opened_folder_pixmap = gdk_pixbuf_new_from_xpm_data(opened_folder_xpm);
+ closed_folder_pixmap = gdk_pixbuf_new_from_xpm_data(closed_folder_xpm);
+ closed_folder_locked_pixmap = gdk_pixbuf_new_from_xpm_data(closed_folder_locked_xpm);
+
+#ifdef WIN32
+ /* get GTK's theme harddrive and removable icons and render it in a pixbuf */
+ harddrive_pixmap = gtk_icon_set_render_icon(gtk_style_lookup_icon_set(parent->style, GTK_STOCK_HARDDISK),
+ parent->style,
+ gtk_widget_get_direction (parent),
+ GTK_STATE_NORMAL,
+ GTK_ICON_SIZE_BUTTON,
+ parent, NULL);
+
+ removable_pixmap = gtk_icon_set_render_icon(gtk_style_lookup_icon_set(parent->style, GTK_STOCK_FLOPPY),
+ parent->style,
+ gtk_widget_get_direction (parent),
+ GTK_STATE_NORMAL,
+ GTK_ICON_SIZE_BUTTON,
+ parent, NULL);
+
+ cdrom_pixmap = gtk_icon_set_render_icon(gtk_style_lookup_icon_set(parent->style, GTK_STOCK_CDROM),
+ parent->style,
+ gtk_widget_get_direction (parent),
+ GTK_STATE_NORMAL,
+ GTK_ICON_SIZE_BUTTON,
+ parent, NULL);
+
+ network_pixmap = gtk_icon_set_render_icon(gtk_style_lookup_icon_set(parent->style, GTK_STOCK_NETWORK),
+ parent->style,
+ gtk_widget_get_direction (parent),
+ GTK_STATE_NORMAL,
+ GTK_ICON_SIZE_BUTTON,
+ parent, NULL);
+
+ ramdisk_pixmap = gdk_pixbuf_new_from_xpm_data(ram_disk_xpm);
+
+#endif
+ }
+
+ /* Browser NoteBook :
+ * - one tab for the BrowserTree
+ * - one tab for the BrowserArtistList and the BrowserAlbumList
+ */
+ BrowserNoteBook = gtk_notebook_new();
+ //gtk_notebook_popup_enable(GTK_NOTEBOOK(BrowserNoteBook));
+ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(BrowserNoteBook),FALSE);
+ gtk_notebook_set_show_border(GTK_NOTEBOOK(BrowserNoteBook),FALSE);
+
+
+ /*
+ * The ScrollWindow and the Directory-Tree
+ */
+ ScrollWindowDirectoryTree = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindowDirectoryTree),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ directoryTreeModel = gtk_tree_store_new(TREE_COLUMN_COUNT,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN,
+ GDK_TYPE_PIXBUF);
+
+ Label = gtk_label_new(_("Tree"));
+ gtk_notebook_append_page(GTK_NOTEBOOK(BrowserNoteBook),ScrollWindowDirectoryTree,Label);
+
+ /* The tree view */
+ BrowserTree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(directoryTreeModel));
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(BrowserTree), FALSE);
+ renderer = gtk_cell_renderer_pixbuf_new();
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "pixbuf", TREE_COLUMN_PIXBUF, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "text", TREE_COLUMN_DIR_NAME, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(BrowserTree), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_container_add(GTK_CONTAINER(ScrollWindowDirectoryTree),BrowserTree);
+
+ Browser_Tree_Initialize();
+
+
+ /* Signals */
+ g_signal_connect(G_OBJECT(BrowserTree), "row-expanded", G_CALLBACK(expand_cb),NULL);
+ g_signal_connect(G_OBJECT(BrowserTree), "row-collapsed", G_CALLBACK(collapse_cb),NULL);
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserTree))),
+ "changed", G_CALLBACK(Browser_Tree_Node_Selected), NULL);
+
+ g_signal_connect(G_OBJECT(BrowserTree),"key_press_event", G_CALLBACK(Browser_Tree_Key_Press),NULL);
+
+ /* Create Popup Menu on browser tree view */
+ PopupMenu = gtk_ui_manager_get_widget(UIManager, "/DirPopup");
+ g_signal_connect_swapped(G_OBJECT(BrowserTree),"button_press_event",
+ G_CALLBACK(Browser_Popup_Menu_Handler), G_OBJECT(PopupMenu));
+
+
+
+ /*
+ * The ScrollWindows with the Artist and Album Lists
+ */
+
+ ArtistAlbumVPaned = gtk_vpaned_new();
+
+ Label = gtk_label_new(_("Artist & Album"));
+ gtk_notebook_append_page(GTK_NOTEBOOK(BrowserNoteBook),ArtistAlbumVPaned,Label);
+
+ ScrollWindowArtistList = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindowArtistList),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+
+ artistListModel = gtk_list_store_new(ARTIST_COLUMN_COUNT,
+ G_TYPE_STRING,
+ G_TYPE_UINT,
+ G_TYPE_UINT,
+ G_TYPE_POINTER,
+ PANGO_TYPE_STYLE,
+ G_TYPE_INT,
+ GDK_TYPE_COLOR);
+
+ BrowserArtistList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(artistListModel));
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(BrowserArtistList), TRUE);
+ renderer = gtk_cell_renderer_text_new();
+
+ column = gtk_tree_view_column_new_with_attributes(_(ArtistList_Titles[0]), renderer,
+ "text", ARTIST_NAME,
+ "weight", ARTIST_FONT_WEIGHT,
+ "style", ARTIST_FONT_STYLE,
+ "foreground-gdk", ARTIST_ROW_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(BrowserArtistList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ column = gtk_tree_view_column_new_with_attributes(_(ArtistList_Titles[1]), renderer,
+ "text", ARTIST_NUM_ALBUMS,
+ "weight", ARTIST_FONT_WEIGHT,
+ "style", ARTIST_FONT_STYLE,
+ "foreground-gdk", ARTIST_ROW_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(BrowserArtistList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ column = gtk_tree_view_column_new_with_attributes(_(ArtistList_Titles[2]), renderer,
+ "text", ARTIST_NUM_FILES,
+ "weight", ARTIST_FONT_WEIGHT,
+ "style", ARTIST_FONT_STYLE,
+ "foreground-gdk", ARTIST_ROW_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(BrowserArtistList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(BrowserArtistList), FALSE);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserArtistList)),GTK_SELECTION_SINGLE);
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserArtistList))),"changed",G_CALLBACK(Browser_Artist_List_Row_Selected),NULL);
+
+ gtk_container_add(GTK_CONTAINER(ScrollWindowArtistList),BrowserArtistList);
+
+ // Create Popup Menu on browser artist list
+ PopupMenu = gtk_ui_manager_get_widget(UIManager, "/DirArtistPopup");
+ g_signal_connect_swapped(G_OBJECT(BrowserArtistList),"button_press_event",
+ G_CALLBACK(Browser_Popup_Menu_Handler), G_OBJECT(PopupMenu));
+ // Not available yet!
+ //ui_widget_set_sensitive(MENU_FILE, AM_ARTIST_OPEN_FILE_WITH, FALSE);
+
+ ScrollWindowAlbumList = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindowAlbumList),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+
+ albumListModel = gtk_list_store_new(ALBUM_COLUMN_COUNT,
+ G_TYPE_STRING,
+ G_TYPE_UINT,
+ G_TYPE_POINTER,
+ PANGO_TYPE_STYLE,
+ G_TYPE_INT,
+ GDK_TYPE_COLOR);
+
+ BrowserAlbumList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(albumListModel));
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(BrowserAlbumList), TRUE);
+ renderer = gtk_cell_renderer_text_new();
+
+ column = gtk_tree_view_column_new_with_attributes(_(AlbumList_Titles[0]), renderer,
+ "text", ALBUM_NAME,
+ "weight", ALBUM_FONT_WEIGHT,
+ "style", ALBUM_FONT_STYLE,
+ "foreground-gdk", ALBUM_ROW_FOREGROUND,
+ NULL);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(BrowserAlbumList), column);
+
+ column = gtk_tree_view_column_new_with_attributes(_(AlbumList_Titles[1]), renderer,
+ "text", ALBUM_NUM_FILES,
+ "weight", ALBUM_FONT_WEIGHT,
+ "style", ALBUM_FONT_STYLE,
+ "foreground-gdk", ALBUM_ROW_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(BrowserAlbumList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(BrowserAlbumList), FALSE);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserAlbumList)), GTK_SELECTION_SINGLE);
+
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserAlbumList))),"changed",G_CALLBACK(Browser_Album_List_Row_Selected),NULL);
+ gtk_container_add(GTK_CONTAINER(ScrollWindowAlbumList),BrowserAlbumList);
+
+ // Create Popup Menu on browser album list
+ PopupMenu = gtk_ui_manager_get_widget(UIManager, "/DirAlbumPopup");
+ g_signal_connect_swapped(G_OBJECT(BrowserArtistList),"button_press_event",
+ G_CALLBACK(Browser_Popup_Menu_Handler), G_OBJECT(PopupMenu));
+ // Not available yet!
+ //ui_widget_set_sensitive(MENU_FILE, AM_ALBUM_OPEN_FILE_WITH, FALSE);
+
+
+ gtk_paned_pack1(GTK_PANED(ArtistAlbumVPaned),ScrollWindowArtistList,TRUE,TRUE); // Top side
+ gtk_paned_pack2(GTK_PANED(ArtistAlbumVPaned),ScrollWindowAlbumList,TRUE,TRUE); // Bottom side
+ gtk_paned_set_position(GTK_PANED(ArtistAlbumVPaned),PANE_HANDLE_POSITION3);
+
+
+ /*
+ * The ScrollWindow and the List
+ */
+ ScrollWindowFileList = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindowFileList),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+
+ /* The file list */
+ fileListModel = gtk_list_store_new(LIST_COLUMN_COUNT,
+ G_TYPE_STRING,
+ G_TYPE_POINTER,
+ G_TYPE_INT,
+ G_TYPE_BOOLEAN,
+ G_TYPE_INT,
+ GDK_TYPE_COLOR,
+ GDK_TYPE_COLOR);
+
+ BrowserList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(fileListModel));
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(BrowserList), FALSE);
+ gtk_container_add(GTK_CONTAINER(ScrollWindowFileList), BrowserList);
+ gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(BrowserList), FALSE);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "text", LIST_FILE_NAME,
+ "weight", LIST_FONT_WEIGHT,
+ "background-gdk", LIST_ROW_BACKGROUND,
+ "foreground-gdk", LIST_ROW_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(BrowserList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(BrowserList), FALSE);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList)),GTK_SELECTION_MULTIPLE);
+ // When selecting a line
+ gtk_tree_selection_set_select_function(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList)), Browser_List_Select_Func, NULL, NULL);
+ // To sort list
+ //gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(fileListModel), 0, Browser_List_Sort_Func, NULL, NULL);
+ Browser_List_Refresh_Sort();
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(fileListModel), 0, GTK_SORT_ASCENDING);
+
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList))),
+ "changed", G_CALLBACK(Browser_List_Row_Selected), NULL);
+ g_signal_connect(G_OBJECT(BrowserList),"key_press_event", G_CALLBACK(Browser_List_Key_Press),NULL);
+ g_signal_connect(G_OBJECT(BrowserList),"button_press_event", G_CALLBACK(Browser_List_Button_Press),NULL);
+
+
+ /*
+ * Create Popup Menu on file list
+ */
+ PopupMenu = gtk_ui_manager_get_widget(UIManager, "/FilePopup");
+ g_signal_connect_swapped(G_OBJECT(BrowserList),"button_press_event",
+ G_CALLBACK(Browser_Popup_Menu_Handler), G_OBJECT(PopupMenu));
+
+ /*
+ * The list store for run program combos
+ */
+ RunProgramModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+
+ /*
+ * The pane for the tree and list
+ */
+ BrowserHPaned = gtk_hpaned_new();
+ gtk_box_pack_start(GTK_BOX(VerticalBox),BrowserHPaned,TRUE,TRUE,0);
+ gtk_paned_pack1(GTK_PANED(BrowserHPaned),BrowserNoteBook,TRUE,TRUE); // Left side
+ gtk_paned_pack2(GTK_PANED(BrowserHPaned),ScrollWindowFileList,TRUE,TRUE); // Right side
+ gtk_paned_set_position(GTK_PANED(BrowserHPaned),PANE_HANDLE_POSITION2);
+
+ gtk_widget_show_all(VerticalBox);
+
+ /* Set home variable as current path */
+ Browser_Update_Current_Path(HOME_VARIABLE);
+
+ return VerticalBox;
+}
+
+
+
+/*
+ * The window to Rename a directory into the browser.
+ */
+void Browser_Open_Rename_Directory_Window (void)
+{
+ GtkWidget *Frame;
+ GtkWidget *VBox;
+ GtkWidget *HBox;
+ GtkWidget *Label;
+ GtkWidget *ButtonBox;
+ GtkWidget *Button;
+ GtkWidget *Separator;
+ GtkTooltips *Tips;
+ gchar *directory_parent = NULL;
+ gchar *directory_name = NULL;
+ gchar *directory_name_utf8 = NULL;
+ gchar *address = NULL;
+ gchar *string;
+
+ if (RenameDirectoryWindow != NULL)
+ {
+ gdk_window_raise(RenameDirectoryWindow->window);
+ return;
+ }
+
+ /* We get the full path but we musn't display the parent directories */
+ directory_parent = g_strdup(BrowserCurrentPath);
+ if (!directory_parent || strlen(directory_parent) == 0)
+ {
+ g_free(directory_parent);
+ return;
+ }
+
+ // Remove the last '/' in the path if it exists
+ if (strlen(directory_parent)>1 && directory_parent[strlen(directory_parent)-1]==G_DIR_SEPARATOR)
+ directory_parent[strlen(directory_parent)-1]=0;
+ // Get name of the directory to rename (without path)
+ address = strrchr(directory_parent,G_DIR_SEPARATOR);
+ if (!address) return;
+ directory_name = g_strdup(address+1);
+ *(address+1) = 0;
+
+ if (!directory_name || strlen(directory_name)==0)
+ {
+ g_free(directory_name);
+ g_free(directory_parent);
+ return;
+ }
+
+ /* The tooltips */
+ Tips = gtk_tooltips_new();
+
+ directory_name_utf8 = filename_to_display(directory_name);
+
+ RenameDirectoryWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(RenameDirectoryWindow),_("Rename the directory"));
+ gtk_window_set_transient_for(GTK_WINDOW(RenameDirectoryWindow),GTK_WINDOW(MainWindow));
+ gtk_window_set_position(GTK_WINDOW(RenameDirectoryWindow),GTK_WIN_POS_CENTER_ON_PARENT);
+
+ /* We attach usefull data to the combobox */
+ g_object_set_data(G_OBJECT(RenameDirectoryWindow), "Parent_Directory", directory_parent);
+ g_object_set_data(G_OBJECT(RenameDirectoryWindow), "Current_Directory", directory_name);
+
+ Frame = gtk_frame_new(NULL);
+ gtk_container_add(GTK_CONTAINER(RenameDirectoryWindow),Frame);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+
+ VBox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+
+ string = g_strdup_printf(_("Rename the directory '%s' to : "),directory_name_utf8);
+ Label = gtk_label_new(_(string));
+ g_free(string);
+ gtk_box_pack_start(GTK_BOX(VBox),Label,FALSE,TRUE,0);
+ gtk_label_set_line_wrap(GTK_LABEL(Label),TRUE);
+
+ /* The combobox to rename the directory */
+ RenameDirectoryCombo = gtk_combo_box_entry_new_text();
+ gtk_box_pack_start(GTK_BOX(VBox),RenameDirectoryCombo,FALSE,FALSE,0);
+ /* Set the directory into the combobox */
+ gtk_combo_box_prepend_text(GTK_COMBO_BOX(RenameDirectoryCombo), directory_name_utf8);
+ gtk_combo_box_prepend_text(GTK_COMBO_BOX(RenameDirectoryCombo), "");
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(RenameDirectoryCombo)->child),directory_name_utf8);
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(GTK_BIN(RenameDirectoryCombo)->child));
+
+ /* Rename directory : check box + combo box + Status icon */
+ HBox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(VBox),HBox,TRUE,TRUE,0);
+
+ RenameDirectoryWithMask = gtk_check_button_new_with_label(_("Use mask :"));
+ gtk_box_pack_start(GTK_BOX(HBox),RenameDirectoryWithMask,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RenameDirectoryWithMask),RENAME_DIRECTORY_WITH_MASK);
+ gtk_tooltips_set_tip(Tips,RenameDirectoryWithMask,_("If activated, it will use "
+ "masks to rename directory."),NULL);
+ g_signal_connect(G_OBJECT(RenameDirectoryWithMask),"toggled",G_CALLBACK(Rename_Directory_With_Mask_Toggled),NULL);
+
+ // Set up list model which is used by the combobox
+ /* Rename directory from mask */
+ if (!RenameDirectoryMaskModel)
+ RenameDirectoryMaskModel = gtk_list_store_new(MASK_EDITOR_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(RenameDirectoryMaskModel);
+
+ // The combo box to select the mask to apply
+ RenameDirectoryMaskCombo = gtk_combo_box_entry_new();
+ gtk_combo_box_set_model(GTK_COMBO_BOX(RenameDirectoryMaskCombo), GTK_TREE_MODEL(RenameDirectoryMaskModel));
+ gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(RenameDirectoryMaskCombo), MASK_EDITOR_TEXT);
+ gtk_widget_set_size_request(RenameDirectoryMaskCombo, 80, -1);
+
+ gtk_box_pack_start(GTK_BOX(HBox),RenameDirectoryMaskCombo,TRUE,TRUE,0);
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(RenameDirectoryMaskCombo)->child)),
+ _("Select or type in a mask using codes (see Legend in Scanner Window) to rename "
+ "the directory from tag fields."),NULL);
+ // Signal to generate preview (preview of the new directory)
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RenameDirectoryMaskCombo)->child)),"changed",
+ G_CALLBACK(Scan_Rename_Directory_Generate_Preview),NULL);
+
+ // Load masks into the combobox from a file
+ Load_Rename_Directory_Masks_List(RenameDirectoryMaskModel, MASK_EDITOR_TEXT, Rename_Directory_Masks);
+ if (RENAME_DIRECTORY_DEFAULT_MASK)
+ {
+ Add_String_To_Combo_List(RenameDirectoryMaskModel, RENAME_DIRECTORY_DEFAULT_MASK);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(RenameDirectoryMaskCombo)->child), RENAME_DIRECTORY_DEFAULT_MASK);
+ }else
+ {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(RenameDirectoryMaskCombo), 0);
+ }
+
+ // Mask status icon
+ RenameDirectoryMaskStatusIconBox = Create_Pixmap_Icon_With_Event_Box("easytag-forbidden");
+ gtk_box_pack_start(GTK_BOX(HBox),RenameDirectoryMaskStatusIconBox,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,RenameDirectoryMaskStatusIconBox,_("Invalid Scanner Mask"),NULL);
+ // Signal connection to check if mask is correct into the mask entry
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RenameDirectoryMaskCombo)->child)),"changed",
+ G_CALLBACK(Scan_Check_Rename_File_Mask),G_OBJECT(RenameDirectoryMaskStatusIconBox));
+
+ // Preview label
+ RenameDirectoryPreviewLabel = gtk_label_new(_("Rename directory preview..."));
+ gtk_label_set_line_wrap(GTK_LABEL(RenameDirectoryPreviewLabel),TRUE);
+ ////gtk_widget_show(FillTagPreviewLabel);
+ gtk_box_pack_start(GTK_BOX(VBox),RenameDirectoryPreviewLabel,TRUE,TRUE,0);
+
+ /* Separator line */
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ ButtonBox = gtk_hbutton_box_new ();
+ gtk_box_pack_start(GTK_BOX(VBox),ButtonBox,FALSE,FALSE,0);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(ButtonBox),GTK_BUTTONBOX_END);
+ gtk_box_set_spacing(GTK_BOX(ButtonBox),10);
+
+ /* Button to cancel */
+ Button = Create_Button_With_Pixmap(BUTTON_CANCEL);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ //gtk_widget_grab_default(Button);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",G_CALLBACK(Destroy_Rename_Directory_Window), G_OBJECT(RenameDirectoryCombo));
+
+ /* Button to save: to rename directory */
+ Button = Create_Button_With_Pixmap(BUTTON_APPLY);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked", G_CALLBACK(Rename_Directory),NULL);
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RenameDirectoryCombo)->child)),"changed",
+ G_CALLBACK(Entry_Changed_Disable_Object),G_OBJECT(Button));
+
+ g_signal_connect_swapped(G_OBJECT(RenameDirectoryWindow),"destroy", G_CALLBACK(Destroy_Rename_Directory_Window), NULL);
+ g_signal_connect_swapped(G_OBJECT(RenameDirectoryWindow),"delete_event", G_CALLBACK(Destroy_Rename_Directory_Window), NULL);
+ g_signal_connect(G_OBJECT(RenameDirectoryWindow),"key_press_event", G_CALLBACK(Rename_Directory_Window_Key_Press),NULL);
+ gtk_widget_show(RenameDirectoryWindow);
+
+ // Just center it over the main window
+ gtk_window_set_position(GTK_WINDOW(RenameDirectoryWindow), GTK_WIN_POS_CENTER_ON_PARENT);
+ gtk_window_set_policy(GTK_WINDOW(RenameDirectoryWindow),FALSE,FALSE,TRUE);
+ gtk_widget_set_size_request(GTK_WIDGET(RenameDirectoryWindow), 350, -1);
+
+ // To avoid/minimize 'flicker'
+ gtk_widget_show_all(RenameDirectoryWindow);
+
+ // To initialize the 'Use mask' check button state
+ g_signal_emit_by_name(G_OBJECT(RenameDirectoryWithMask),"toggled");
+
+ // To initialize PreviewLabel + MaskStatusIconBox
+ g_signal_emit_by_name(G_OBJECT(GTK_BIN(RenameDirectoryMaskCombo)->child),"changed");
+
+ g_free(directory_name_utf8);
+}
+
+void Destroy_Rename_Directory_Window (void)
+{
+ if (RenameDirectoryWindow)
+ {
+ g_free(g_object_get_data(G_OBJECT(RenameDirectoryWindow),"Parent_Directory"));
+ g_free(g_object_get_data(G_OBJECT(RenameDirectoryWindow),"Current_Directory"));
+
+ // Prevent recursion (double-freeing)
+ // We can't unblock after the destroy is complete, it must be done automatically
+ g_signal_handlers_block_by_func(RenameDirectoryWindow, Destroy_Rename_Directory_Window, NULL);
+
+ if (RENAME_DIRECTORY_DEFAULT_MASK) g_free(RENAME_DIRECTORY_DEFAULT_MASK);
+ RENAME_DIRECTORY_DEFAULT_MASK = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameDirectoryMaskCombo)->child)));
+ Add_String_To_Combo_List(RenameDirectoryMaskModel, RENAME_DIRECTORY_DEFAULT_MASK);
+ Save_Rename_Directory_Masks_List(RenameDirectoryMaskModel, MASK_EDITOR_TEXT);
+
+ RENAME_DIRECTORY_WITH_MASK = GTK_TOGGLE_BUTTON(RenameDirectoryWithMask)->active;
+
+ gtk_list_store_clear(RenameDirectoryMaskModel);
+
+ gtk_widget_destroy(RenameDirectoryWindow);
+ RenameDirectoryWindow = (GtkWidget *)NULL;
+ }
+}
+
+void Rename_Directory (void)
+{
+ DIR *dir;
+ gchar *directory_parent;
+ gchar *directory_last_name;
+ gchar *directory_new_name;
+ gchar *directory_new_name_file;
+ gchar *last_path;
+ gchar *last_path_utf8;
+ gchar *new_path;
+ gchar *new_path_utf8;
+ gchar *tmp_path;
+ gchar *tmp_path_utf8;
+ gint fd_tmp;
+
+
+ if (!RenameDirectoryWindow)
+ return;
+
+ directory_parent = g_object_get_data(G_OBJECT(RenameDirectoryWindow),"Parent_Directory");
+ directory_last_name = g_object_get_data(G_OBJECT(RenameDirectoryWindow),"Current_Directory");
+
+ if (GTK_TOGGLE_BUTTON(RenameDirectoryWithMask)->active)
+ {
+ // Renamed from mask
+ gchar *mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameDirectoryMaskCombo)->child)));
+ directory_new_name = Scan_Generate_New_Directory_Name_From_Mask(ETCore->ETFileDisplayed,mask,FALSE);
+ g_free(mask);
+
+ }else
+ {
+ // Renamed 'manually'
+ directory_new_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameDirectoryCombo)->child)));
+ }
+
+ /* Check if a name for the directory have been supplied */
+ if (!directory_new_name || g_utf8_strlen(directory_new_name, -1) < 1)
+ {
+ GtkWidget *msgbox;
+
+ msgbox = msg_box_new(_("Error..."),_("You must type a directory name!"),
+ GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(directory_new_name);
+ return;
+ }
+
+ /* Check that we can write the new directory name */
+ directory_new_name_file = filename_from_display(directory_new_name);
+ if (!directory_new_name_file)
+ {
+ GtkWidget *msgbox;
+
+ msgbox = msg_box_new(_("Error..."),_("Could not convert '%s' into filename encoding. Please use another name."),GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(directory_new_name);
+ g_free(directory_new_name_file);
+ }
+
+ /* If the directory name haven't been changed, we do nothing! */
+ if (directory_last_name && directory_new_name_file
+ && strcmp(directory_last_name,directory_new_name_file)==0)
+ {
+ Destroy_Rename_Directory_Window();
+ g_free(directory_new_name);
+ g_free(directory_new_name_file);
+ return;
+ }
+
+ /* Build the current and new absolute paths */
+ last_path = g_strconcat(directory_parent, directory_last_name, NULL);
+ last_path_utf8 = filename_to_display(last_path);
+ new_path = g_strconcat(directory_parent, directory_new_name_file, NULL);
+ new_path_utf8 = filename_to_display(new_path);
+
+ /* Check if the new directory name doesn't already exists, and detect if
+ * it's only a case change (needed for vfat) */
+ if ( (dir=opendir(new_path))!=NULL )
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+ //gint button;
+
+ closedir(dir);
+ if (strcasecmp(last_path,new_path) != 0)
+ {
+ // TODO
+ // // The same directory already exists. So we ask if we want to move the files
+ // msg = g_strdup_printf(_("The directory already exists!\n(%s)\nDo you want "
+ // "to move the files?"),new_path_utf8);
+ // msgbox = msg_box_new(_("Confirm..."),msg,GTK_STOCK_DIALOG_QUESTION,
+ // BUTTON_NO,BUTTON_YES,0);
+ // g_free(msg);
+ // msg_box_hide_check_button(MSG_BOX(msgbox));
+ // button = msg_box_run(MSG_BOX(msgbox));
+ // gtk_widget_destroy(msgbox);
+ //
+ // switch (button)
+ // {
+ // case BUTTON_YES:
+ // // Here we must rename all files with the new location, and remove the directory
+ //
+ // Rename_File ()
+ //
+ // break;
+ // case BUTTON_NO:
+ // break;
+ // }
+
+ msg = g_strdup_printf(_("Can't rename because this directory name "
+ "already exists!\n(%s)"),new_path_utf8);
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ g_free(directory_new_name);
+ g_free(directory_new_name_file);
+ g_free(last_path);
+ g_free(last_path_utf8);
+ g_free(new_path);
+ g_free(new_path_utf8);
+
+ return;
+ }
+ }
+
+ /* Temporary path (useful when changing only string case) */
+ tmp_path = g_strdup_printf("%s.XXXXXX",last_path);
+ tmp_path_utf8 = filename_to_display(tmp_path);
+
+ if ( (fd_tmp = mkstemp(tmp_path)) >= 0 )
+ {
+ close(fd_tmp);
+ unlink(tmp_path);
+ }
+
+ /* Rename the directory from 'last name' to 'tmp name' */
+ if ( rename(last_path,tmp_path)!=0 )
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ msg = g_strdup_printf(_("Can't rename directory \n'%s'\n to \n'%s'!\n(%s)"),
+ last_path_utf8,tmp_path_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ g_free(directory_new_name);
+ g_free(directory_new_name_file);
+ g_free(last_path);
+ g_free(last_path_utf8);
+ g_free(new_path);
+ g_free(new_path_utf8);
+ g_free(tmp_path);
+ g_free(tmp_path_utf8);
+
+ return;
+ }
+
+ /* Rename the directory from 'tmp name' to 'new name' (final name) */
+ if ( rename(tmp_path,new_path)!=0 )
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ msg = g_strdup_printf(_("Can't rename directory \n'%s'\n to \n'%s'!\n(%s)"),
+ tmp_path_utf8,new_path_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ g_free(directory_new_name);
+ g_free(directory_new_name_file);
+ g_free(last_path);
+ g_free(last_path_utf8);
+ g_free(new_path);
+ g_free(new_path_utf8);
+ g_free(tmp_path);
+ g_free(tmp_path_utf8);
+
+ return;
+ }
+
+ ET_Update_Directory_Name_Into_File_List(last_path,new_path);
+ Browser_Tree_Rename_Directory(last_path,new_path);
+
+ // To update file path in the browser entry
+ if (ETCore->ETFileDisplayedList)
+ {
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+ }else
+ {
+ gchar *tmp = filename_to_display(Browser_Get_Current_Path());
+ Browser_Entry_Set_Text(tmp);
+ g_free(tmp);
+ }
+
+ Destroy_Rename_Directory_Window();
+ g_free(last_path);
+ g_free(last_path_utf8);
+ g_free(new_path);
+ g_free(new_path_utf8);
+ g_free(tmp_path);
+ g_free(tmp_path_utf8);
+ g_free(directory_new_name);
+ g_free(directory_new_name_file);
+ Statusbar_Message(_("Directory renamed"),TRUE);
+}
+
+gboolean Rename_Directory_Window_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ // Destroy_Rename_Directory_Window();
+ g_signal_emit_by_name(window, "destroy");
+ break;
+ }
+ }
+ return FALSE;
+}
+
+void Rename_Directory_With_Mask_Toggled (void)
+{
+ gtk_widget_set_sensitive(GTK_WIDGET(RenameDirectoryCombo), !GTK_TOGGLE_BUTTON(RenameDirectoryWithMask)->active);
+ gtk_widget_set_sensitive(GTK_WIDGET(RenameDirectoryMaskCombo), GTK_TOGGLE_BUTTON(RenameDirectoryWithMask)->active);
+ gtk_widget_set_sensitive(GTK_WIDGET(RenameDirectoryMaskStatusIconBox), GTK_TOGGLE_BUTTON(RenameDirectoryWithMask)->active);
+ gtk_widget_set_sensitive(GTK_WIDGET(RenameDirectoryPreviewLabel), GTK_TOGGLE_BUTTON(RenameDirectoryWithMask)->active);
+}
+
+
+/*
+ * Window where is typed the name of the program to run, which
+ * receives the current directory as parameter.
+ */
+void Browser_Open_Run_Program_Tree_Window (void)
+{
+ GtkWidget *Frame;
+ GtkWidget *VBox;
+ GtkWidget *HBox;
+ GtkWidget *Label;
+ GtkWidget *RunProgramComboBox;
+ GtkWidget *ButtonBox;
+ GtkWidget *Button;
+ GtkWidget *Separator;
+ GtkTooltips *Tips;
+ gchar *current_directory = NULL;
+
+ if (RunProgramTreeWindow != NULL)
+ {
+ gdk_window_raise(RunProgramTreeWindow->window);
+ return;
+ }
+
+ // Current directory
+ current_directory = g_strdup(BrowserCurrentPath);
+ if (!current_directory || strlen(current_directory)==0)
+ return;
+
+ RunProgramTreeWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(RunProgramTreeWindow),_("Browse Directory with ..."));
+ gtk_window_set_transient_for(GTK_WINDOW(RunProgramTreeWindow),GTK_WINDOW(MainWindow));
+ g_signal_connect(G_OBJECT(RunProgramTreeWindow),"destroy", G_CALLBACK(Destroy_Run_Program_Tree_Window),NULL);
+ g_signal_connect(G_OBJECT(RunProgramTreeWindow),"delete_event", G_CALLBACK(Destroy_Run_Program_Tree_Window),NULL);
+ g_signal_connect(G_OBJECT(RunProgramTreeWindow),"key_press_event", G_CALLBACK(Run_Program_Tree_Window_Key_Press),NULL);
+
+ // Just center it over mainwindow
+ gtk_window_set_position(GTK_WINDOW(RunProgramTreeWindow), GTK_WIN_POS_CENTER_ON_PARENT);
+
+ Tips = gtk_tooltips_new();
+
+ Frame = gtk_frame_new(NULL);
+ gtk_container_add(GTK_CONTAINER(RunProgramTreeWindow),Frame);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+
+ VBox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+
+ Label = gtk_label_new(_("Program to run :"));
+ gtk_box_pack_start(GTK_BOX(VBox),Label,TRUE,FALSE,0);
+ gtk_label_set_line_wrap(GTK_LABEL(Label),TRUE);
+
+ HBox = gtk_hbox_new(FALSE,4);
+ gtk_box_pack_start(GTK_BOX(VBox),HBox,FALSE,FALSE,2);
+ gtk_container_set_border_width(GTK_CONTAINER(HBox), 2);
+
+ /* The combobox to enter the program to run */
+ RunProgramComboBox = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(RunProgramModel), MISC_COMBO_TEXT);
+ gtk_box_pack_start(GTK_BOX(HBox),RunProgramComboBox,TRUE,TRUE,0);
+ gtk_widget_set_size_request(GTK_WIDGET(RunProgramComboBox),250,-1);
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(RunProgramComboBox)->child)),_("Enter the program to run. "
+ "It will receive the current directory as parameter."),NULL);
+
+ /* History list */
+ gtk_list_store_clear(RunProgramModel);
+ Load_Run_Program_With_Directory_List(RunProgramModel, MISC_COMBO_TEXT);
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RunProgramComboBox)->child)),"activate",
+ G_CALLBACK(Run_Program_With_Directory),G_OBJECT(RunProgramComboBox));
+
+ /* The button to Browse */
+ Button = Create_Button_With_Pixmap(BUTTON_BROWSE);
+ gtk_box_pack_start(GTK_BOX(HBox),Button,FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(File_Selection_Window_For_File),G_OBJECT(GTK_BIN(RunProgramComboBox)->child));
+
+ /* We attach usefull data to the combobox (into Run_Program_With_Directory) */
+ g_object_set_data(G_OBJECT(RunProgramComboBox), "Current_Directory", current_directory);
+
+ /* Separator line */
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ ButtonBox = gtk_hbutton_box_new ();
+ gtk_box_pack_start(GTK_BOX(VBox),ButtonBox,FALSE,FALSE,0);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(ButtonBox),GTK_BUTTONBOX_END);
+ gtk_box_set_spacing(GTK_BOX(ButtonBox), 10);
+
+ /* Button to cancel */
+ Button = Create_Button_With_Pixmap(BUTTON_CANCEL);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(Button);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Run_Program_Tree_Window),NULL);
+
+ /* Button to execute */
+ Button = Create_Button_With_Pixmap(BUTTON_EXECUTE);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked", G_CALLBACK(Run_Program_With_Directory),G_OBJECT(RunProgramComboBox));
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RunProgramComboBox)->child)),"changed", G_CALLBACK(Entry_Changed_Disable_Object),G_OBJECT(Button));
+ g_signal_emit_by_name(G_OBJECT(GTK_ENTRY(GTK_BIN(RunProgramComboBox)->child)),"changed",NULL);
+
+ gtk_widget_show_all(RunProgramTreeWindow);
+}
+
+void Destroy_Run_Program_Tree_Window (void)
+{
+ if (RunProgramTreeWindow)
+ {
+ gtk_widget_destroy(RunProgramTreeWindow);
+ RunProgramTreeWindow = (GtkWidget *)NULL;
+ }
+}
+
+gboolean Run_Program_Tree_Window_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ Destroy_Run_Program_Tree_Window();
+ break;
+ }
+ }
+ return FALSE;
+}
+
+void Run_Program_With_Directory (GtkObject *combobox)
+{
+ gchar *program_name;
+ gchar *current_directory;
+ GList *args_list = NULL;
+ gboolean program_ran;
+
+ if (!GTK_IS_COMBO_BOX(combobox)) return;
+
+ program_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(combobox)->child)));
+ current_directory = g_object_get_data(G_OBJECT(combobox), "Current_Directory");
+#ifdef WIN32
+ /* On win32 : 'winamp.exe "c:\path\to\dir"' succeed, while 'winamp.exe "c:\path\to\dir\"' fails */
+ ET_Win32_Path_Remove_Trailing_Backslash(current_directory);
+#endif
+
+ // List of parameters (here only one! : the current directory)
+ args_list = g_list_append(args_list,current_directory);
+
+ program_ran = Run_Program(program_name,args_list);
+ g_list_free(args_list);
+
+ if (program_ran)
+ {
+ // Append newest choice to the drop down list
+ Add_String_To_Combo_List(RunProgramModel, program_name);
+
+ // Save list attached to the combobox
+ Save_Run_Program_With_Directory_List(RunProgramModel, MISC_COMBO_TEXT);
+
+ Destroy_Run_Program_Tree_Window();
+ }
+ g_free(program_name);
+}
+
+/*
+ * Window where is typed the name of the program to run, which
+ * receives the current file as parameter.
+ */
+void Browser_Open_Run_Program_List_Window (void)
+{
+ GtkWidget *Frame;
+ GtkWidget *VBox;
+ GtkWidget *HBox;
+ GtkWidget *Label;
+ GtkWidget *RunProgramComboBox;
+ GtkWidget *ButtonBox;
+ GtkWidget *Button;
+ GtkWidget *Separator;
+ GtkTooltips *Tips;
+
+ if (RunProgramListWindow != NULL)
+ {
+ gdk_window_raise(RunProgramListWindow->window);
+ return;
+ }
+
+ RunProgramListWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(RunProgramListWindow),_("Open File with ..."));
+ gtk_window_set_transient_for(GTK_WINDOW(RunProgramListWindow),GTK_WINDOW(MainWindow));
+ g_signal_connect(G_OBJECT(RunProgramListWindow),"destroy", G_CALLBACK(Destroy_Run_Program_List_Window),NULL);
+ g_signal_connect(G_OBJECT(RunProgramListWindow),"delete_event", G_CALLBACK(Destroy_Run_Program_List_Window),NULL);
+ g_signal_connect(G_OBJECT(RunProgramListWindow),"key_press_event", G_CALLBACK(Run_Program_List_Window_Key_Press),NULL);
+
+ // Just center over mainwindow
+ gtk_window_set_position(GTK_WINDOW(RunProgramListWindow),GTK_WIN_POS_CENTER_ON_PARENT);
+
+ Tips = gtk_tooltips_new();
+
+ Frame = gtk_frame_new(NULL);
+ gtk_container_add(GTK_CONTAINER(RunProgramListWindow),Frame);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+
+ VBox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+
+ Label = gtk_label_new(_("Program to run :"));
+ gtk_box_pack_start(GTK_BOX(VBox),Label,TRUE,TRUE,0);
+ gtk_label_set_line_wrap(GTK_LABEL(Label),TRUE);
+
+ HBox = gtk_hbox_new(FALSE,4);
+ gtk_box_pack_start(GTK_BOX(VBox),HBox,FALSE,FALSE,2);
+ gtk_container_set_border_width(GTK_CONTAINER(HBox), 2);
+
+ /* The combobox to enter the program to run */
+ RunProgramComboBox = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(RunProgramModel), MISC_COMBO_TEXT);
+ gtk_box_pack_start(GTK_BOX(HBox),RunProgramComboBox,TRUE,TRUE,0);
+ gtk_widget_set_size_request(GTK_WIDGET(RunProgramComboBox),250,-1);
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(RunProgramComboBox)->child)),_("Enter the program to run. "
+ "It will receive the current file as parameter."),NULL);
+
+ /* History list */
+ gtk_list_store_clear(RunProgramModel);
+ Load_Run_Program_With_File_List(RunProgramModel, MISC_COMBO_TEXT);
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RunProgramComboBox)->child)),"activate",
+ G_CALLBACK(Run_Program_With_Selected_Files),G_OBJECT(RunProgramComboBox));
+
+ /* The button to Browse */
+ Button = Create_Button_With_Pixmap(BUTTON_BROWSE);
+ gtk_box_pack_start(GTK_BOX(HBox),Button,FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(File_Selection_Window_For_File),G_OBJECT(GTK_BIN(RunProgramComboBox)->child));
+
+ /* We attach usefull data to the combobox (into Run_Program_With_Directory) */
+ //g_object_set_data(G_OBJECT(Combo), "Current_File", current_file);
+
+ /* Separator line */
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ ButtonBox = gtk_hbutton_box_new ();
+ gtk_box_pack_start(GTK_BOX(VBox),ButtonBox,FALSE,FALSE,0);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(ButtonBox),GTK_BUTTONBOX_END);
+ gtk_box_set_spacing(GTK_BOX(ButtonBox), 10);
+
+ /* Button to cancel */
+ Button = Create_Button_With_Pixmap(BUTTON_CANCEL);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(Button);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Run_Program_List_Window),NULL);
+
+ /* Button to execute */
+ Button = Create_Button_With_Pixmap(BUTTON_EXECUTE);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked", G_CALLBACK(Run_Program_With_Selected_Files),G_OBJECT(RunProgramComboBox));
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RunProgramComboBox)->child)),"changed", G_CALLBACK(Entry_Changed_Disable_Object),G_OBJECT(Button));
+ g_signal_emit_by_name(G_OBJECT(GTK_ENTRY(GTK_BIN(RunProgramComboBox)->child)),"changed",NULL);
+
+ gtk_widget_show_all(RunProgramListWindow);
+}
+
+void Destroy_Run_Program_List_Window (void)
+{
+ if (RunProgramListWindow)
+ {
+ gtk_widget_destroy(RunProgramListWindow);
+ RunProgramListWindow = (GtkWidget *)NULL;
+ }
+}
+
+gboolean Run_Program_List_Window_Key_Press(GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ Destroy_Run_Program_List_Window();
+ break;
+ }
+ }
+ return FALSE;
+}
+
+void Run_Program_With_Selected_Files (GtkObject *combobox)
+{
+ gchar *program_name;
+ ET_File *ETFile;
+ GList *selected_paths;
+ GList *args_list = NULL;
+ GtkTreeIter iter;
+ gboolean program_ran;
+ gboolean valid;
+
+ if (!GTK_IS_COMBO_BOX(combobox) || !ETCore->ETFileDisplayedList)
+ return;
+
+ // Programe name to run
+ program_name = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(combobox)->child)));
+
+ // List of files to pass as parameters
+ selected_paths = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList)), NULL);
+ while (selected_paths)
+ {
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel), &iter, (GtkTreePath*)selected_paths->data);
+ if (valid)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(fileListModel), &iter,
+ LIST_FILE_POINTER, &ETFile,
+ -1);
+
+ args_list = g_list_append(args_list,((File_Name *)ETFile->FileNameCur->data)->value);
+ //args_list = g_list_append(args_list,((File_Name *)ETFile->FileNameCur->data)->value_utf8);
+ }
+
+ if (!selected_paths->next) break;
+ selected_paths = selected_paths->next;
+ }
+
+ program_ran = Run_Program(program_name,args_list);
+
+ g_list_foreach(selected_paths, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selected_paths);
+ g_list_free(args_list);
+
+ if (program_ran)
+ {
+ // Append newest choice to the drop down list
+ //gtk_list_store_prepend(GTK_LIST_STORE(RunProgramModel), &iter);
+ //gtk_list_store_set(RunProgramModel, &iter, MISC_COMBO_TEXT, program_name, -1);
+ Add_String_To_Combo_List(GTK_LIST_STORE(RunProgramModel), (gchar *)program_name);
+
+ // Save list attached to the combobox
+ Save_Run_Program_With_File_List(RunProgramModel, MISC_COMBO_TEXT);
+
+ Destroy_Run_Program_List_Window();
+ }
+ g_free(program_name);
+}
+
+/*
+ * Run a program with a list of parameters
+ * - args_list : list of filename (with path)
+ */
+gboolean Run_Program (gchar *program_name, GList *args_list)
+{
+#ifdef WIN32
+ GList *filelist;
+ gchar **argv;
+ gint argv_index = 0;
+ gchar *argv_join;
+ gchar *full_command;
+ STARTUPINFO siStartupInfo;
+ PROCESS_INFORMATION piProcessInfo;
+#else
+ pid_t pid;
+#endif
+ gchar *msg;
+ gchar *program_path;
+
+
+ /* Check if a name for the program have been supplied */
+ if (!program_name || strlen(program_name)<1)
+ {
+ GtkWidget *msgbox;
+
+ msgbox = msg_box_new(_("Error..."),_("You must type a program name!"),GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ return FALSE;
+ }
+
+ if ( !(program_path = Check_If_Executable_Exists(program_name)) )
+ {
+ GtkWidget *msgbox;
+ gchar *msg;
+
+ msg = g_strdup_printf(_("The program '%s' can't be found!"),program_name);
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+ return FALSE;
+ }
+
+
+#ifdef WIN32
+
+ filelist = args_list;
+
+ // See documentation : http://c.developpez.com/faq/vc/?page=ProcessThread and http://www.answers.com/topic/createprocess
+ ZeroMemory(&siStartupInfo, sizeof(siStartupInfo));
+ siStartupInfo.cb = sizeof(siStartupInfo);
+ ZeroMemory(&piProcessInfo, sizeof(piProcessInfo));
+
+ argv = g_new0(gchar *,g_list_length(filelist) + 2); // "+2" for 1rst arg 'foo' and last arg 'NULL'
+ //argv[argv_index++] = "foo";
+
+ // Load files as arguments
+ while (filelist)
+ {
+ // We must enclose filename between " because of possible (probable!) spaces in filenames"
+ argv[argv_index++] = g_strconcat("\"", (gchar *)filelist->data, "\"", NULL);
+ filelist = filelist->next;
+ }
+ argv[argv_index] = NULL; // Ends the list of arguments
+
+ // Make a command line with all arguments (joins strings together to form one long string separated by a space)
+ argv_join = g_strjoinv(" ", argv);
+ // Build the full command to pass to CreateProcess (FIX ME : it will ignore args of program)
+ full_command = g_strconcat("\"",program_path,"\" ",argv_join,NULL);
+
+ //if (CreateProcess(program_path, // Here it doesn't seem to load all the selected files
+ // argv_join,
+ if (CreateProcess(NULL,
+ full_command,
+ NULL,
+ NULL,
+ FALSE,
+ CREATE_DEFAULT_ERROR_MODE,
+ NULL,
+ NULL,
+ &siStartupInfo,
+ &piProcessInfo) == FALSE)
+ {
+ Log_Print(_("Can't execute %s (error %d)!\n"), program_name, GetLastError());
+ }
+
+ // Free allocated parameters (for each filename)
+ for (argv_index = 1; argv[argv_index]; argv_index++)
+ g_free(argv[argv_index]);
+
+ g_free(argv_join);
+ g_free(full_command);
+ g_free(program_path);
+
+#else
+
+ g_free(program_path); // Freed as never used
+
+ pid = fork();
+ switch (pid)
+ {
+ case -1:
+ Log_Print(_("Can't fork another process!\n"));
+ //exit(-1);
+ break;
+ case 0:
+ {
+ gchar **argv;
+ gint argv_index = 0;
+ gchar **argv_user;
+ gint argv_user_number;
+
+ argv_user = g_strsplit(program_name," ",0); // the string may contains arguments, space is the delimiter
+ // Number of arguments into 'argv_user'
+ for (argv_user_number=0;argv_user[argv_user_number];argv_user_number++);
+
+ argv = g_new0(gchar *,argv_user_number + g_list_length(args_list) + 1); // +1 for NULL
+
+ // Load 'user' arguments (program name and more...)
+ while (argv_user[argv_index])
+ {
+ argv[argv_index] = argv_user[argv_index];
+ argv_index++;
+ }
+ // Load arguments from 'args_list'
+ while (args_list)
+ {
+ argv[argv_index] = (gchar *)args_list->data;
+ argv_index++;
+ args_list = args_list->next;
+ }
+ argv[argv_index] = NULL;
+
+ // Execution ...
+ execvp(argv[0],argv);
+
+ msg = g_strdup_printf(_("Executed command : '%s %s'"),program_name,"...");
+ Statusbar_Message(msg,TRUE);
+ g_free(msg);
+ //_exit(-1);
+ break;
+ }
+ default:
+ break;
+ }
+ return TRUE;
+
+#endif
+}
diff --git a/src/browser.h b/src/browser.h
new file mode 100755
index 0000000..3720c38
--- /dev/null
+++ b/src/browser.h
@@ -0,0 +1,178 @@
+/* browser.h - 2000/04/28 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __BROWSER_H__
+#define __BROWSER_H__
+
+#include "et_core.h"
+
+
+/****************
+ * Declarations *
+ ****************/
+
+/*
+ * Data attached to each row of the artist list
+ */
+#if 0
+typedef struct _ArtistRow ArtistRow;
+struct _ArtistRow
+{
+ GList *AlbumList; // It's a list of AlbumList items...
+};
+#endif
+
+/*
+ * Data attached to each row of the artist list
+ */
+#if 0
+typedef struct _AlbumRow AlbumRow;
+struct _AlbumRow
+{
+ GList *ETFileList; // It's a list of ETFile items...
+};
+#endif
+
+/*
+ * To number columns of ComboBox
+ */
+enum
+{
+ MISC_COMBO_TEXT, // = 0 (First column)
+ MISC_COMBO_COUNT // = 1 (Number of columns in ComboBox)
+};
+
+
+enum
+{
+ TREE_COLUMN_DIR_NAME,
+ TREE_COLUMN_FULL_PATH,
+ TREE_COLUMN_SCANNED,
+ TREE_COLUMN_HAS_SUBDIR,
+ TREE_COLUMN_PIXBUF,
+ TREE_COLUMN_COUNT
+};
+
+enum
+{
+ LIST_FILE_NAME,
+ LIST_FILE_POINTER,
+ LIST_FILE_KEY,
+ LIST_FILE_OTHERDIR,
+ LIST_FONT_WEIGHT,
+ LIST_ROW_BACKGROUND,
+ LIST_ROW_FOREGROUND,
+ LIST_COLUMN_COUNT
+};
+
+enum
+{
+ ARTIST_NAME,
+ ARTIST_NUM_ALBUMS,
+ ARTIST_NUM_FILES,
+ ARTIST_ALBUM_LIST_POINTER,
+ ARTIST_FONT_STYLE,
+ ARTIST_FONT_WEIGHT,
+ ARTIST_ROW_FOREGROUND,
+ ARTIST_COLUMN_COUNT
+};
+
+enum
+{
+ ALBUM_NAME,
+ ALBUM_NUM_FILES,
+ ALBUM_ETFILE_LIST_POINTER,
+ ALBUM_FONT_STYLE,
+ ALBUM_FONT_WEIGHT,
+ ALBUM_ROW_FOREGROUND,
+ ALBUM_COLUMN_COUNT
+};
+
+
+GtkWidget *BrowserTree;
+GtkWidget *BrowserList;
+GtkWidget *BrowserArtistList;
+GtkWidget *BrowserAlbumList;
+GtkWidget *BrowserEntryCombo;
+GtkListStore *BrowserEntryModel;
+GtkWidget *BrowserHPaned;
+GtkWidget *ArtistAlbumVPaned;
+
+GtkWidget *RenameDirectoryWindow;
+GtkWidget *RenameDirectoryMaskCombo;
+GtkWidget *RenameDirectoryPreviewLabel;
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+GtkWidget *Create_Browser_Items (GtkWidget *parent);
+gint Browser_Tree_Select_Dir (gchar *current_path);
+void Browser_Tree_Rebuild (gchar *path_to_load);
+void Browser_Tree_Collapse (void);
+
+void Browser_List_Load_File_List (GList *etfilelist, ET_File *etfile_to_select);
+void Browser_List_Refresh_Whole_List (void);
+void Browser_List_Refresh_File_In_List (ET_File *ETFile);
+void Browser_List_Clear (void);
+void Browser_List_Select_File_By_Etfile (ET_File *ETFile, gboolean select_it);
+GtkTreePath *Browser_List_Select_File_By_Etfile2 (ET_File *searchETFile, gboolean select_it, GtkTreePath *startPath);
+void Browser_List_Select_File_By_Iter (GtkTreeIter *iter, gboolean select_it);
+void Browser_List_Select_File_By_Iter_String(const gchar* stringiter, gboolean select_it);
+ET_File *Browser_List_Select_File_By_DLM (const gchar* string, gboolean select_it);
+void Browser_List_Unselect_File_By_Etfile (ET_File *ETFile);
+void Browser_List_Unselect_File_By_Iter (GtkTreeIter *iter);
+void Browser_List_Unselect_File_By_Iter_String(const gchar* stringiter);
+void Browser_List_Scroll_Vertical (/*GtkCList *clist, GtkScrollType scroll_type,
+ gfloat position, gpointer user_data*/);
+void Browser_List_Set_Row_Appearance (GtkTreeIter *iter);
+void Browser_List_Refresh_Sort (void);
+void Browser_List_Select_All_Files (void);
+void Browser_List_Unselect_All_Files (void);
+void Browser_List_Invert_File_Selection (void);
+void Browser_List_Remove_File (ET_File *ETFile);
+ET_File *Browser_List_Get_ETFile_From_Path (GtkTreePath *path);
+ET_File *Browser_List_Get_ETFile_From_Iter (GtkTreeIter *iter);
+
+void Browser_Artist_List_Load_Files (ET_File *etfile_to_select);
+
+void Browser_Entry_Set_Text (gchar *text);
+void Browser_Label_Set_Text (gchar *text);
+
+void Browser_Display_Tree_Or_Artist_Album_List (void);
+
+void Browser_Area_Set_Sensitive (gboolean activate);
+
+void Browser_Load_Home_Directory (void);
+void Browser_Load_Default_Directory (void);
+void Browser_Reload_Directory (void);
+gchar *Browser_Tree_Get_Path_Of_Selected_Node (void);
+void Set_Current_Path_As_Default (void);
+gchar *Browser_Get_Current_Path (void);
+
+void Browser_Open_Rename_Directory_Window (void);
+void Browser_Open_Run_Program_Tree_Window (void);
+void Browser_Open_Run_Program_List_Window (void);
+
+
+#endif /* __BROWSER_H__ */
diff --git a/src/cddb.c b/src/cddb.c
new file mode 100755
index 0000000..42610da
--- /dev/null
+++ b/src/cddb.c
@@ -0,0 +1,4105 @@
+/* cddb.c - 2000/09/15 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#ifdef WIN32
+# include "win32/win32dep.h"
+#else
+# include <sys/socket.h>
+// Patch OpenBSD from Jim Geovedi
+# include <netinet/in.h>
+# include <arpa/inet.h>
+// End patch
+# include <netdb.h>
+#endif
+#include <errno.h>
+
+#include "cddb.h"
+#include "easytag.h"
+#include "et_core.h"
+#include "browser.h"
+#include "scan.h"
+#include "log.h"
+#include "misc.h"
+#include "setting.h"
+#include "id3_tag.h"
+#include "setting.h"
+#include "msgbox.h"
+#include "charset.h"
+
+enum
+{
+ CDDB_ALBUM_LIST_BITMAP,
+ CDDB_ALBUM_LIST_ALBUM,
+ CDDB_ALBUM_LIST_CATEGORY,
+ CDDB_ALBUM_LIST_DATA,
+ CDDB_ALBUM_LIST_FONT_STYLE,
+ CDDB_ALBUM_LIST_FONT_WEIGHT,
+ CDDB_ALBUM_LIST_FOREGROUND_COLOR,
+ CDDB_ALBUM_LIST_COUNT
+};
+
+enum
+{
+ CDDB_TRACK_LIST_NUMBER,
+ CDDB_TRACK_LIST_NAME,
+ CDDB_TRACK_LIST_TIME,
+ CDDB_TRACK_LIST_DATA,
+ CDDB_TRACK_LIST_ETFILE,
+ CDDB_TRACK_LIST_COUNT
+};
+
+enum
+{
+ SORT_LIST_NUMBER,
+ SORT_LIST_NAME
+};
+
+
+#define CDDB_GENRE_MAX ( sizeof(cddb_genre_vs_id3_genre)/sizeof(cddb_genre_vs_id3_genre[0]) - 1 )
+static char *cddb_genre_vs_id3_genre [][2] =
+{
+ /* Cddb Genre - ID3 Genre */
+ {"Blues", "Blues"},
+ {"Classical", "Classical"},
+ {"Country", "Country"},
+ {"Data", "Other"},
+ {"Folk", "Folk"},
+ {"Jazz", "Jazz"},
+ {"NewAge", "New Age"},
+ {"Reggae", "Reggae"},
+ {"Rock", "Rock"},
+ {"Soundtrack", "Soundtrack"},
+ {"Misc", "Other"}
+};
+
+
+// File for result of the Cddb/Freedb request (on remote access)
+gchar *CDDB_RESULT_FILE = ".easytag/cddb_result_file.tmp";
+
+
+/****************
+ * Declarations *
+ ****************/
+GtkWidget *CddbNoteBook;
+GList *CddbAlbumList = NULL;
+
+GtkWidget *CddbSearchStringCombo = NULL;
+GtkListStore *CddbSearchStringModel = NULL;
+
+GtkWidget *CddbSearchStringInResultCombo;
+GtkListStore *CddbSearchStringInResultModel = NULL;
+
+GtkWidget *CddbAlbumListView = NULL;
+GtkListStore *CddbAlbumListModel = NULL;
+GtkWidget *CddbTrackListView = NULL;
+GtkListStore *CddbTrackListModel = NULL;
+GtkWidget *CddbApplyButton = NULL;
+GtkWidget *CddbSearchButton = NULL;
+GtkWidget *CddbSearchAutoButton = NULL;
+GtkWidget *CddbStatusBar;
+guint CddbStatusBarContext;
+
+GtkWidget *CddbStopSearchButton;
+GtkWidget *CddbStopSearchAutoButton;
+GtkWidget *CddbSearchStringInResultNextButton;
+GtkWidget *CddbSearchStringInResultPrevButton;
+GtkWidget *CddbDisplayRedLinesButton;
+GtkWidget *CddbSelectAllInResultButton;
+GtkWidget *CddbUnselectAllInResultButton;
+GtkWidget *CddbInvertSelectionInResultButton;
+
+gboolean CddbStopSearch = FALSE;
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Cddb_Destroy_Window (GtkWidget *widget, GdkEvent *event, gpointer data);
+gboolean Cddb_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+void Cddb_Show_Album_Info (GtkTreeSelection *selection, gpointer data);
+
+gboolean Cddb_Free_Album_List (void);
+gboolean Cddb_Free_Track_Album_List (GList *track_list);
+
+gint Cddb_Open_Connection (gchar *host, gint port);
+void Cddb_Close_Connection (gint socket_id);
+gint Cddb_Read_Line (FILE **file, gchar **cddb_out);
+gint Cddb_Read_Http_Header (FILE **file, gchar **cddb_out);
+gint Cddb_Read_Cddb_Header (FILE **file, gchar **cddb_out);
+
+gint Cddb_Write_Result_To_File (gint socket_id, gulong *bytes_read_total);
+
+gboolean Cddb_Search_Album_List_From_String (void);
+gboolean Cddb_Search_Album_List_From_String_Freedb (void);
+gboolean Cddb_Search_Album_List_From_String_Gnudb (void);
+gboolean Cddb_Search_Album_From_Selected_Files (void);
+gboolean Cddb_Get_Album_Tracks_List_CB (GtkTreeSelection *selection, gpointer data);
+gboolean Cddb_Get_Album_Tracks_List (GtkTreeSelection *selection);
+
+void Cddb_Load_Album_List (gboolean only_red_lines);
+void Cddb_Load_Track_Album_List (GList *track_list);
+gboolean Cddb_Set_Track_Infos_To_File_List (void);
+void Cddb_Album_List_Set_Row_Appearance (GtkTreeIter *row);
+GdkPixbuf *Cddb_Get_Pixbuf_From_Server_Name (gchar *server_name);
+
+void Cddb_Search_In_All_Fields_Check_Button_Toggled (void);
+void Cddb_Search_In_All_Categories_Check_Button_Toggled (void);
+void Cddb_Set_To_All_Fields_Check_Button_Toggled (void);
+void Cddb_Stop_Search (void);
+void Cddb_Notebook_Switch_Page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data);
+void Cddb_Search_String_In_Result (GtkWidget *entry, GtkButton *button);
+void Cddb_Display_Red_Lines_In_Result (void);
+
+void Cddb_Set_Apply_Button_Sensivity (void);
+void Cddb_Set_Search_Button_Sensivity (void);
+void Cddb_Use_Dlm_2_Check_Button_Toggled (void);
+void Cddb_Show_Categories_Button_Toggled (void);
+gchar *Cddb_Generate_Request_String_With_Fields_And_Categories_Options (void);
+gchar *Cddb_Get_Id3_Genre_From_Cddb_Genre (gchar *cddb_genre);
+
+GtkWidget *Create_Cddb_Track_List_Popup_Menu (GtkWidget *listView);
+void Cddb_Track_List_Row_Selected (GtkTreeSelection *selection, gpointer data);
+gboolean Cddb_Track_List_Button_Press (GtkTreeView *treeView, GdkEventButton *event);
+
+void Cddb_Track_List_Select_All (void);
+void Cddb_Track_List_Unselect_All (void);
+void Cddb_Track_List_Invert_Selection (void);
+
+gint Cddb_Track_List_Sort_Func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data);
+void Cddb_Track_List_Sort_By_Ascending_Track_Number (void);
+void Cddb_Track_List_Sort_By_Ascending_Track_Name (void);
+
+char *base64_encode (char *str);
+gchar *Cddb_Format_Proxy_Authentification (void);
+
+
+
+/*************
+ * Functions *
+ *************/
+void Init_CddbWindow (void)
+{
+ CddbWindow = (GtkWidget *)NULL;
+}
+
+/*
+ * The window to connect to the cd data base.
+ */
+
+void Open_Cddb_Window (void)
+{
+ GtkWidget *MainVBox, *VBox, *vbox, *hbox, *notebookvbox;
+ GtkWidget *Frame;
+ GtkWidget *Table;
+ GtkWidget *Label;
+ GtkWidget *Button;
+ GtkWidget *Separator;
+ GtkWidget *ScrollWindow;
+ GtkWidget *PopupMenu;
+ GtkWidget *Icon;
+ GtkTooltips *Tips;
+ gchar *CddbAlbumList_Titles[] = { "", N_("Artist / Album"), N_("Category")};
+ gchar *CddbTrackList_Titles[] = { "#", N_("Track Name"), N_("Time")};
+ GtkCellRenderer* renderer;
+ GtkTreeViewColumn* column;
+
+ if (CddbWindow != NULL)
+ {
+ gdk_window_raise(CddbWindow->window);
+ return;
+ }
+ Tips = gtk_tooltips_new();
+ CddbWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(CddbWindow),_("CD Data Base Search"));
+ gtk_window_set_position(GTK_WINDOW(CddbWindow),GTK_WIN_POS_CENTER);
+
+ // This part is needed to set correctly the position of handle panes
+ gtk_window_set_default_size(GTK_WINDOW(CddbWindow),CDDB_WINDOW_WIDTH,CDDB_WINDOW_HEIGHT);
+
+ g_signal_connect(G_OBJECT(CddbWindow),"delete_event", G_CALLBACK(Cddb_Destroy_Window),NULL);
+ g_signal_connect(G_OBJECT(CddbWindow),"key_press_event", G_CALLBACK(Cddb_Window_Key_Press),NULL);
+
+ MainVBox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(CddbWindow),MainVBox);
+ gtk_container_set_border_width(GTK_CONTAINER(MainVBox),1);
+
+ Frame = gtk_frame_new(NULL);
+ gtk_box_pack_start(GTK_BOX(MainVBox),Frame,TRUE,TRUE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+
+ VBox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox),2);
+
+
+ /*
+ * Cddb NoteBook
+ */
+ CddbNoteBook = gtk_notebook_new();
+ gtk_notebook_popup_enable(GTK_NOTEBOOK(CddbNoteBook));
+ gtk_box_pack_start(GTK_BOX(VBox),CddbNoteBook,FALSE,FALSE,0);
+
+ /*
+ * 1 - Page for automatic search (generate the CDDBId from files)
+ */
+ Label = gtk_label_new(_("Automatic Search"));
+ Frame = gtk_frame_new(NULL);
+ gtk_notebook_append_page(GTK_NOTEBOOK(CddbNoteBook),Frame,Label);
+ gtk_container_border_width(GTK_CONTAINER(Frame),2);
+
+ notebookvbox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),notebookvbox);
+ gtk_container_border_width(GTK_CONTAINER(notebookvbox),2);
+
+ hbox = gtk_hbox_new(FALSE,4);
+ gtk_box_pack_start(GTK_BOX(notebookvbox),hbox,FALSE,FALSE,0);
+
+ Label = gtk_label_new(_("Request CD database :"));
+ gtk_misc_set_alignment(GTK_MISC(Label),1.0,0.5);
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ // Button to generate CddbId and request string from the selected files
+ CddbSearchAutoButton = Create_Button_With_Pixmap(BUTTON_SEARCH);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSearchAutoButton,FALSE,FALSE,0);
+ GTK_WIDGET_SET_FLAGS(CddbSearchAutoButton,GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(CddbSearchAutoButton);
+ g_signal_connect(GTK_OBJECT(CddbSearchAutoButton),"clicked",G_CALLBACK(Cddb_Search_Album_From_Selected_Files),NULL);
+ gtk_tooltips_set_tip(Tips,CddbSearchAutoButton,_("Request automatically the "
+ "CDDB database using the selected files (the order is important!) to "
+ "generate the CddbID."),NULL);
+
+ // Button to stop the search
+ CddbStopSearchAutoButton = Create_Button_With_Icon_And_Label(GTK_STOCK_STOP,NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbStopSearchAutoButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(CddbStopSearchAutoButton),GTK_RELIEF_NONE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ g_signal_connect(G_OBJECT(CddbStopSearchAutoButton), "clicked", G_CALLBACK(Cddb_Stop_Search), NULL);
+ gtk_tooltips_set_tip(Tips,CddbStopSearchAutoButton,_("Stop the search ..."),NULL);
+
+ // Separator line
+ Separator = gtk_vseparator_new();
+ gtk_box_pack_start(GTK_BOX(hbox),Separator,FALSE,FALSE,0);
+
+ // Check box to run the scanner
+ CddbUseLocalAccess = gtk_check_button_new_with_label(_("Use local Cddb"));
+ gtk_box_pack_start(GTK_BOX(hbox),CddbUseLocalAccess,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseLocalAccess),CDDB_USE_LOCAL_ACCESS);
+ gtk_tooltips_set_tip(Tips,CddbUseLocalAccess,_("When activating this option, after loading the "
+ "fields, the current selected scanner will be ran (the scanner window must be opened)."),NULL);
+
+ // Separator line
+ Separator = gtk_vseparator_new();
+ gtk_box_pack_start(GTK_BOX(hbox),Separator,FALSE,FALSE,0);
+
+ // Button to select all files in list
+ Button = Create_Button_With_Icon_And_Label("easytag-select-all",NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Select All Files"),NULL);
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(Action_Select_All_Files),NULL);
+
+ // Button to invert selection of files in list
+ Button = Create_Button_With_Icon_And_Label("easytag-invert-selection",NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Invert Files Selection"),NULL);
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(Action_Invert_Files_Selection),NULL);
+
+/* // Button to sort by ascending filename
+ Button = Create_Button_With_Icon_And_Label(GTK_STOCK_SORT_ASCENDING,NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Sort list ascending by filename"),NULL);
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(ET_Sort_Displayed_File_List_And_Update_UI),GINT_TO_POINTER(SORTING_BY_ASCENDING_FILENAME));
+
+ // Button to sort by ascending track number
+ Button = Create_Button_With_Icon_And_Label(GTK_STOCK_SORT_ASCENDING,NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Sort list ascending by track number"),NULL);
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(ET_Sort_Displayed_File_List_And_Update_UI),GINT_TO_POINTER(SORTING_BY_ASCENDING_TRACK_NUMBER));
+*/
+ // Button to quit
+ Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ gtk_box_pack_end(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Cddb_Destroy_Window),NULL);
+
+
+ /*
+ * 2 - Page for manual search
+ */
+ Label = gtk_label_new(_("Manual Search"));
+ Frame = gtk_frame_new(NULL);
+ gtk_notebook_append_page(GTK_NOTEBOOK(CddbNoteBook),Frame,Label);
+ gtk_container_border_width(GTK_CONTAINER(Frame),2);
+
+ notebookvbox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),notebookvbox);
+ gtk_container_border_width(GTK_CONTAINER(notebookvbox),2);
+
+ /*
+ * Words to search
+ */
+ hbox = gtk_hbox_new(FALSE,4);
+ gtk_box_pack_start(GTK_BOX(notebookvbox),hbox,FALSE,FALSE,0);
+
+ Label = gtk_label_new(_("Words :"));
+ gtk_misc_set_alignment(GTK_MISC(Label),1.0,0.5);
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ if(CddbSearchStringModel == NULL)
+ CddbSearchStringModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(CddbSearchStringModel);
+
+ CddbSearchStringCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(CddbSearchStringModel), MISC_COMBO_TEXT);
+ gtk_widget_set_size_request(GTK_WIDGET(CddbSearchStringCombo),220,-1);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSearchStringCombo,FALSE,TRUE,0);
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(CddbSearchStringCombo)->child)),_("Enter the words to "
+ "search (separated by a space or '+')"),NULL);
+ // History List
+ Load_Cddb_Search_String_List(CddbSearchStringModel, MISC_COMBO_TEXT);
+
+ g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_BIN(CddbSearchStringCombo)->child)),"activate",
+ G_CALLBACK(Cddb_Search_Album_List_From_String),NULL);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(CddbSearchStringCombo)->child),"");
+
+ // Set content of the clipboard if available
+ gtk_editable_paste_clipboard(GTK_EDITABLE(GTK_BIN(CddbSearchStringCombo)->child));
+
+ // Button to run the search
+ CddbSearchButton = Create_Button_With_Pixmap(BUTTON_SEARCH);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSearchButton,FALSE,FALSE,0);
+ GTK_WIDGET_SET_FLAGS(CddbSearchButton,GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(CddbSearchButton);
+ g_signal_connect(G_OBJECT(CddbSearchButton),"clicked",
+ G_CALLBACK(Cddb_Search_Album_List_From_String),NULL);
+ g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_BIN(CddbSearchStringCombo)->child)),"changed",
+ G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+
+ // Button to stop the search
+ CddbStopSearchButton = Create_Button_With_Icon_And_Label(GTK_STOCK_STOP,NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbStopSearchButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(CddbStopSearchButton),GTK_RELIEF_NONE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ g_signal_connect(G_OBJECT(CddbStopSearchButton), "clicked", G_CALLBACK(Cddb_Stop_Search), NULL);
+ gtk_tooltips_set_tip(Tips,CddbStopSearchButton,_("Stop the search ..."),NULL);
+
+ // Button to quit
+ Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ gtk_box_pack_end(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Cddb_Destroy_Window),NULL);
+
+
+ /*
+ * Search options
+ */
+ Frame = gtk_frame_new(_("Search In :"));
+ gtk_box_pack_start(GTK_BOX(notebookvbox),Frame,FALSE,TRUE,0);
+
+ Table = gtk_table_new(7,4,FALSE);
+ gtk_container_add(GTK_CONTAINER(Frame),Table);
+ gtk_table_set_row_spacings(GTK_TABLE(Table),1);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),1);
+
+ CddbSearchInAllFields = gtk_check_button_new_with_label(_("All Fields"));
+ Separator = gtk_vseparator_new();
+ CddbSearchInArtistField = gtk_check_button_new_with_label(_("Artist"));
+ CddbSearchInTitleField = gtk_check_button_new_with_label(_("Album"));
+ CddbSearchInTrackNameField = gtk_check_button_new_with_label(_("Track Name"));
+ CddbSearchInOtherField = gtk_check_button_new_with_label(_("Other"));
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInAllFields, 0,1,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),Separator, 1,2,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInArtistField, 2,3,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInTitleField, 3,4,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInTrackNameField,4,5,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInOtherField, 5,6,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInAllFields), CDDB_SEARCH_IN_ALL_FIELDS);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInArtistField), CDDB_SEARCH_IN_ARTIST_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInTitleField), CDDB_SEARCH_IN_TITLE_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInTrackNameField), CDDB_SEARCH_IN_TRACK_NAME_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInOtherField), CDDB_SEARCH_IN_OTHER_FIELD);
+ g_signal_connect(G_OBJECT(CddbSearchInAllFields), "toggled", G_CALLBACK(Cddb_Search_In_All_Fields_Check_Button_Toggled),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInAllFields), "toggled", G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInArtistField), "toggled", G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInTitleField), "toggled", G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInTrackNameField), "toggled", G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInOtherField), "toggled", G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+
+ CddbSeparatorH = gtk_hseparator_new();
+ gtk_table_attach(GTK_TABLE(Table),CddbSeparatorH,0,7,1,2,GTK_FILL,GTK_FILL,0,0);
+
+ CddbSearchInAllCategories = gtk_check_button_new_with_label(_("All Categories"));
+ CddbSeparatorV = gtk_vseparator_new();
+ CddbSearchInBluesCategory = gtk_check_button_new_with_label(_("Blues"));
+ CddbSearchInClassicalCategory = gtk_check_button_new_with_label(_("Classical"));
+ CddbSearchInCountryCategory = gtk_check_button_new_with_label(_("Country"));
+ CddbSearchInFolkCategory = gtk_check_button_new_with_label(_("Folk"));
+ CddbSearchInJazzCategory = gtk_check_button_new_with_label(_("Jazz"));
+ CddbSearchInMiscCategory = gtk_check_button_new_with_label(_("Misc"));
+ CddbSearchInNewageCategory = gtk_check_button_new_with_label(_("Newage"));
+ CddbSearchInReggaeCategory = gtk_check_button_new_with_label(_("Reggae"));
+ CddbSearchInRockCategory = gtk_check_button_new_with_label(_("Rock"));
+ CddbSearchInSoundtrackCategory = gtk_check_button_new_with_label(_("Soundtrack"));
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInAllCategories, 0,1,2,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSeparatorV, 1,2,2,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInBluesCategory, 2,3,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInClassicalCategory, 3,4,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInCountryCategory, 4,5,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInFolkCategory, 5,6,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInJazzCategory, 6,7,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInMiscCategory, 2,3,3,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInNewageCategory, 3,4,3,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInReggaeCategory, 4,5,3,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInRockCategory, 5,6,3,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),CddbSearchInSoundtrackCategory,6,7,3,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_label_set_line_wrap(GTK_LABEL(GTK_BIN(CddbSearchInAllCategories)->child),TRUE); // Wrap label of the check button.
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInAllCategories), CDDB_SEARCH_IN_ALL_CATEGORIES);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInBluesCategory), CDDB_SEARCH_IN_BLUES_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInClassicalCategory), CDDB_SEARCH_IN_CLASSICAL_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInCountryCategory), CDDB_SEARCH_IN_COUNTRY_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInFolkCategory), CDDB_SEARCH_IN_FOLK_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInJazzCategory), CDDB_SEARCH_IN_JAZZ_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInMiscCategory), CDDB_SEARCH_IN_MISC_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInNewageCategory), CDDB_SEARCH_IN_NEWAGE_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInReggaeCategory), CDDB_SEARCH_IN_REGGAE_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInRockCategory), CDDB_SEARCH_IN_ROCK_CATEGORY);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSearchInSoundtrackCategory),CDDB_SEARCH_IN_SOUNDTRACK_CATEGORY);
+ g_signal_connect(G_OBJECT(CddbSearchInAllCategories), "toggled",G_CALLBACK(Cddb_Search_In_All_Categories_Check_Button_Toggled),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInAllCategories), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInBluesCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInClassicalCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInCountryCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInFolkCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInJazzCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInMiscCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInNewageCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInReggaeCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInRockCategory), "toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSearchInSoundtrackCategory),"toggled",G_CALLBACK(Cddb_Set_Search_Button_Sensivity),NULL);
+ gtk_tooltips_set_tip(Tips,CddbSearchInRockCategory,_("included : funk, soul, rap, pop, industrial, metal, etc."),NULL);
+ gtk_tooltips_set_tip(Tips,CddbSearchInSoundtrackCategory,_("movies, shows"),NULL);
+ gtk_tooltips_set_tip(Tips,CddbSearchInMiscCategory,_("others that do not fit in the above categories"),NULL);
+
+ // Button to display/hide the categories
+ CddbShowCategoriesButton = gtk_toggle_button_new_with_label(_(" Categories "));
+ gtk_table_attach(GTK_TABLE(Table),CddbShowCategoriesButton,6,7,0,1,GTK_FILL,GTK_FILL,4,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbShowCategoriesButton),CDDB_SHOW_CATEGORIES);
+ g_signal_connect(G_OBJECT(CddbShowCategoriesButton),"toggled", G_CALLBACK(Cddb_Show_Categories_Button_Toggled),NULL);
+
+ /*
+ * Results command
+ */
+ Frame = gtk_frame_new(_("Results :"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,TRUE,0);
+
+ hbox = gtk_hbox_new(FALSE,4);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox),2);
+ gtk_container_add(GTK_CONTAINER(Frame),hbox);
+
+ Label = gtk_label_new(_("Search :"));
+ gtk_misc_set_alignment(GTK_MISC(Label),1.0,0.5);
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ if(CddbSearchStringInResultModel == NULL)
+ CddbSearchStringInResultModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(CddbSearchStringInResultModel);
+
+ CddbSearchStringInResultCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(CddbSearchStringInResultModel), MISC_COMBO_TEXT);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSearchStringInResultCombo,FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(CddbSearchStringInResultCombo)->child)),"activate",
+ G_CALLBACK(Cddb_Search_String_In_Result), G_OBJECT(GTK_ENTRY(GTK_BIN(CddbSearchStringInResultCombo)->child)));
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(CddbSearchStringInResultCombo)->child)),_("Enter the words to "
+ "search in the list below"),NULL);
+
+ // History List
+ Load_Cddb_Search_String_In_Result_List(CddbSearchStringInResultModel, MISC_COMBO_TEXT);
+
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(CddbSearchStringInResultCombo)->child),"");
+
+ CddbSearchStringInResultNextButton = Create_Button_With_Icon_And_Label(GTK_STOCK_GO_DOWN,NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSearchStringInResultNextButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(CddbSearchStringInResultNextButton),GTK_RELIEF_NONE);
+ g_signal_connect_swapped(G_OBJECT(CddbSearchStringInResultNextButton),"clicked", G_CALLBACK(Cddb_Search_String_In_Result), G_OBJECT(GTK_ENTRY(GTK_BIN(CddbSearchStringInResultCombo)->child)));
+ gtk_tooltips_set_tip(Tips,CddbSearchStringInResultNextButton,_("Search Next"),NULL);
+
+ CddbSearchStringInResultPrevButton = Create_Button_With_Icon_And_Label(GTK_STOCK_GO_UP,NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSearchStringInResultPrevButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(CddbSearchStringInResultPrevButton),GTK_RELIEF_NONE);
+ g_signal_connect_swapped(G_OBJECT(CddbSearchStringInResultPrevButton),"clicked", G_CALLBACK(Cddb_Search_String_In_Result), G_OBJECT(GTK_ENTRY(GTK_BIN(CddbSearchStringInResultCombo)->child)));
+ gtk_tooltips_set_tip(Tips,CddbSearchStringInResultPrevButton,_("Search Previous"),NULL);
+
+ // Separator line
+ Separator = gtk_vseparator_new();
+ gtk_box_pack_start(GTK_BOX(hbox),Separator,FALSE,FALSE,2);
+
+ CddbDisplayRedLinesButton = gtk_toggle_button_new();
+ Icon = gtk_image_new_from_stock("easytag-red-lines", GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(CddbDisplayRedLinesButton),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbDisplayRedLinesButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(CddbDisplayRedLinesButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,CddbDisplayRedLinesButton,_("Show only red lines (or show all lines) in the 'Artist / Album' list"),NULL);
+ g_signal_connect(G_OBJECT(CddbDisplayRedLinesButton),"toggled",G_CALLBACK(Cddb_Display_Red_Lines_In_Result),NULL);
+
+ CddbUnselectAllInResultButton = Create_Button_With_Icon_And_Label("easytag-unselect-all",NULL);
+ gtk_box_pack_end(GTK_BOX(hbox),CddbUnselectAllInResultButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(CddbUnselectAllInResultButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,CddbUnselectAllInResultButton,_("Unselect all lines"),NULL);
+ g_signal_connect(G_OBJECT(CddbUnselectAllInResultButton),"clicked",G_CALLBACK(Cddb_Track_List_Unselect_All),NULL);
+
+ CddbInvertSelectionInResultButton = Create_Button_With_Icon_And_Label("easytag-invert-selection",NULL);
+ gtk_box_pack_end(GTK_BOX(hbox),CddbInvertSelectionInResultButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(CddbInvertSelectionInResultButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,CddbInvertSelectionInResultButton,_("Invert lines selection"),NULL);
+ g_signal_connect(G_OBJECT(CddbInvertSelectionInResultButton),"clicked",G_CALLBACK(Cddb_Track_List_Invert_Selection),NULL);
+
+ CddbSelectAllInResultButton = Create_Button_With_Icon_And_Label("easytag-select-all",NULL);
+ gtk_box_pack_end(GTK_BOX(hbox),CddbSelectAllInResultButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(CddbSelectAllInResultButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,CddbSelectAllInResultButton,_("Select all lines"),NULL);
+ g_signal_connect(G_OBJECT(CddbSelectAllInResultButton),"clicked",G_CALLBACK(Cddb_Track_List_Select_All),NULL);
+
+ /*
+ * Result of search
+ */
+ CddbWindowHPaned = gtk_hpaned_new();
+ gtk_box_pack_start(GTK_BOX(VBox),CddbWindowHPaned,TRUE,TRUE,0);
+ gtk_paned_set_position(GTK_PANED(CddbWindowHPaned),CDDB_PANE_HANDLE_POSITION);
+
+ // List of albums
+ ScrollWindow = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_widget_set_size_request(GTK_WIDGET(ScrollWindow),-1,100);
+ gtk_paned_pack1(GTK_PANED(CddbWindowHPaned),ScrollWindow,TRUE,FALSE);
+
+ CddbAlbumListModel = gtk_list_store_new(CDDB_ALBUM_LIST_COUNT,
+ GDK_TYPE_PIXBUF,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_POINTER,
+ PANGO_TYPE_STYLE,
+ G_TYPE_INT,
+ GDK_TYPE_COLOR);
+ CddbAlbumListView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(CddbAlbumListModel));
+
+ renderer = gtk_cell_renderer_pixbuf_new();
+ column = gtk_tree_view_column_new_with_attributes(_(CddbAlbumList_Titles[0]), renderer,
+ "pixbuf", CDDB_ALBUM_LIST_BITMAP,
+ NULL);
+ gtk_tree_view_column_set_resizable(column, FALSE);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(CddbAlbumListView), column);
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(_(CddbAlbumList_Titles[1]), renderer,
+ "text", CDDB_ALBUM_LIST_ALBUM,
+ "weight", CDDB_ALBUM_LIST_FONT_WEIGHT,
+ "style", CDDB_ALBUM_LIST_FONT_STYLE,
+ "foreground-gdk", CDDB_ALBUM_LIST_FOREGROUND_COLOR,
+ NULL);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(CddbAlbumListView), column);
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(_(CddbAlbumList_Titles[2]), renderer,
+ "text", CDDB_ALBUM_LIST_CATEGORY,
+ "weight", CDDB_ALBUM_LIST_FONT_WEIGHT,
+ "style", CDDB_ALBUM_LIST_FONT_STYLE,
+ "foreground-gdk", CDDB_ALBUM_LIST_FOREGROUND_COLOR,
+ NULL);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(CddbAlbumListView), column);
+ //gtk_tree_view_columns_autosize(GTK_TREE_VIEW(CddbAlbumListView));
+
+ gtk_container_add(GTK_CONTAINER(ScrollWindow), CddbAlbumListView);
+
+ gtk_tree_view_set_cursor(GTK_TREE_VIEW(CddbAlbumListView), gtk_tree_path_new_first(), NULL, FALSE);
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbAlbumListView))),
+ "changed", G_CALLBACK(Cddb_Show_Album_Info), NULL);
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbAlbumListView))),
+ "changed", G_CALLBACK(Cddb_Get_Album_Tracks_List_CB), NULL);
+
+ // List of tracks
+ ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+
+
+ gtk_widget_set_size_request(GTK_WIDGET(ScrollWindow), -1, 100);
+ gtk_paned_pack2(GTK_PANED(CddbWindowHPaned), ScrollWindow, TRUE, FALSE);
+
+ CddbTrackListModel = gtk_list_store_new(CDDB_TRACK_LIST_COUNT,
+ G_TYPE_UINT,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+ CddbTrackListView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(CddbTrackListModel));
+ renderer = gtk_cell_renderer_text_new();
+ g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL); // Align to the right
+ column = gtk_tree_view_column_new_with_attributes(_(CddbTrackList_Titles[0]), renderer,
+ "text", CDDB_TRACK_LIST_NUMBER, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(CddbTrackListView), column);
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(CddbTrackListModel), SORT_LIST_NUMBER,
+ Cddb_Track_List_Sort_Func, GINT_TO_POINTER(SORT_LIST_NUMBER), NULL);
+ gtk_tree_view_column_set_sort_column_id(column, SORT_LIST_NUMBER);
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(_(CddbTrackList_Titles[1]), renderer,
+ "text", CDDB_TRACK_LIST_NAME, NULL);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(CddbTrackListView), column);
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(CddbTrackListModel), SORT_LIST_NAME,
+ Cddb_Track_List_Sort_Func, GINT_TO_POINTER(SORT_LIST_NAME), NULL);
+ gtk_tree_view_column_set_sort_column_id(column, SORT_LIST_NAME);
+
+ renderer = gtk_cell_renderer_text_new();
+ g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL); // Align to the right
+ column = gtk_tree_view_column_new_with_attributes(_(CddbTrackList_Titles[2]), renderer,
+ "text", CDDB_TRACK_LIST_TIME, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(CddbTrackListView), column);
+
+ //gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(CddbTrackListModel), SORT_LIST_NUMBER, GTK_SORT_ASCENDING);
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(CddbTrackListView), TRUE);
+
+ gtk_container_add(GTK_CONTAINER(ScrollWindow),CddbTrackListView);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbTrackListView)),
+ GTK_SELECTION_MULTIPLE);
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbTrackListView))),
+ "changed", G_CALLBACK(Cddb_Track_List_Row_Selected), NULL);
+ g_signal_connect(G_OBJECT(CddbTrackListView),"button_press_event", G_CALLBACK(Cddb_Track_List_Button_Press),NULL);
+ gtk_tooltips_set_tip(Tips, CddbTrackListView, _("Select lines to 'apply' to "
+ "your files list. All lines will be processed if no line is selected.\n"
+ "You can also reorder lines in this list before using 'apply' button."), NULL);
+
+ // Create Popup Menu on CddbTrackCList
+ PopupMenu = Create_Cddb_Track_List_Popup_Menu(CddbTrackListView);
+
+ /*
+ * Apply results to fields...
+ */
+ Frame = gtk_frame_new(_("Set Into :"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,TRUE,0);
+
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox),2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+
+ CddbSetToAllFields = gtk_check_button_new_with_label(_("All"));
+ Separator = gtk_vseparator_new();
+ CddbSetToFileName = gtk_check_button_new_with_label(_("File Name"));
+ CddbSetToTitle = gtk_check_button_new_with_label(_("Title"));
+ CddbSetToArtist = gtk_check_button_new_with_label(_("Artist"));
+ CddbSetToAlbum = gtk_check_button_new_with_label(_("Album"));
+ CddbSetToYear = gtk_check_button_new_with_label(_("Year"));
+ CddbSetToTrack = gtk_check_button_new_with_label(_("Track #"));
+ CddbSetToTrackTotal = gtk_check_button_new_with_label(_("# Tracks"));
+ CddbSetToGenre = gtk_check_button_new_with_label(_("Genre"));
+ hbox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToAllFields, FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(hbox),Separator, FALSE,FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToFileName, FALSE,FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToTitle, FALSE,FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToArtist, FALSE,FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToAlbum, FALSE,FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToYear, FALSE,FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToTrack, FALSE,FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToTrackTotal,FALSE,FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbSetToGenre, FALSE,FALSE,2);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToAllFields), CDDB_SET_TO_ALL_FIELDS);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToTitle), CDDB_SET_TO_TITLE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToArtist), CDDB_SET_TO_ARTIST);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToAlbum), CDDB_SET_TO_ALBUM);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToYear), CDDB_SET_TO_YEAR);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToTrack), CDDB_SET_TO_TRACK);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToTrackTotal),CDDB_SET_TO_TRACK_TOTAL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToGenre), CDDB_SET_TO_GENRE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbSetToFileName), CDDB_SET_TO_FILE_NAME);
+ g_signal_connect(G_OBJECT(CddbSetToAllFields), "toggled",G_CALLBACK(Cddb_Set_To_All_Fields_Check_Button_Toggled),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToAllFields), "toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToTitle), "toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToArtist), "toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToAlbum), "toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToYear), "toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToTrack), "toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToTrackTotal),"toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToGenre), "toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+ g_signal_connect(G_OBJECT(CddbSetToFileName), "toggled",G_CALLBACK(Cddb_Set_Apply_Button_Sensivity),NULL);
+
+ hbox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+
+ // Check box to run the scanner
+ CddbRunScanner = gtk_check_button_new_with_label(_("Run the current scanner for each file"));
+ gtk_box_pack_start(GTK_BOX(hbox),CddbRunScanner,FALSE,TRUE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbRunScanner),CDDB_RUN_SCANNER);
+ gtk_tooltips_set_tip(Tips,CddbRunScanner,_("When activating this option, after loading the "
+ "fields, the current selected scanner will be ran (the scanner window must be opened)."),NULL);
+
+ // Check box to use DLM (also used in the preferences window)
+ CddbUseDLM2 = gtk_check_button_new_with_label(_("Match lines with the Levenshtein algorithm"));
+ gtk_box_pack_start(GTK_BOX(hbox),CddbUseDLM2,FALSE,FALSE,2);
+ // Doesn't activate it by default because if the new user don't pay attention to it,
+ // it will not understand why the cddb results aren't loaded correctly...
+ //gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM2),CDDB_USE_DLM);
+ gtk_tooltips_set_tip(Tips,CddbUseDLM2,_("When activating this option, the "
+ "Levenshtein algorithm (DLM : Damerau-Levenshtein Metric) will be used "
+ "to match the CDDB title against every file name in the current folder, "
+ "and to select the best match. This will be used when selecting the "
+ "corresponding audio file, or applying cddb results, instead of using "
+ "directly the position order."),NULL);
+ g_signal_connect(G_OBJECT(CddbUseDLM2),"toggled",G_CALLBACK(Cddb_Use_Dlm_2_Check_Button_Toggled),NULL);
+
+ // Button to apply
+ CddbApplyButton = Create_Button_With_Pixmap(BUTTON_APPLY);
+ gtk_box_pack_end(GTK_BOX(hbox),CddbApplyButton,FALSE,FALSE,2);
+ g_signal_connect(G_OBJECT(CddbApplyButton),"clicked", G_CALLBACK(Cddb_Set_Track_Infos_To_File_List),NULL);
+ gtk_tooltips_set_tip(Tips,CddbApplyButton,_("Load the selected lines or all lines (if no line selected)."),NULL);
+
+ /*
+ * Status bar
+ */
+ CddbStatusBar = gtk_statusbar_new();
+ gtk_box_pack_start(GTK_BOX(MainVBox),CddbStatusBar,FALSE,TRUE,0);
+ gtk_widget_set_size_request(CddbStatusBar, 300, -1);
+ CddbStatusBarContext = gtk_statusbar_get_context_id(GTK_STATUSBAR(CddbStatusBar),"Messages");
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,_("Ready to search..."));
+
+
+ g_signal_emit_by_name(G_OBJECT(GTK_ENTRY(GTK_BIN(CddbSearchStringCombo)->child)),"changed");
+ g_signal_emit_by_name(G_OBJECT(CddbSearchInAllFields),"toggled");
+ g_signal_emit_by_name(G_OBJECT(CddbSearchInAllCategories),"toggled");
+ g_signal_emit_by_name(G_OBJECT(CddbSetToAllFields),"toggled");
+ CddbStopSearch = FALSE;
+
+ gtk_widget_show_all(CddbWindow);
+ if (SET_CDDB_WINDOW_POSITION
+ && CDDB_WINDOW_X > 0 && CDDB_WINDOW_Y > 0)
+ {
+ gdk_window_move(CddbWindow->window,CDDB_WINDOW_X,CDDB_WINDOW_Y);
+ }
+ // Force resize window
+ gtk_widget_set_size_request(GTK_WIDGET(CddbSearchInAllFields), CddbSearchInAllCategories->allocation.width, -1);
+ g_signal_emit_by_name(G_OBJECT(CddbShowCategoriesButton),"toggled");
+
+ g_signal_connect(GTK_OBJECT(CddbNoteBook),"switch-page",G_CALLBACK(Cddb_Notebook_Switch_Page),NULL);
+ //g_signal_emit_by_name(G_OBJECT(CddbNoteBook),"switch-page"); // Cause crash... => the 2 following lines to fix
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(CddbNoteBook),1);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(CddbNoteBook),0);
+}
+
+gboolean Cddb_Destroy_Window (GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+
+ CddbStopSearch = TRUE;
+ if (CddbWindow)
+ {
+ Cddb_Window_Apply_Changes();
+
+ // Save combobox history lists before exit
+ Save_Cddb_Search_String_List(CddbSearchStringModel, MISC_COMBO_TEXT);
+ Save_Cddb_Search_String_In_Result_List(CddbSearchStringInResultModel, MISC_COMBO_TEXT);
+
+ // FIX ME : This causes problem with memory !!
+ Cddb_Free_Album_List();
+
+ gtk_widget_destroy(CddbWindow);
+ CddbWindow = NULL;
+ CddbAlbumList = NULL;
+ CddbSearchStringCombo = NULL;
+ CddbSearchStringModel = NULL;
+ CddbAlbumListView = NULL;
+ CddbAlbumListModel = NULL;
+ CddbTrackListView = NULL;
+ CddbTrackListModel = NULL;
+ CddbApplyButton = NULL;
+ CddbSearchButton = NULL;
+ CddbSearchAutoButton = NULL;
+ }
+ return FALSE;
+}
+
+/*
+ * For the configuration file...
+ */
+void Cddb_Window_Apply_Changes (void)
+{
+ if (CddbWindow)
+ {
+ gint x, y, width, height;
+
+ if ( CddbWindow->window && gdk_window_is_visible(CddbWindow->window)
+ && gdk_window_get_state(CddbWindow->window)!=GDK_WINDOW_STATE_MAXIMIZED )
+ {
+ // Position and Origin of the window
+ gdk_window_get_root_origin(CddbWindow->window,&x,&y);
+ CDDB_WINDOW_X = x;
+ CDDB_WINDOW_Y = y;
+ gdk_window_get_size(CddbWindow->window,&width,&height);
+ CDDB_WINDOW_WIDTH = width;
+ CDDB_WINDOW_HEIGHT = height;
+
+ // Handle panes position
+ CDDB_PANE_HANDLE_POSITION = GTK_PANED(CddbWindowHPaned)->child1_size;
+ }
+
+ CDDB_SEARCH_IN_ALL_FIELDS = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInAllFields));
+ CDDB_SEARCH_IN_ARTIST_FIELD = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInArtistField));
+ CDDB_SEARCH_IN_TITLE_FIELD = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInTitleField));
+ CDDB_SEARCH_IN_TRACK_NAME_FIELD = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInTrackNameField));
+ CDDB_SEARCH_IN_OTHER_FIELD = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInOtherField));
+ CDDB_SHOW_CATEGORIES = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbShowCategoriesButton));
+
+ CDDB_SEARCH_IN_ALL_CATEGORIES = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInAllCategories));
+ CDDB_SEARCH_IN_BLUES_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInBluesCategory));
+ CDDB_SEARCH_IN_CLASSICAL_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInClassicalCategory));
+ CDDB_SEARCH_IN_COUNTRY_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInCountryCategory));
+ CDDB_SEARCH_IN_FOLK_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInFolkCategory));
+ CDDB_SEARCH_IN_JAZZ_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInJazzCategory));
+ CDDB_SEARCH_IN_MISC_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInMiscCategory));
+ CDDB_SEARCH_IN_NEWAGE_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInNewageCategory));
+ CDDB_SEARCH_IN_REGGAE_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInReggaeCategory));
+ CDDB_SEARCH_IN_ROCK_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInRockCategory));
+ CDDB_SEARCH_IN_SOUNDTRACK_CATEGORY = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInSoundtrackCategory));
+
+ CDDB_SET_TO_ALL_FIELDS = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToAllFields));
+ CDDB_SET_TO_TITLE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTitle));
+ CDDB_SET_TO_ARTIST = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToArtist));
+ CDDB_SET_TO_ALBUM = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToAlbum));
+ CDDB_SET_TO_YEAR = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToYear));
+ CDDB_SET_TO_TRACK = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTrack));
+ CDDB_SET_TO_TRACK_TOTAL = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTrackTotal));
+ CDDB_SET_TO_GENRE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToGenre));
+ CDDB_SET_TO_FILE_NAME = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToFileName));
+
+ CDDB_RUN_SCANNER = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbRunScanner));
+ CDDB_USE_DLM = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbUseDLM2));
+ CDDB_USE_LOCAL_ACCESS = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbUseLocalAccess));
+
+ }
+}
+
+
+gboolean Cddb_Window_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ Cddb_Destroy_Window(window, event, NULL);
+ break;
+ }
+ }
+ return FALSE;
+}
+
+
+void Cddb_Search_In_All_Fields_Check_Button_Toggled (void)
+{
+ if (CddbSearchInAllFields)
+ {
+ gtk_widget_set_sensitive(CddbSearchInArtistField, !GTK_TOGGLE_BUTTON(CddbSearchInAllFields)->active);
+ gtk_widget_set_sensitive(CddbSearchInTitleField, !GTK_TOGGLE_BUTTON(CddbSearchInAllFields)->active);
+ gtk_widget_set_sensitive(CddbSearchInTrackNameField,!GTK_TOGGLE_BUTTON(CddbSearchInAllFields)->active);
+ gtk_widget_set_sensitive(CddbSearchInOtherField, !GTK_TOGGLE_BUTTON(CddbSearchInAllFields)->active);
+ }
+}
+void Cddb_Show_Categories_Button_Toggled (void)
+{
+ if (CddbShowCategoriesButton)
+ {
+ if (GTK_TOGGLE_BUTTON(CddbShowCategoriesButton)->active)
+ {
+ gtk_widget_show(CddbSeparatorH);
+ gtk_widget_show(CddbSearchInAllCategories);
+ gtk_widget_show(CddbSeparatorV);
+ gtk_widget_show(CddbSearchInBluesCategory);
+ gtk_widget_show(CddbSearchInClassicalCategory);
+ gtk_widget_show(CddbSearchInCountryCategory);
+ gtk_widget_show(CddbSearchInFolkCategory);
+ gtk_widget_show(CddbSearchInJazzCategory);
+ gtk_widget_show(CddbSearchInMiscCategory);
+ gtk_widget_show(CddbSearchInNewageCategory);
+ gtk_widget_show(CddbSearchInReggaeCategory);
+ gtk_widget_show(CddbSearchInRockCategory);
+ gtk_widget_show(CddbSearchInSoundtrackCategory);
+ }else
+ {
+ gtk_widget_hide(CddbSeparatorH);
+ gtk_widget_hide(CddbSearchInAllCategories);
+ gtk_widget_hide(CddbSeparatorV);
+ gtk_widget_hide(CddbSearchInBluesCategory);
+ gtk_widget_hide(CddbSearchInClassicalCategory);
+ gtk_widget_hide(CddbSearchInCountryCategory);
+ gtk_widget_hide(CddbSearchInFolkCategory);
+ gtk_widget_hide(CddbSearchInJazzCategory);
+ gtk_widget_hide(CddbSearchInMiscCategory);
+ gtk_widget_hide(CddbSearchInNewageCategory);
+ gtk_widget_hide(CddbSearchInReggaeCategory);
+ gtk_widget_hide(CddbSearchInRockCategory);
+ gtk_widget_hide(CddbSearchInSoundtrackCategory);
+ }
+ // Force the window to be redrawed
+ gtk_widget_queue_resize(CddbWindow);
+ }
+}
+void Cddb_Search_In_All_Categories_Check_Button_Toggled (void)
+{
+ if (CddbSearchInAllCategories)
+ {
+ gtk_widget_set_sensitive(CddbSearchInBluesCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInClassicalCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInCountryCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInFolkCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInJazzCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInMiscCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInNewageCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInReggaeCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInRockCategory, !GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ gtk_widget_set_sensitive(CddbSearchInSoundtrackCategory,!GTK_TOGGLE_BUTTON(CddbSearchInAllCategories)->active);
+ }
+}
+void Cddb_Set_To_All_Fields_Check_Button_Toggled (void)
+{
+ if (CddbSetToAllFields)
+ {
+ gtk_widget_set_sensitive(CddbSetToTitle, !GTK_TOGGLE_BUTTON(CddbSetToAllFields)->active);
+ gtk_widget_set_sensitive(CddbSetToArtist, !GTK_TOGGLE_BUTTON(CddbSetToAllFields)->active);
+ gtk_widget_set_sensitive(CddbSetToAlbum, !GTK_TOGGLE_BUTTON(CddbSetToAllFields)->active);
+ gtk_widget_set_sensitive(CddbSetToYear, !GTK_TOGGLE_BUTTON(CddbSetToAllFields)->active);
+ gtk_widget_set_sensitive(CddbSetToTrack, !GTK_TOGGLE_BUTTON(CddbSetToAllFields)->active);
+ gtk_widget_set_sensitive(CddbSetToTrackTotal,!GTK_TOGGLE_BUTTON(CddbSetToAllFields)->active);
+ gtk_widget_set_sensitive(CddbSetToGenre, !GTK_TOGGLE_BUTTON(CddbSetToAllFields)->active);
+ gtk_widget_set_sensitive(CddbSetToFileName, !GTK_TOGGLE_BUTTON(CddbSetToAllFields)->active);
+ }
+}
+
+void Cddb_Set_Apply_Button_Sensivity (void)
+{
+ gboolean cddbsettoallfields, cddbsettotitle, cddbsettoartist, cddbsettoalbum,
+ cddbsettoyear, cddbsettotrack, cddbsettotracktotal, cddbsettogenre, cddbsettofilename;
+
+ // Tag fields
+ cddbsettoallfields = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToAllFields));
+ cddbsettotitle = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTitle));
+ cddbsettoartist = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToArtist));
+ cddbsettoalbum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToAlbum));
+ cddbsettoyear = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToYear));
+ cddbsettotrack = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTrack));
+ cddbsettotracktotal = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTrackTotal));
+ cddbsettogenre = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToGenre));
+ cddbsettofilename = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToFileName));
+ if ( CddbApplyButton && gtk_tree_model_iter_n_children(GTK_TREE_MODEL(CddbTrackListModel), NULL) > 0
+ && (cddbsettoallfields || cddbsettotitle || cddbsettoartist || cddbsettoalbum || cddbsettoyear
+ || cddbsettotrack || cddbsettotracktotal || cddbsettogenre || cddbsettofilename) )
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbApplyButton),TRUE);
+ } else
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbApplyButton),FALSE);
+ }
+}
+
+void Cddb_Use_Dlm_2_Check_Button_Toggled (void)
+{
+ if (CddbUseDLM2)
+ {
+ CDDB_USE_DLM = GTK_TOGGLE_BUTTON(CddbUseDLM2)->active;
+ }
+}
+
+void Cddb_Set_Search_Button_Sensivity (void)
+{
+ gboolean cddbinallfields, cddbinartistfield, cddbintitlefield, cddbintracknamefield, cddbinotherfield;
+ gboolean cddbinallcategories, cddbinbluescategory, cddbinclassicalcategory, cddbincountrycategory,
+ cddbinfolkcategory, cddbinjazzcategory, cddbinmisccategory, cddbinnewagecategory,
+ cddbinreggaecategory, cddbinrockcategory, cddbinsoundtrackcategory;
+
+ // Fields
+ cddbinallfields = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInAllFields));
+ cddbinartistfield = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInArtistField));
+ cddbintitlefield = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInTitleField));
+ cddbintracknamefield = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInTrackNameField));
+ cddbinotherfield = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInOtherField));
+ // Categories
+ cddbinallcategories = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInAllCategories));
+ cddbinbluescategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInBluesCategory));
+ cddbinclassicalcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInClassicalCategory));
+ cddbincountrycategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInCountryCategory));
+ cddbinfolkcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInFolkCategory));
+ cddbinjazzcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInJazzCategory));
+ cddbinmisccategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInMiscCategory));
+ cddbinnewagecategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInNewageCategory));
+ cddbinreggaecategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInReggaeCategory));
+ cddbinrockcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInRockCategory));
+ cddbinsoundtrackcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInSoundtrackCategory));
+
+ if ( CddbSearchButton && CddbSearchStringCombo && g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbSearchStringCombo)->child)), -1) > 0
+ && (cddbinallfields || cddbinartistfield || cddbintitlefield || cddbintracknamefield || cddbinotherfield)
+ && (cddbinallcategories || cddbinbluescategory || cddbinclassicalcategory || cddbincountrycategory
+ || cddbinfolkcategory || cddbinjazzcategory || cddbinmisccategory || cddbinnewagecategory
+ || cddbinreggaecategory || cddbinrockcategory || cddbinsoundtrackcategory) )
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbSearchButton),TRUE);
+ } else
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbSearchButton),FALSE);
+ }
+}
+
+void Cddb_Stop_Search (void)
+{
+ CddbStopSearch = TRUE;
+}
+
+void Cddb_Notebook_Switch_Page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data)
+{
+ gint page_total;
+ guint page_tmp;
+
+ // For size reasons, we display children of the current tab, and hide those
+ // of others tabs => better display of notebook
+ page_total = gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook));
+ for (page_tmp = 0; page_tmp < page_total; page_tmp++)
+ {
+ GtkWidget *frame = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_tmp); // Child of the page
+ if (frame)
+ {
+ GtkWidget *box = GTK_BIN(frame)->child;
+ if (box)
+ {
+ if (page_tmp == page_num)
+ {
+ // Display children of page_tmp
+ gtk_widget_show(GTK_WIDGET(box));
+ }else
+ {
+ // Hide children of page_tmp
+ gtk_widget_hide(GTK_WIDGET(box));
+ }
+ }
+ }
+ }
+}
+
+
+/*
+ * Searches the Cddb Album List for specific terms
+ * (this is not search the remote CDDB database...)
+ */
+void Cddb_Search_String_In_Result (GtkWidget *entry, GtkButton *button)
+{
+ gchar *string;
+ gchar buffer[256];
+ gchar *pbuffer;
+ gchar *text;
+ gchar *temp;
+ gint i;
+ gint *indices = NULL;
+ gint toloop;
+ gint rowcount;
+ GtkTreeSelection* treeSelection;
+ GtkTreeIter iter;
+ GtkTreePath *rowpath;
+ gboolean result;
+ gboolean itemselected = FALSE;
+ GtkTreeIter itercopy = iter;
+
+ if (!CddbWindow || !CddbAlbumListView)
+ return;
+
+ if (!entry || !button)
+ return;
+
+ string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+ if (!string || strlen(string)==0)
+ return;
+ temp = g_utf8_strdown(string, -1);
+ g_free(string);
+ string = temp;
+
+ Add_String_To_Combo_List(CddbSearchStringInResultModel, string);
+
+ /* Get the currently selected row into &iter and set itemselected to reflect this */
+ treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbAlbumListView));
+ if (gtk_tree_selection_get_selected(treeSelection, NULL, &iter) == TRUE)
+ itemselected = TRUE;
+
+ rowcount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(CddbAlbumListModel), NULL);
+
+ if (button != GTK_BUTTON(CddbSearchStringInResultPrevButton)) /* Next result button has been clicked */
+ {
+ /* Search in the album list (from top to bottom) */
+ if (itemselected == TRUE)
+ {
+ gtk_tree_selection_unselect_iter(treeSelection, &iter);
+ result = gtk_tree_model_iter_next(GTK_TREE_MODEL(CddbAlbumListModel), &iter);
+ } else
+ {
+ result = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(CddbAlbumListModel), &iter);
+ }
+
+ itercopy = iter;
+
+ /* If list entries follow the previously selected item, loop through them looking for a match */
+ if(result == TRUE)
+ {
+ do /* Search following results */
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbAlbumListModel), &iter, CDDB_ALBUM_LIST_ALBUM, &text, -1);
+ g_utf8_strncpy(buffer, text, 256);
+
+ temp = g_utf8_strdown(buffer, -1);
+ pbuffer = temp;
+
+ if (pbuffer && strstr(pbuffer, string) != NULL)
+ {
+ gtk_tree_selection_select_iter(treeSelection, &iter);
+ rowpath = gtk_tree_model_get_path(GTK_TREE_MODEL(CddbAlbumListModel), &iter);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(CddbAlbumListView), rowpath, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(rowpath);
+ g_free(text);
+ g_free(temp);
+ g_free(string);
+ return;
+ }
+ g_free(temp);
+ g_free(text);
+ } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(CddbAlbumListModel), &iter));
+ }
+
+ /* If no results have been found, start the search again from the beginning */
+ /* If we have had an item selected, we need to stop at that one to avoid re-searching the same entries */
+ if(itemselected == TRUE)
+ {
+ rowpath = gtk_tree_model_get_path(GTK_TREE_MODEL(CddbAlbumListModel), &itercopy);
+ if (rowpath)
+ indices = gtk_tree_path_get_indices(rowpath);
+ gtk_tree_path_free(rowpath);
+ toloop = indices[0];
+ } else
+ {
+ toloop = rowcount;
+ }
+
+ for (i = 0; i < rowcount; i++)
+ {
+ gboolean found;
+
+ if (i == 0)
+ found = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(CddbAlbumListModel), &itercopy);
+ else
+ found = gtk_tree_model_iter_next(GTK_TREE_MODEL(CddbAlbumListModel), &itercopy);
+
+ if (found)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbAlbumListModel), &itercopy, CDDB_ALBUM_LIST_ALBUM, &text, -1);
+ g_utf8_strncpy(buffer, text, 256);
+
+ temp = g_utf8_strdown(buffer, -1);
+ pbuffer = temp;
+
+ if (pbuffer && strstr(pbuffer,string) != NULL)
+ {
+ gtk_tree_selection_select_iter(treeSelection, &itercopy);
+ rowpath = gtk_tree_model_get_path(GTK_TREE_MODEL(CddbAlbumListModel), &itercopy);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(CddbAlbumListView), rowpath, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(rowpath);
+ g_free(text);
+ g_free(temp);
+ g_free(string);
+ return;
+ }
+ g_free(temp);
+ g_free(text);
+ }
+ }
+ } else
+ {
+ /* Previous result button */
+
+ /* Search in the album list (from bottom/selected-item to top) */
+ if (itemselected == TRUE)
+ {
+ rowpath = gtk_tree_model_get_path(GTK_TREE_MODEL(CddbAlbumListModel), &iter);
+ gtk_tree_path_prev(rowpath);
+ } else
+ {
+ rowpath = gtk_tree_path_new_from_indices(gtk_tree_model_iter_n_children(GTK_TREE_MODEL(CddbAlbumListModel), NULL) - 1, -1);
+ }
+
+ do
+ {
+ gboolean found;
+
+ found = gtk_tree_model_get_iter(GTK_TREE_MODEL(CddbAlbumListModel), &iter, rowpath);
+ if (found)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbAlbumListModel), &iter, CDDB_ALBUM_LIST_ALBUM, &text, -1);
+ g_utf8_strncpy(buffer,text,256);
+ temp = g_utf8_strdown(buffer, -1);
+ pbuffer = temp;
+
+ if (pbuffer && strstr(pbuffer,string) != NULL)
+ {
+ gtk_tree_selection_select_iter(treeSelection, &iter);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(CddbAlbumListView), rowpath, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(rowpath);
+ g_free(text);
+ g_free(temp);
+ g_free(string);
+ return;
+ }
+ g_free(temp);
+ g_free(text);
+ }
+ } while(gtk_tree_path_prev(rowpath));
+ gtk_tree_path_free(rowpath);
+ }
+ g_free(string);
+}
+
+
+/*
+ * Show collected infos of the album in the status bar
+ */
+void Cddb_Show_Album_Info (GtkTreeSelection *selection, gpointer data)
+{
+ CddbAlbum *cddbalbum = NULL;
+ gchar *msg, *duration_str;
+ GtkTreeIter row;
+
+ if (!CddbWindow)
+ return;
+
+ if (gtk_tree_selection_get_selected(selection, NULL, &row))
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbAlbumListModel), &row, CDDB_ALBUM_LIST_DATA, &cddbalbum, -1);
+ }
+ if (!cddbalbum)
+ return;
+
+ duration_str = Convert_Duration((gulong)cddbalbum->duration);
+ msg = g_strdup_printf(_("Album: '%s', "
+ "artist: '%s', "
+ "length: '%s', "
+ "year: '%s', "
+ "genre: '%s', "
+ "ID: '%s'"),
+ cddbalbum->album ? cddbalbum->album : "",
+ cddbalbum->artist ? cddbalbum->artist : "",
+ duration_str,
+ cddbalbum->year ? cddbalbum->year : "",
+ cddbalbum->genre ? cddbalbum->genre : "",
+ cddbalbum->id ? cddbalbum->id : "");
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar), CddbStatusBarContext, msg);
+ g_free(msg);
+ g_free(duration_str);
+}
+
+
+/*
+ * Select the corresponding file into the main file list
+ */
+void Cddb_Track_List_Row_Selected (GtkTreeSelection *selection, gpointer data)
+{
+ GList *selectedRows;
+ GtkTreeIter currentFile;
+ gchar *text_path;
+ ET_File **etfile;
+
+ // Exit if we don't have to select files in the main list
+ if (!CDDB_FOLLOW_FILE)
+ return;
+
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+
+ // We might be called with no rows selected
+ if (g_list_length(selectedRows) == 0)
+ {
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ return;
+ }
+
+ // Unselect files in the main list before re-selecting them...
+ Browser_List_Unselect_All_Files();
+
+ while (selectedRows)
+ {
+ gboolean found;
+
+ found = gtk_tree_model_get_iter(GTK_TREE_MODEL(CddbTrackListModel), &currentFile, (GtkTreePath*)selectedRows->data);
+ if (found)
+ {
+ if (CDDB_USE_DLM)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbTrackListModel), &currentFile,
+ CDDB_TRACK_LIST_NAME, &text_path,
+ CDDB_TRACK_LIST_ETFILE, &etfile, -1);
+ *etfile = Browser_List_Select_File_By_DLM((const gchar*) text_path, TRUE);
+ } else
+ {
+ text_path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(CddbTrackListModel), &currentFile);
+ Browser_List_Select_File_By_Iter_String((const gchar*) text_path, TRUE);
+ }
+ g_free(text_path);
+ }
+
+ if (!selectedRows->next) break;
+ selectedRows = selectedRows->next;
+ }
+
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+}
+
+/*
+ * Unselect all rows in the track list
+ */
+void Cddb_Track_List_Unselect_All ()
+{
+ GtkTreeSelection *selection;
+
+ if (!CddbTrackListView) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbTrackListView));
+ if (selection)
+ {
+ gtk_tree_selection_unselect_all(selection);
+ }
+}
+
+/*
+ * Select all rows in the track list
+ */
+void Cddb_Track_List_Select_All ()
+{
+ GtkTreeSelection *selection;
+
+ if (!CddbTrackListView) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbTrackListView));
+ if (selection)
+ {
+ gtk_tree_selection_select_all(selection);
+ }
+}
+
+/*
+ * Invert the selection of every row in the track list
+ */
+void Cddb_Track_List_Invert_Selection ()
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ gboolean valid;
+
+ if (!CddbTrackListView) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbTrackListView));
+
+ if (selection)
+ {
+ /* Must block the select signal to avoid selecting all files (one by one) in the main list */
+ g_signal_handlers_block_by_func(G_OBJECT(selection), G_CALLBACK(Cddb_Track_List_Row_Selected), NULL);
+
+ valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(CddbTrackListModel), &iter);
+ while (valid)
+ {
+ if (gtk_tree_selection_iter_is_selected(selection, &iter))
+ {
+ gtk_tree_selection_unselect_iter(selection, &iter);
+ } else
+ {
+ gtk_tree_selection_select_iter(selection, &iter);
+ }
+ valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(CddbTrackListModel), &iter);
+ }
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection), G_CALLBACK(Cddb_Track_List_Row_Selected), NULL);
+ g_signal_emit_by_name(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbTrackListView))), "changed");
+ }
+}
+
+gboolean Cddb_Track_List_Button_Press (GtkTreeView *treeView, GdkEventButton *event)
+{
+ if (!event)
+ return FALSE;
+
+ if (event->type==GDK_2BUTTON_PRESS && event->button==1)
+ {
+ /* Double left mouse click */
+ Cddb_Track_List_Select_All();
+ }
+ return FALSE;
+}
+
+
+/*
+ * Cddb_Popup_Menu_Handler : displays the corresponding menu
+ * Create_Browser_Tree_Popup_Menu: Create a popup menu for the tree browser
+ * Create_Browser_List_Popup_Menu: Create a popup menu for the list of files of browser
+ */
+gboolean Cddb_Popup_Menu_Handler (GtkMenu *menu, GdkEventButton *event)
+{
+ if (event && (event->type==GDK_BUTTON_PRESS) && (event->button==3))
+ {
+ gtk_menu_popup(menu,NULL,NULL,NULL,NULL,event->button,event->time);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+GtkWidget *Create_Cddb_Track_List_Popup_Menu(GtkWidget *list)
+{
+ GtkWidget *CddbPopupMenu;
+ GtkWidget *MenuItem;
+
+
+ CddbPopupMenu = gtk_menu_new();
+ g_signal_connect_swapped(G_OBJECT(list), "button_press_event",
+ G_CALLBACK(Cddb_Popup_Menu_Handler), G_OBJECT(CddbPopupMenu));
+
+ MenuItem = gtk_menu_item_new_with_label(_("Select all lines"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu), MenuItem);
+ g_signal_connect(G_OBJECT(MenuItem),"activate", G_CALLBACK(Cddb_Track_List_Select_All),NULL);
+
+ MenuItem = gtk_menu_item_new_with_label(_("Unselect all lines"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu), MenuItem);
+ g_signal_connect(G_OBJECT(MenuItem),"activate", G_CALLBACK(Cddb_Track_List_Unselect_All),NULL);
+
+ MenuItem = gtk_menu_item_new_with_label(_("Invert selection"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu), MenuItem);
+ g_signal_connect(G_OBJECT(MenuItem),"activate", G_CALLBACK(Cddb_Track_List_Invert_Selection),NULL);
+
+ MenuItem = gtk_menu_item_new();
+ gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu), MenuItem);
+
+ MenuItem = gtk_menu_item_new_with_label(_("Sort by Track Number"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu),MenuItem);
+ g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Cddb_Track_List_Sort_By_Ascending_Track_Number),NULL);
+
+ MenuItem = gtk_menu_item_new_with_label(_("Sort by Track Name"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(CddbPopupMenu),MenuItem);
+ g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Cddb_Track_List_Sort_By_Ascending_Track_Name),NULL);
+
+ gtk_widget_show_all(CddbPopupMenu);
+ return CddbPopupMenu;
+}
+
+/*
+ * To run an "automatic search" from a popup menu with the sélected files
+ */
+void Cddb_Popup_Menu_Search_Selected_File (void)
+{
+ Open_Cddb_Window();
+ Cddb_Search_Album_From_Selected_Files();
+}
+
+/*
+ * Sort the track list
+ */
+gint Cddb_Track_List_Sort_Func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data)
+{
+ gint sortcol = GPOINTER_TO_INT(data);
+ gchar *text1, *text1cp;
+ gchar *text2, *text2cp;
+ gint num1;
+ gint num2;
+ gint ret = 0;
+
+ switch (sortcol)
+ {
+ case SORT_LIST_NUMBER:
+ gtk_tree_model_get(model, a, CDDB_TRACK_LIST_NUMBER, &num1, -1);
+ gtk_tree_model_get(model, b, CDDB_TRACK_LIST_NUMBER, &num2, -1);
+ if (num1 < num2)
+ return -1;
+ else if(num1 > num2)
+ return 1;
+ else
+ return 0;
+ break;
+
+ case SORT_LIST_NAME:
+ gtk_tree_model_get(model, a, CDDB_TRACK_LIST_NAME, &text1, -1);
+ gtk_tree_model_get(model, b, CDDB_TRACK_LIST_NAME, &text2, -1);
+ text1cp = g_utf8_collate_key_for_filename(text1, -1);
+ text2cp = g_utf8_collate_key_for_filename(text2, -1);
+ // Must be the same rules as "ET_Comp_Func_Sort_File_By_Ascending_Filename" to be
+ // able to sort in the same order files in cddb and in the file list.
+ ret = SORTING_FILE_CASE_SENSITIVE ? strcmp(text1cp,text2cp) : strcasecmp(text1cp,text2cp);
+
+ g_free(text1);
+ g_free(text2);
+ g_free(text1cp);
+ g_free(text2cp);
+ break;
+ }
+
+ return ret;
+}
+
+void Cddb_Track_List_Sort_By_Ascending_Track_Number (void)
+{
+ // Sort ascending by column '#'
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(CddbTrackListModel), SORT_LIST_NUMBER, GTK_SORT_ASCENDING);
+}
+
+void Cddb_Track_List_Sort_By_Ascending_Track_Name (void)
+{
+ // Sort ascending by column 'Track Name'
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(CddbTrackListModel), SORT_LIST_NAME, GTK_SORT_ASCENDING);
+}
+
+
+
+/*
+ * Open a connection to "server_name" and retun the socket_id
+ * On error, returns 0.
+ *
+ * Some help on : http://shoe.bocks.com/net/
+ * http://www.zone-h.org/files/4/socket.txt
+ */
+gint Cddb_Open_Connection (gchar *host, gint port)
+{
+ gint socket_id = 0;
+ struct hostent *hostent;
+ struct sockaddr_in sockaddr;
+ gint optval = 1;
+ gchar *msg;
+
+
+ if (!CddbWindow)
+ return 0;
+
+ if (!host || port <= 0)
+ return 0;
+
+ msg = g_strdup_printf(_("Resolving host '%s' ..."),host);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ if ( (hostent=gethostbyname((const gchar*)host)) == NULL )
+ {
+ msg = g_strdup_printf(_("Can't resolve host '%s' (%s)!"),host,g_strerror(errno));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ return 0;
+ }
+
+ memset((void *)&sockaddr,0,sizeof(sockaddr)); // Initialize with zero
+ memcpy(&sockaddr.sin_addr.s_addr,*(hostent->h_addr_list),sizeof(sockaddr.sin_addr.s_addr));
+ sockaddr.sin_family = AF_INET;
+ sockaddr.sin_port = htons(port);
+
+ // Create socket
+ if( (socket_id = socket(AF_INET,SOCK_STREAM,0)) < 0 )
+ {
+ msg = g_strdup_printf(_("Can't create a new socket (%s)!"),g_strerror(errno));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ return 0;
+ }
+
+ // FIX ME : must catch SIGPIPE?
+ if ( setsockopt(socket_id,SOL_SOCKET,SO_KEEPALIVE,(gchar *)&optval,sizeof(optval)) < 0 )
+ {
+ Log_Print("Can't set option of the new created socket!");
+ }
+
+ // Open connection to the server
+ msg = g_strdup_printf(_("Connecting to host '%s', port '%d' ..."),host,port);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+ while (gtk_events_pending())
+ gtk_main_iteration();
+ if ( connect(socket_id,(struct sockaddr *)&sockaddr,sizeof(struct sockaddr_in)) < 0 )
+ {
+ msg = g_strdup_printf(_("Can't connect to host '%s' (%s)!"),host,g_strerror(errno));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ return 0;
+ }
+ msg = g_strdup_printf(_("Connected to host '%s'"),host);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ return socket_id;
+}
+
+
+/*
+ * Close the connection correcponding to the socket_id
+ */
+void Cddb_Close_Connection (gint socket_id)
+{
+#ifndef WIN32
+ shutdown(socket_id,SHUT_RDWR);
+#endif
+ close(socket_id);
+
+ if (!CddbWindow)
+ return;
+
+ socket_id = 0;
+ CddbStopSearch = FALSE;
+}
+
+
+/*
+ * Read the result of the request and write it into a file.
+ * And return the number of bytes read.
+ * - bytes_read=0 => no more data.
+ * - bytes_read_total : use to add bytes of severals pages... must be initialized before
+ *
+ * Server answser is formated like this :
+ *
+ * HTTP/1.1 200 OK\r\n }
+ * Server: Apache/1.3.19 (Unix) PHP/4.0.4pl1\r\n } "Header"
+ * Connection: close\r\n }
+ * \r\n
+ * <html>\n }
+ * [...] } "Body"
+ */
+gint Cddb_Write_Result_To_File (gint socket_id, gulong *bytes_read_total)
+{
+ gchar *home_path = NULL;
+ gchar *file_path = NULL;
+ FILE *file;
+
+
+ /* The file to write */
+ if (!HOME_VARIABLE)
+ return FALSE;
+
+ home_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ NULL);
+
+
+ file_path = g_strconcat(home_path,CDDB_RESULT_FILE,NULL);
+ if ( (file=fopen(file_path,"w+")) != NULL )
+ {
+ gchar cddb_out[MAX_STRING_LEN+1];
+ gint bytes_read = 0;
+
+ while ( CddbWindow && !CddbStopSearch
+ // Read data
+ && (bytes_read = recv(socket_id,(void *)&cddb_out,MAX_STRING_LEN,0)) > 0 )
+ {
+ gchar *size_str;
+ gchar *msg;
+
+
+ // Write to file
+ cddb_out[bytes_read] = 0;
+ fwrite(&cddb_out,bytes_read,1,file);
+
+ *bytes_read_total += bytes_read;
+
+ //g_print("\nLine : %lu : %s\n",bytes_read,cddb_out);
+
+ // Display message
+ size_str = Convert_Size_1(*bytes_read_total);
+ msg = g_strdup_printf(_("Receiving data (%s) ..."),size_str);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+ g_free(size_str);
+ while (gtk_events_pending())
+ gtk_main_iteration();
+ }
+
+ if (bytes_read < 0)
+ {
+ Log_Print(_("Error when reading cddb response (%s)!"),g_strerror(errno));
+ return -1; // Error!
+ }
+
+ fclose(file);
+ } else
+ {
+ Log_Print(_("Can't create file '%s' (%s)"),file_path,g_strerror(errno));
+ }
+ g_free(file_path);
+ g_free(home_path);
+
+
+ return 0;
+}
+
+
+/*
+ * Read one line (of the connection) into cddb_out.
+ * return : -1 on error
+ * 0 if no more line to read (EOF)
+ * 1 if more lines to read
+ *
+ * Server answser is formated like this :
+ *
+ * HTTP/1.1 200 OK\r\n }
+ * Server: Apache/1.3.19 (Unix) PHP/4.0.4pl1\r\n } "Header"
+ * Connection: close\r\n }
+ * \r\n
+ * <html>\n }
+ * [...] } "Body"
+ */
+gint Cddb_Read_Line (FILE **file, gchar **cddb_out)
+{
+ gchar buffer[MAX_STRING_LEN];
+
+
+ if (*file == NULL)
+ {
+ gchar *home_path;
+ gchar *file_path;
+
+ home_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ NULL);
+ file_path = g_strconcat(home_path,CDDB_RESULT_FILE,NULL);
+ g_free(home_path);
+
+ if ( (*file=fopen(file_path,"r"))==0 )
+ {
+ Log_Print(_("Can't open file '%s' (%s)"),file_path,g_strerror(errno));
+ g_free(file_path);
+ return -1; // Error!
+ }
+ g_free(file_path);
+ }
+
+ if (fgets(buffer,sizeof(buffer),*file))
+ {
+ if (buffer && strlen(buffer)>0 && buffer[strlen(buffer)-1]=='\n')
+ buffer[strlen(buffer)-1]='\0';
+ while (buffer && strlen(buffer)>0 && buffer[strlen(buffer)-1]=='\r') // Severals chars '\r' may be present
+ buffer[strlen(buffer)-1]='\0';
+ *cddb_out = g_strdup(buffer);
+ }else
+ {
+ // On error or EOF
+ fclose(*file);
+
+ //*cddb_out = NULL;
+ *cddb_out = g_strdup(""); // To avoid a crash
+
+ return 0;
+ }
+
+ //g_print("Line read: %s\n",*cddb_out);
+ return 1;
+}
+
+
+/*
+ * Read HTTP header data : from "HTTP/1.1 200 OK" to the blank line
+ */
+gint Cddb_Read_Http_Header (FILE **file, gchar **cddb_out)
+{
+
+ if ( Cddb_Read_Line(file,cddb_out) < 0 )
+ return -1; // Error!
+
+ // First line must be : "HTTP/1.1 200 OK"
+ if ( !*cddb_out || strncmp("HTTP",*cddb_out,4)!=0 || strstr(*cddb_out,"200 OK")==NULL )
+ return -1;
+
+ // Read until end of the http header up to the next blank line
+ while ( Cddb_Read_Line(file,cddb_out) > 0 && *cddb_out && strlen(*cddb_out) > 0 )
+ {
+ }
+
+ //g_print("Http Header : %s\n",*cddb_out);
+ return 1;
+}
+
+/*
+ * Read CDDB header data when requesting a file (cmd=cddb+read+<album genre>+<discid>)
+ * Must be read after the HTTP header :
+ *
+ * HTTP/1.1 200 OK
+ * Date: Sun, 26 Nov 2006 22:37:13 GMT
+ * Server: Apache/2.0.54 (Debian GNU/Linux) mod_python/3.1.3 Python/2.3.5 PHP/4.3.10-16 proxy_html/2.4 mod_perl/1.999.21 Perl/v5.8.4
+ * Expires: Sun Nov 26 23:37:14 2006
+ * Content-Length: 1013
+ * Connection: close
+ * Content-Type: text/plain; charset=UTF-8
+ *
+ * 210 newage 710ed208 CD database entry follows (until terminating `.')
+ *
+ * Cddb Header is the line like this :
+ * 210 newage 710ed208 CD database entry follows (until terminating `.')
+ */
+gint Cddb_Read_Cddb_Header (FILE **file, gchar **cddb_out)
+{
+ if ( Cddb_Read_Line(file,cddb_out) < 0 )
+ return -1; // Error!
+
+ // Some requests receive some strange data (arbitrary : less than 10 chars.)
+ // at the beginning (2 or 3 characters)... So we read one line more...
+ if ( !*cddb_out || strlen(*cddb_out) < 10 )
+ if ( Cddb_Read_Line(file,cddb_out) < 0 )
+ return -1; // Error!
+
+ //g_print("Cddb Header : %s\n",*cddb_out);
+
+ // Read the line
+ // 200 - exact match
+ // 210 - multiple exact matches
+ // 211 - inexact match
+ if ( *cddb_out == NULL
+ || (strncmp(*cddb_out,"200",3)!=0
+ && strncmp(*cddb_out,"210",3)!=0
+ && strncmp(*cddb_out,"211",3)!=0) )
+ return -1;
+
+ return 1;
+}
+
+
+
+/*
+ * Free the CddbAlbumList
+ */
+gboolean Cddb_Free_Album_List (void)
+{
+ if (!CddbAlbumList) return FALSE;
+
+ CddbAlbumList = g_list_last(CddbAlbumList);
+ while (CddbAlbumList)
+ {
+ CddbAlbum *cddbalbum = CddbAlbumList->data;
+
+ if (cddbalbum)
+ {
+ g_free(cddbalbum->server_name);
+ g_object_unref(cddbalbum->bitmap);
+
+ g_free(cddbalbum->artist_album);
+ g_free(cddbalbum->category);
+ g_free(cddbalbum->id);
+ Cddb_Free_Track_Album_List(cddbalbum->track_list);
+
+ g_free(cddbalbum->artist);
+ g_free(cddbalbum->album);
+ g_free(cddbalbum->genre);
+ g_free(cddbalbum->year);
+
+ g_free(cddbalbum);
+ cddbalbum = (CddbAlbum *)NULL;
+ }
+ if (!CddbAlbumList->prev) break;
+ CddbAlbumList = CddbAlbumList->prev;
+ }
+
+ g_list_free(CddbAlbumList);
+ CddbAlbumList = (GList *)NULL;
+ return TRUE;
+}
+
+gboolean Cddb_Free_Track_Album_List (GList *track_list)
+{
+ GList *CddbTrackAlbumList;
+
+ if (!track_list) return FALSE;
+
+ CddbTrackAlbumList = g_list_last(track_list);
+ while (CddbTrackAlbumList)
+ {
+ CddbTrackAlbum *cddbtrackalbum = CddbTrackAlbumList->data;
+ if (cddbtrackalbum)
+ {
+ g_free(cddbtrackalbum->track_name);
+ g_free(cddbtrackalbum);
+ cddbtrackalbum = (CddbTrackAlbum *)NULL;
+ }
+ if (!CddbTrackAlbumList->prev) break;
+ CddbTrackAlbumList = CddbTrackAlbumList->prev;
+ }
+ g_list_free(CddbTrackAlbumList);
+ CddbTrackAlbumList = (GList *)NULL;
+ return TRUE;
+}
+
+
+
+/*
+ * Load the CddbAlbumList into the corresponding List
+ */
+void Cddb_Load_Album_List (gboolean only_red_lines)
+{
+ if (CddbWindow && CddbAlbumList && CddbAlbumListView)
+ {
+ GtkTreeIter iter;
+ GList *cddbalbumlist;
+
+ GtkTreeSelection *selection;
+ GList *selectedRows = NULL;
+ GtkTreeIter currentIter;
+ CddbAlbum *cddbalbumSelected = NULL;
+
+ // Memorize the current selected item
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbAlbumListView));
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+ if (selectedRows)
+ {
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(CddbAlbumListModel), &currentIter, (GtkTreePath*)selectedRows->data))
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbAlbumListModel), &currentIter, CDDB_ALBUM_LIST_DATA, &cddbalbumSelected, -1);
+ }
+
+ // Remove lines
+ gtk_list_store_clear(CddbAlbumListModel);
+
+ // Reload list following parameter 'only_red_lines'
+ cddbalbumlist = g_list_first(CddbAlbumList);
+ while (cddbalbumlist)
+ {
+ CddbAlbum *cddbalbum = cddbalbumlist->data;
+
+ if ( (only_red_lines && cddbalbum->track_list) || !only_red_lines)
+ {
+ // Load the row in the list
+ gtk_list_store_append(CddbAlbumListModel, &iter);
+ gtk_list_store_set(CddbAlbumListModel, &iter,
+ CDDB_ALBUM_LIST_BITMAP, cddbalbum->bitmap,
+ CDDB_ALBUM_LIST_ALBUM, cddbalbum->artist_album,
+ CDDB_ALBUM_LIST_CATEGORY, cddbalbum->category,
+ CDDB_ALBUM_LIST_DATA, cddbalbum, -1);
+
+ Cddb_Album_List_Set_Row_Appearance(&iter);
+
+ // Select this item if it is the saved one...
+ if (cddbalbum == cddbalbumSelected)
+ gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbAlbumListView)), &iter);
+ }
+ cddbalbumlist = cddbalbumlist->next;
+ }
+ }
+}
+
+
+/*
+ * Load the CddbTrackList into the corresponding List
+ */
+void Cddb_Load_Track_Album_List (GList *track_list)
+{
+ GtkTreeIter iter;
+
+ if (CddbWindow && track_list && CddbTrackListView)
+ {
+ GList *tracklist = g_list_first(track_list);
+
+ // Must block the select signal of the target to avoid looping
+ gtk_list_store_clear(CddbTrackListModel);
+ while (tracklist)
+ {
+ gchar *row_text[1];
+ CddbTrackAlbum *cddbtrackalbum = tracklist->data;
+ ET_File **etfile;
+ etfile = g_malloc0(sizeof(ET_File *));
+
+ row_text[0] = Convert_Duration((gulong)cddbtrackalbum->duration);
+
+ // Load the row in the list
+ gtk_list_store_append(CddbTrackListModel, &iter);
+ gtk_list_store_set(CddbTrackListModel, &iter,
+ CDDB_TRACK_LIST_NUMBER, cddbtrackalbum->track_number,
+ CDDB_TRACK_LIST_NAME, cddbtrackalbum->track_name,
+ CDDB_TRACK_LIST_TIME, row_text[0],
+ CDDB_TRACK_LIST_DATA, cddbtrackalbum,
+ CDDB_TRACK_LIST_ETFILE, etfile,
+ -1);
+
+ tracklist = tracklist->next;
+ g_free(row_text[0]);
+ }
+ Cddb_Set_Apply_Button_Sensivity();
+ }
+}
+
+/*
+ * Fields : artist, title, track, rest
+ * CDDB Categories : blues, classical, country, data, folk, jazz, misc, newage, reggae, rock, soundtrack
+ */
+gchar *Cddb_Generate_Request_String_With_Fields_And_Categories_Options (void)
+{
+ gchar string[256];
+ gboolean cddbinallfields, cddbinartistfield, cddbintitlefield, cddbintracknamefield, cddbinotherfield;
+ gboolean cddbinallcategories, cddbinbluescategory, cddbinclassicalcategory, cddbincountrycategory,
+ cddbinfolkcategory, cddbinjazzcategory, cddbinmisccategory, cddbinnewagecategory,
+ cddbinreggaecategory, cddbinrockcategory, cddbinsoundtrackcategory;
+
+ // Init
+ string[0] = 0;
+
+ // Fields
+ cddbinallfields = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInAllFields));
+ cddbinartistfield = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInArtistField));
+ cddbintitlefield = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInTitleField));
+ cddbintracknamefield = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInTrackNameField));
+ cddbinotherfield = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInOtherField));
+
+ if (cddbinallfields) strncat(string,"&allfields=YES",14);
+ else strncat(string,"&allfields=NO",13);
+
+ if (cddbinartistfield) strncat(string,"&fields=artist",14);
+ if (cddbintitlefield) strncat(string,"&fields=title",13);
+ if (cddbintracknamefield) strncat(string,"&fields=track",13);
+ if (cddbinotherfield) strncat(string,"&fields=rest",12);
+
+
+ // Categories (warning : there is one other CDDB catogories not used here ("data"))
+ cddbinallcategories = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInAllCategories));
+ cddbinbluescategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInBluesCategory));
+ cddbinclassicalcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInClassicalCategory));
+ cddbincountrycategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInCountryCategory));
+ cddbinfolkcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInFolkCategory));
+ cddbinjazzcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInJazzCategory));
+ cddbinmisccategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInMiscCategory));
+ cddbinnewagecategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInNewageCategory));
+ cddbinreggaecategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInReggaeCategory));
+ cddbinrockcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInRockCategory));
+ cddbinsoundtrackcategory = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSearchInSoundtrackCategory));
+
+ strncat(string,"&allcats=NO",11);
+ if (cddbinallcategories)
+ {
+ // All categories except "data"
+ strncat(string,"&cats=blues&cats=classical&cats=country&cats=folk&cats=jazz"
+ "&cats=misc&cats=newage&cats=reggae&cats=rock&cats=soundtrack",119);
+ }else
+ {
+ if (cddbinbluescategory) strncat(string,"&cats=blues",11);
+ if (cddbinclassicalcategory) strncat(string,"&cats=classical",15);
+ if (cddbincountrycategory) strncat(string,"&cats=country",13);
+ if (cddbinfolkcategory) strncat(string,"&cats=folk",10);
+ if (cddbinjazzcategory) strncat(string,"&cats=jazz",10);
+ if (cddbinmisccategory) strncat(string,"&cats=misc",10);
+ if (cddbinnewagecategory) strncat(string,"&cats=newage",12);
+ if (cddbinreggaecategory) strncat(string,"&cats=reggae",12);
+ if (cddbinrockcategory) strncat(string,"&cats=rock",10);
+ if (cddbinsoundtrackcategory) strncat(string,"&cats=soundtrack",16);
+ }
+
+ return g_strdup(string);
+}
+
+
+/*
+ * Select the function to use according the server adress for the manual search
+ * - freedb.freedb.org
+ * - gnudb.gnudb.org
+ */
+gboolean Cddb_Search_Album_List_From_String (void)
+{
+ if ( strstr(CDDB_SERVER_NAME_MANUAL_SEARCH,"freedb") != NULL )
+ return Cddb_Search_Album_List_From_String_Freedb();
+ else
+ return Cddb_Search_Album_List_From_String_Gnudb();
+}
+
+
+/*
+ * Site FREEDB.ORG - Manual Search
+ * Send request (using the HTML search page in freedb.org site) to the CD database
+ * to get the list of albums matching to a string.
+ */
+gboolean Cddb_Search_Album_List_From_String_Freedb (void)
+{
+ gint socket_id;
+ gchar *string = NULL;
+ gchar *tmp, *tmp1;
+ gchar *cddb_in; // For the request to send
+ gchar *cddb_out = NULL; // Answer received
+ gchar *cddb_out_tmp;
+ gchar *msg;
+ gchar *proxy_auth = NULL;
+ gchar *cddb_server_name;
+ gint cddb_server_port;
+ gchar *cddb_server_cgi_path;
+
+ gchar *ptr_cat, *cat_str, *id_str, *art_alb_str;
+ gchar *art_alb_tmp = NULL;
+ gboolean use_art_alb = FALSE;
+ gchar *end_str;
+ gchar *html_end_str;
+ gchar buffer[MAX_STRING_LEN+1];
+ gint bytes_written;
+ gulong bytes_read_total = 0;
+ FILE *file = NULL;
+ gboolean web_search_disabled = FALSE;
+
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,"");
+
+ /* Get words to search... */
+ string = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbSearchStringCombo)->child)));
+ if (!string || g_utf8_strlen(string, -1) <= 0)
+ return FALSE;
+
+ /* Format the string of words */
+ Strip_String(string);
+ /* Remove the duplicated spaces */
+ while ((tmp=strstr(string," "))!=NULL) // Search 2 spaces
+ {
+ tmp1 = tmp + 1;
+ while (*tmp1)
+ *(tmp++) = *(tmp1++);
+ *tmp = '\0';
+ }
+
+ Add_String_To_Combo_List(CddbSearchStringModel, string);
+
+ /* Convert spaces to '+' */
+ while ( (tmp=strchr(string,' '))!=NULL )
+ *tmp = '+';
+
+ cddb_server_name = g_strdup(CDDB_SERVER_NAME_MANUAL_SEARCH); //"www.freedb.org");
+ cddb_server_port = CDDB_SERVER_PORT_MANUAL_SEARCH; //80;
+ cddb_server_cgi_path = g_strdup(CDDB_SERVER_CGI_PATH_MANUAL_SEARCH);//"/~cddb/cddb.cgi");
+
+ /* Connection to the server */
+ if ( (socket_id=Cddb_Open_Connection(CDDB_USE_PROXY?CDDB_PROXY_NAME:cddb_server_name,
+ CDDB_USE_PROXY?CDDB_PROXY_PORT:cddb_server_port)) <= 0 )
+ {
+ g_free(string);
+ g_free(cddb_server_name);
+ return FALSE;
+ }
+
+ /* Build request */
+ //cddb_in = g_strdup_printf("GET http://www.freedb.org/freedb_search.php?" // In this case, problem with squid cache...
+ cddb_in = g_strdup_printf("GET /freedb_search.php?"
+ "words=%s"
+ "%s"
+ "&grouping=none"
+ " HTTP/1.1\r\n"
+ "Host: %s:%d\r\n"
+ "User-Agent: %s %s\r\n"
+ "%s"
+ "Connection: close\r\n"
+ "\r\n",
+ string,
+ (tmp=Cddb_Generate_Request_String_With_Fields_And_Categories_Options()),
+ cddb_server_name,cddb_server_port,
+ APPNAME,VERSION,
+ (proxy_auth=Cddb_Format_Proxy_Authentification())
+ );
+
+ g_free(string);
+ g_free(tmp);
+ g_free(proxy_auth);
+ //g_print("Request : '%s'\n", cddb_in);
+
+ // Send the request
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,_("Sending request ..."));
+ while (gtk_events_pending()) gtk_main_iteration();
+ if ( (bytes_written=send(socket_id,cddb_in,strlen(cddb_in)+1,0)) < 0)
+ {
+ Log_Print(_("Can't send the request (%s)!"),g_strerror(errno));
+ Cddb_Close_Connection(socket_id);
+ g_free(cddb_in);
+ g_free(string);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ return FALSE;
+ }
+ g_free(cddb_in);
+
+
+ // Delete previous album list
+ gtk_list_store_clear(CddbAlbumListModel);
+ gtk_list_store_clear(CddbTrackListModel);
+ Cddb_Free_Album_List();
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),TRUE);
+
+
+ /*
+ * Read the answer
+ */
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,_("Receiving data ..."));
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ // Write result in a file
+ if (Cddb_Write_Result_To_File(socket_id,&bytes_read_total) < 0)
+ {
+ msg = g_strdup(_("The server returned a wrong answer!"));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+
+ // Parse server answer : Check returned code in the first line
+ if (Cddb_Read_Http_Header(&file,&cddb_out) <= 0 || !cddb_out) // Order is important!
+ {
+ msg = g_strdup_printf(_("The server returned a wrong answer! (%s)"),cddb_out);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ g_free(cddb_out);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+ g_free(cddb_out);
+
+ // Read other lines, and get list of matching albums
+ // Composition of a line :
+ // - freedb.org
+ // <a href="http://www.freedb.org/freedb_search_fmt.php?cat=rock&id=8c0f0a0b">Bob Dylan / MTV Unplugged</a><br>
+ cat_str = g_strdup("http://www.freedb.org/freedb_search_fmt.php?cat=");
+ id_str = g_strdup("&id=");
+ art_alb_str = g_strdup("\">");
+ end_str = g_strdup("</a>"); //"</a><br>");
+ html_end_str = g_strdup("</body>"); // To avoid the cddb lookups to hang
+ while ( CddbWindow && !CddbStopSearch
+ && Cddb_Read_Line(&file,&cddb_out) > 0 )
+ {
+ cddb_out_tmp = cddb_out;
+ //g_print("%s\n",cddb_out); // To print received data
+
+ // If the web search is disabled! (ex : http://www.freedb.org/modules.php?name=News&file=article&sid=246)
+ // The following string is displayed in the search page
+ if (cddb_out != NULL && strstr(cddb_out_tmp,"Sorry, The web-based search is currently down.") != NULL)
+ {
+ web_search_disabled = TRUE;
+ break;
+ }
+
+ // We may have severals album in the same line (other version of the same album?)
+ // Note : we test that the 'end' delimiter exists to avoid crashes
+ while ( cddb_out != NULL && (ptr_cat=strstr(cddb_out_tmp,cat_str)) != NULL && strstr(cddb_out_tmp,end_str) != NULL )
+ {
+ gchar *ptr_font, *ptr_font1;
+ gchar *ptr_id, *ptr_art_alb, *ptr_end;
+ gchar *copy;
+ CddbAlbum *cddbalbum;
+
+ cddbalbum = g_malloc0(sizeof(CddbAlbum));
+
+
+ // Parameters of the server used
+ cddbalbum->server_name = g_strdup(cddb_server_name);
+ cddbalbum->server_port = cddb_server_port;
+ cddbalbum->server_cgi_path = g_strdup(cddb_server_cgi_path);
+ cddbalbum->bitmap = Cddb_Get_Pixbuf_From_Server_Name(cddbalbum->server_name);
+
+ // Get album category
+ cddb_out_tmp = ptr_cat + strlen(cat_str);
+ strncpy(buffer,cddb_out_tmp,MAX_STRING_LEN);
+ if ( (ptr_id=strstr(buffer,id_str)) != NULL )
+ *ptr_id = 0;
+ cddbalbum->category = Try_To_Validate_Utf8_String(buffer);
+
+
+ // Get album ID
+ //cddb_out_tmp = strstr(cddb_out_tmp,id_str) + strlen(id_str);
+ cddb_out_tmp = ptr_cat + strlen(cat_str) + 2;
+ strncpy(buffer,cddb_out_tmp,MAX_STRING_LEN);
+ if ( (ptr_art_alb=strstr(buffer,art_alb_str)) != NULL )
+ *ptr_art_alb = 0;
+ cddbalbum->id = Try_To_Validate_Utf8_String(buffer);
+
+
+ // Get album and artist names.
+ // Note : some names can be like this "<font size=-1>2</font>" (for other version of the same album)
+ cddb_out_tmp = strstr(cddb_out_tmp,art_alb_str) + strlen(art_alb_str);
+ strncpy(buffer,cddb_out_tmp,MAX_STRING_LEN);
+ if ( (ptr_end=strstr(buffer,end_str)) != NULL )
+ *ptr_end = 0;
+ if ( (ptr_font=strstr(buffer,"</font>")) != NULL )
+ {
+ copy = NULL;
+ *ptr_font = 0;
+ if ( (ptr_font1=strstr(buffer,">")) != NULL )
+ {
+ copy = g_strdup_printf("%s -> %s",ptr_font1+1,art_alb_tmp);
+ cddbalbum->other_version = TRUE;
+ }else
+ {
+ copy = g_strdup(buffer);
+ }
+
+ }else
+ {
+ copy = g_strdup(buffer);
+ art_alb_tmp = cddbalbum->artist_album;
+ use_art_alb = TRUE;
+ }
+
+ cddbalbum->artist_album = Try_To_Validate_Utf8_String(copy);
+ g_free(copy);
+
+ if (use_art_alb)
+ {
+ art_alb_tmp = cddbalbum->artist_album;
+ use_art_alb = FALSE;
+ }
+
+
+ // New position the search the next string
+ cddb_out_tmp = strstr(cddb_out_tmp,end_str) + strlen(end_str);
+
+ CddbAlbumList = g_list_append(CddbAlbumList,cddbalbum);
+ }
+
+ // To avoid the cddb lookups to hang (Patch from Paul Giordano)
+ /* It appears that on some systems that cddb lookups continue to attempt
+ * to get data from the socket even though the other system has completed
+ * sending. Here we see if the actual end of data is in the last block read.
+ * In the case of the html scan, the </body> tag is used because there's
+ * no crlf followint the </html> tag.
+ */
+ if (strstr(cddb_out_tmp,html_end_str)!=NULL)
+ {
+ g_free(cddb_out);
+ break;
+ }
+ g_free(cddb_out);
+ }
+ g_free(cat_str); g_free(id_str); g_free(art_alb_str); g_free(end_str); g_free(html_end_str);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+
+ // Close connection
+ Cddb_Close_Connection(socket_id);
+
+ if (web_search_disabled)
+ msg = g_strdup_printf(_("Sorry, the web-based search is currently down!"));
+ else
+ msg = g_strdup_printf(_("Found %d matching album(s)"),g_list_length(CddbAlbumList));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+
+ // Initialize the button
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbDisplayRedLinesButton),FALSE);
+
+ // Load the albums found in the list
+ Cddb_Load_Album_List(FALSE);
+
+ return TRUE;
+}
+
+
+/*
+ * Site GNUDB.ORG - Manual Search
+ * Send request (using the HTML search page in freedb.org site) to the CD database
+ * to get the list of albums matching to a string.
+ */
+gboolean Cddb_Search_Album_List_From_String_Gnudb (void)
+{
+ gint socket_id;
+ gchar *string = NULL;
+ gchar *tmp, *tmp1;
+ gchar *cddb_in; // For the request to send
+ gchar *cddb_out = NULL; // Answer received
+ gchar *cddb_out_tmp;
+ gchar *msg;
+ gchar *proxy_auth = NULL;
+ gchar *cddb_server_name;
+ gint cddb_server_port;
+ gchar *cddb_server_cgi_path;
+
+ gchar *ptr_cat, *cat_str, *art_alb_str;
+ gchar *end_str;
+ gchar *ptr_sraf, *sraf_str, *sraf_end_str;
+ gchar *html_end_str;
+ gchar buffer[MAX_STRING_LEN+1];
+ gint bytes_written;
+ gulong bytes_read_total = 0;
+ FILE *file;
+ gint num_albums = 0;
+ gint total_num_albums = 0;
+
+ gchar *next_page = NULL;
+ gint next_page_cpt = 0;
+ gboolean next_page_found;
+
+
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,"");
+
+ /* Get words to search... */
+ string = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbSearchStringCombo)->child)));
+ if (!string || g_utf8_strlen(string, -1) <= 0)
+ return FALSE;
+
+ /* Format the string of words */
+ Strip_String(string);
+ /* Remove the duplicated spaces */
+ while ((tmp=strstr(string," "))!=NULL) // Search 2 spaces
+ {
+ tmp1 = tmp + 1;
+ while (*tmp1)
+ *(tmp++) = *(tmp1++);
+ *tmp = '\0';
+ }
+
+ Add_String_To_Combo_List(CddbSearchStringModel, string);
+
+ /* Convert spaces to '+' */
+ while ( (tmp=strchr(string,' '))!=NULL )
+ *tmp = '+';
+
+
+ // Delete previous album list
+ gtk_list_store_clear(CddbAlbumListModel);
+ gtk_list_store_clear(CddbTrackListModel);
+ Cddb_Free_Album_List();
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),TRUE);
+
+
+ // Do a loop to load all the pages of results
+ do
+ {
+ cddb_server_name = g_strdup(CDDB_SERVER_NAME_MANUAL_SEARCH); //"www.gnudb.org");
+ cddb_server_port = CDDB_SERVER_PORT_MANUAL_SEARCH; //80;
+ cddb_server_cgi_path = g_strdup(CDDB_SERVER_CGI_PATH_MANUAL_SEARCH);//"/~cddb/cddb.cgi");
+
+ /* Connection to the server */
+ if ( (socket_id=Cddb_Open_Connection(CDDB_USE_PROXY?CDDB_PROXY_NAME:cddb_server_name,
+ CDDB_USE_PROXY?CDDB_PROXY_PORT:cddb_server_port)) <= 0 )
+ {
+ g_free(string);
+ g_free(cddb_server_name);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+
+
+ /* Build request */
+ cddb_in = g_strdup_printf("GET /search/"
+ "%s"
+ "?page=%d"
+ " HTTP/1.1\r\n"
+ "Host: %s:%d\r\n"
+ "User-Agent: %s %s\r\n"
+ "%s"
+ "Connection: close\r\n"
+ "\r\n",
+ string,
+ next_page_cpt,
+ cddb_server_name,cddb_server_port,
+ APPNAME,VERSION,
+ (proxy_auth=Cddb_Format_Proxy_Authentification())
+ );
+ next_page_found = FALSE;
+ g_free(proxy_auth);
+ //g_print("Request : '%s'\n", cddb_in);
+
+ // Send the request
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,_("Sending request ..."));
+ while (gtk_events_pending()) gtk_main_iteration();
+ if ( (bytes_written=send(socket_id,cddb_in,strlen(cddb_in)+1,0)) < 0)
+ {
+ Log_Print(_("Can't send the request (%s)!"),g_strerror(errno));
+ Cddb_Close_Connection(socket_id);
+ g_free(cddb_in);
+ g_free(string);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+ g_free(cddb_in);
+
+
+ /*
+ * Read the answer
+ */
+ if (total_num_albums != 0)
+ msg = g_strdup_printf(_("Receiving data of page %d (album %d/%d)..."),next_page_cpt,num_albums,total_num_albums);
+ else
+ msg = g_strdup_printf(_("Receiving data of page %d ..."),next_page_cpt);
+
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ // Write result in a file
+ if (Cddb_Write_Result_To_File(socket_id,&bytes_read_total) < 0)
+ {
+ msg = g_strdup(_("The server returned a wrong answer!"));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ g_free(string);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+
+ // Parse server answer : Check returned code in the first line
+ file = NULL;
+ if (Cddb_Read_Http_Header(&file,&cddb_out) <= 0 || !cddb_out) // Order is important!
+ {
+ msg = g_strdup_printf(_("The server returned a wrong answer! (%s)"),cddb_out);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ g_free(cddb_out);
+ g_free(string);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+ g_free(cddb_out);
+
+ // The next page if exists will contains this url :
+ g_free(next_page);
+ next_page = g_strdup_printf("?page=%d",++next_page_cpt);
+
+ // Read other lines, and get list of matching albums
+ // Composition of a line :
+ // - gnudb.org
+ // <a href="http://www.gnudb.org/cd/ro21123813"><b>Indochine / Le Birthday Album</b></a><br>
+ cat_str = g_strdup("http://www.gnudb.org/cd/");
+ art_alb_str = g_strdup("\"><b>");
+ end_str = g_strdup("</b></a>"); //"</a><br>");
+ html_end_str = g_strdup("</body>"); // To avoid the cddb lookups to hang
+ // Composition of a line displaying the number of albums
+ // <h2>Search Results, 3486 albums found:</h2>
+ sraf_str = g_strdup("<h2>Search Results, ");
+ sraf_end_str = g_strdup(" albums found:</h2>");
+
+ while ( CddbWindow && !CddbStopSearch
+ && Cddb_Read_Line(&file,&cddb_out) > 0 )
+ {
+ cddb_out_tmp = cddb_out;
+ //g_print("%s\n",cddb_out); // To print received data
+
+ // Line that displays the number of total albums return by the search
+ if ( cddb_out != NULL
+ && total_num_albums == 0 // Do it only the first time
+ && (ptr_sraf=strstr(cddb_out_tmp,sraf_end_str)) != NULL
+ && strstr(cddb_out_tmp,sraf_str) != NULL )
+ {
+ // Get total number of albums
+ ptr_sraf = 0;
+ total_num_albums = atoi(cddb_out_tmp + strlen(sraf_str));
+ }
+
+ // For GNUDB.ORG : one album per line
+ if ( cddb_out != NULL
+ && (ptr_cat=strstr(cddb_out_tmp,cat_str)) != NULL
+ && strstr(cddb_out_tmp,end_str) != NULL )
+ {
+ gchar *ptr_art_alb, *ptr_end;
+ gchar *copy, *valid;
+ CddbAlbum *cddbalbum;
+
+ cddbalbum = g_malloc0(sizeof(CddbAlbum));
+
+ // Parameters of the server used
+ cddbalbum->server_name = g_strdup(cddb_server_name);
+ cddbalbum->server_port = cddb_server_port;
+ cddbalbum->server_cgi_path = g_strdup(cddb_server_cgi_path);
+ cddbalbum->bitmap = Cddb_Get_Pixbuf_From_Server_Name(cddbalbum->server_name);
+
+ num_albums++;
+
+ // Get album category
+ cddb_out_tmp = ptr_cat + strlen(cat_str);
+ strncpy(buffer,cddb_out_tmp,MAX_STRING_LEN);
+ *(buffer+2) = 0;
+
+ // Check only the 2 first characters to set the right category
+ if ( strncmp(buffer,"blues",2)==0 )
+ valid = g_strdup("blues");
+ else if ( strncmp(buffer,"classical",2)==0 )
+ valid = g_strdup("classical");
+ else if ( strncmp(buffer,"country",2)==0 )
+ valid = g_strdup("country");
+ else if ( strncmp(buffer,"data",2)==0 )
+ valid = g_strdup("data");
+ else if ( strncmp(buffer,"folk",2)==0 )
+ valid = g_strdup("folk");
+ else if ( strncmp(buffer,"jazz",2)==0 )
+ valid = g_strdup("jazz");
+ else if ( strncmp(buffer,"misc",2)==0 )
+ valid = g_strdup("misc");
+ else if ( strncmp(buffer,"newage",2)==0 )
+ valid = g_strdup("newage");
+ else if ( strncmp(buffer,"reggae",2)==0 )
+ valid = g_strdup("reggae");
+ else if ( strncmp(buffer,"rock",2)==0 )
+ valid = g_strdup("rock");
+ else //if ( strncmp(buffer,"soundtrack",2)==0 )
+ valid = g_strdup("soundtrack");
+
+ cddbalbum->category = valid; //Not useful -> Try_To_Validate_Utf8_String(valid);
+
+
+ // Get album ID
+ cddb_out_tmp = ptr_cat + strlen(cat_str) + 2;
+ strncpy(buffer,cddb_out_tmp,MAX_STRING_LEN);
+ if ( (ptr_art_alb=strstr(buffer,art_alb_str)) != NULL )
+ *ptr_art_alb = 0;
+ cddbalbum->id = Try_To_Validate_Utf8_String(buffer);
+
+
+ // Get album and artist names.
+ cddb_out_tmp = strstr(cddb_out_tmp,art_alb_str) + strlen(art_alb_str);
+ strncpy(buffer,cddb_out_tmp,MAX_STRING_LEN);
+ if ( (ptr_end=strstr(buffer,end_str)) != NULL )
+ *ptr_end = 0;
+ copy = g_strdup(buffer);
+ cddbalbum->artist_album = Try_To_Validate_Utf8_String(buffer);
+
+ CddbAlbumList = g_list_append(CddbAlbumList,cddbalbum);
+ }
+
+ // To avoid the cddb lookups to hang (Patch from Paul Giordano)
+ /* It appears that on some systems that cddb lookups continue to attempt
+ * to get data from the socket even though the other system has completed
+ * sending. Here we see if the actual end of data is in the last block read.
+ * In the case of the html scan, the </body> tag is used because there's
+ * no crlf followint the </html> tag.
+ */
+ /***if (strstr(cddb_out_tmp,html_end_str)!=NULL)
+ break;***/
+
+
+ // Check if the link to the next results exists to loop again with the next link
+ if (cddb_out != NULL && next_page != NULL
+ && (strstr(cddb_out_tmp,next_page) != NULL || next_page_cpt < 2) ) // BUG : "next_page_cpt < 2" to fix a bug in gnudb : the page 0 doesn't contain link to the page=1, so we force it...
+ {
+ next_page_found = TRUE;
+
+ if ( !(next_page_cpt < 2) ) // Don't display message in this case as it will be displayed each line of page 0 and 1
+ {
+ msg = g_strdup_printf(_("More results to load ..."));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+
+ while (gtk_events_pending())
+ gtk_main_iteration();
+ }
+ }
+
+ g_free(cddb_out);
+ }
+ g_free(cat_str); g_free(art_alb_str); g_free(end_str); g_free(html_end_str);
+ g_free(sraf_str);g_free(sraf_end_str);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+
+ // Close connection
+ Cddb_Close_Connection(socket_id);
+
+ } while (next_page_found);
+ g_free(string);
+
+
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+
+ msg = g_strdup_printf(_("Found %d matching album(s)"),num_albums);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+
+ // Initialize the button
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbDisplayRedLinesButton),FALSE);
+
+ // Load the albums found in the list
+ Cddb_Load_Album_List(FALSE);
+
+ return TRUE;
+}
+
+
+/*
+ * Send cddb query using the CddbId generated from the selected files to get the
+ * list of albums matching with this cddbid.
+ */
+gboolean Cddb_Search_Album_From_Selected_Files (void)
+{
+ gint socket_id;
+ gint bytes_written;
+ gulong bytes_read_total = 0;
+ FILE *file = NULL;
+
+ gchar *cddb_in; /* For the request to send */
+ gchar *cddb_out = NULL; /* Answer received */
+ gchar *cddb_out_tmp;
+ gchar *msg;
+ gchar *proxy_auth;
+ gchar *cddb_server_name;
+ gint cddb_server_port;
+ gchar *cddb_server_cgi_path;
+ gint server_try = 0;
+ gchar *tmp, *valid;
+ gchar *query_string;
+ gchar *cddb_discid;
+ gchar *cddb_end_str;
+
+ guint total_frames = 150; /* First offset is (almost) always 150 */
+ guint disc_length = 2; /* and 2s elapsed before first track */
+
+ GtkTreeSelection *file_selection = NULL;
+ guint file_selectedcount = 0;
+ GtkTreeIter currentIter;
+ guint total_id;
+ guint num_tracks;
+
+ gpointer iterptr;
+
+ GtkListStore *fileListModel;
+ GtkTreeIter *fileIter;
+ GList *file_iterlist = NULL;
+
+
+ if (!BrowserList) return FALSE;
+
+ // Number of selected files
+ fileListModel = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(BrowserList)));
+ file_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ file_selectedcount = gtk_tree_selection_count_selected_rows(file_selection);
+
+ // Create the list 'file_iterlist' of selected files (no selected files => all files selected)
+ if (file_selectedcount > 0)
+ {
+ GList* file_selectedrows = gtk_tree_selection_get_selected_rows(file_selection, NULL);
+
+ while (file_selectedrows)
+ {
+ iterptr = g_malloc0(sizeof(GtkTreeIter));
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel),
+ (GtkTreeIter*) iterptr,
+ (GtkTreePath*) file_selectedrows->data))
+ file_iterlist = g_list_append(file_iterlist, iterptr);
+
+ if (!file_selectedrows->next) break;
+ file_selectedrows = file_selectedrows->next;
+ }
+ g_list_foreach(file_selectedrows, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(file_selectedrows);
+
+ } else /* No rows selected, use the whole list */
+ {
+ gtk_tree_model_get_iter_first(GTK_TREE_MODEL(fileListModel), &currentIter);
+
+ do
+ {
+ iterptr = g_memdup(&currentIter, sizeof(GtkTreeIter));
+ file_iterlist = g_list_append(file_iterlist, iterptr);
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(fileListModel), &currentIter));
+
+ file_selectedcount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL);
+ }
+
+ if (file_selectedcount == 0)
+ {
+ msg = g_strdup_printf(_("No file selected!"));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+ return TRUE;
+ }else if (file_selectedcount > 99)
+ {
+ // The CD redbook standard defines the maximum number of tracks as 99, any
+ // queries with more than 99 tracks will never return a result.
+ msg = g_strdup_printf(_("More than 99 files selected! Can't send request!"));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+ return FALSE;
+ }else
+ {
+ msg = g_strdup_printf(_("%d file(s) selected!"),file_selectedcount);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+ }
+
+ // Generate query string and compute discid from the list 'file_iterlist'
+ total_id = 0;
+ num_tracks = file_selectedcount;
+ query_string = g_strdup("");
+ while (file_iterlist)
+ {
+ ET_File *etfile;
+ gulong secs = 0;
+
+ fileIter = (GtkTreeIter *)file_iterlist->data;
+ etfile = Browser_List_Get_ETFile_From_Iter(fileIter);
+
+ tmp = query_string;
+ if (strlen(query_string)>0)
+ query_string = g_strdup_printf("%s+%d", query_string, total_frames);
+ else
+ query_string = g_strdup_printf("%d", total_frames);
+ g_free(tmp);
+
+ secs = etfile->ETFileInfo->duration;
+ total_frames += secs * 75;
+ disc_length += secs;
+ while (secs > 0)
+ {
+ total_id = total_id + (secs % 10);
+ secs = secs / 10;
+ }
+ if (!file_iterlist->next) break;
+ file_iterlist = file_iterlist->next;
+ }
+ g_list_foreach(file_iterlist, (GFunc)g_free, NULL);
+ g_list_free(file_iterlist);
+
+ // Compute CddbId
+ cddb_discid = g_strdup_printf("%08x",(guint)(((total_id % 0xFF) << 24) |
+ (disc_length << 8) | num_tracks));
+
+
+ // Delete previous album list
+ gtk_list_store_clear(CddbAlbumListModel);
+ gtk_list_store_clear(CddbTrackListModel);
+ Cddb_Free_Album_List();
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),TRUE);
+
+
+ CDDB_USE_LOCAL_ACCESS = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbUseLocalAccess));
+ if (CDDB_USE_LOCAL_ACCESS) // Remote or Local acces?
+ {
+ /*
+ * Local cddb acces
+ */
+ static const gchar *CddbDir[] = // Or use cddb_genre_vs_id3_genre[][2]?
+ {
+ "blues", "classical", "country", "data", "folk",
+ "jazz", "misc", "newage", "reggae", "rock",
+ "soundtrack"
+ };
+ static const gint CddbDirSize = sizeof(CddbDir)/sizeof(CddbDir[0]) - 1 ;
+ guint i;
+
+ // We check if the file corresponding to the discid exists in each directory
+ for (i=0; i<=CddbDirSize; i++)
+ {
+ FILE *file;
+ gchar *file_path;
+
+ if (!CDDB_LOCAL_PATH || strlen(CDDB_LOCAL_PATH)==0)
+ {
+ GtkWidget *msgbox;
+
+ msgbox = msg_box_new(_("Local CD search..."),_("The path for 'Local "
+ "CD Data Base' wasn't defined!\nFill it in the "
+ "preferences window."),GTK_STOCK_DIALOG_ERROR,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ break;
+ }
+ file_path = g_strconcat(CDDB_LOCAL_PATH,
+ CDDB_LOCAL_PATH[strlen(CDDB_LOCAL_PATH)-1]!=G_DIR_SEPARATOR ? G_DIR_SEPARATOR_S : "",
+ CddbDir[i],"/",cddb_discid,NULL);
+
+ if ( (file=fopen(file_path,"r"))!=0 )
+ {
+ // File found
+ CddbAlbum *cddbalbum;
+ gint rc = 0;
+
+ cddbalbum = g_malloc0(sizeof(CddbAlbum));
+
+ // Parameters of the server used (Local acces => specific!)
+ cddbalbum->server_name = NULL; // No server name
+ cddbalbum->server_port = 0; // No server port
+ cddbalbum->server_cgi_path = g_strdup(file_path); // File name
+ cddbalbum->bitmap = Cddb_Get_Pixbuf_From_Server_Name(file_path);
+
+ // Get album category
+ cddbalbum->category = Try_To_Validate_Utf8_String(CddbDir[i]);
+
+ // Get album ID
+ cddbalbum->id = Try_To_Validate_Utf8_String(cddb_discid);
+
+ while ( CddbWindow && !CddbStopSearch
+ && (rc = Cddb_Read_Line(&file,&cddb_out)) > 0 )
+ {
+ if (!cddb_out) // Empty line?
+ continue;
+ //g_print("%s\n",cddb_out);
+
+ // Get Album and Artist names
+ if ( strncmp(cddb_out,"DTITLE=",7)==0 )
+ {
+ // Note : disc title too long take severals lines. For example :
+ // DTITLE=Marilyn Manson / The Nobodies (2005 Against All Gods Mix - Korea Tour L
+ // DTITLE=imited Edition)
+ if (!cddbalbum->artist_album)
+ {
+ // It is the first time we find DTITLE...
+
+ // Artist and album
+ cddbalbum->artist_album = Try_To_Validate_Utf8_String(cddb_out+7); // '7' to skip 'DTITLE='
+ }else
+ {
+ // It is at least the second time we find DTITLE
+ // So we suppose that only the album was truncated
+
+ // Album
+ valid = Try_To_Validate_Utf8_String(cddb_out+7); // '7' to skip 'DTITLE='
+ tmp = cddbalbum->artist_album; // To free...
+ cddbalbum->artist_album = g_strconcat(cddbalbum->artist_album,valid,NULL);
+ g_free(tmp);
+
+ // Don't need to read more data to read in the file
+ break;
+ }
+ }
+
+ g_free(cddb_out);
+ }
+
+ CddbAlbumList = g_list_append(CddbAlbumList,cddbalbum);
+
+ if (rc != 0) // Need to close it, if not done in Cddb_Read_Line
+ fclose(file);
+ }
+ g_free(file_path);
+
+ }
+
+
+ }else
+ {
+
+ /*
+ * Remote cddb acces
+ *
+ * Request the two servers
+ * - 1) www.freedb.org
+ * - 2) MusicBrainz Gateway : freedb.musicbrainz.org (in Easytag < 2.1.1, it was: www.mb.inhouse.co.uk)
+ */
+ while (server_try < 2)
+ {
+ server_try++;
+ if (server_try == 1)
+ {
+ // 1rst try
+ cddb_server_name = g_strdup(CDDB_SERVER_NAME_AUTOMATIC_SEARCH);
+ cddb_server_port = CDDB_SERVER_PORT_AUTOMATIC_SEARCH;
+ cddb_server_cgi_path = g_strdup(CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH);
+ }else
+ {
+ // 2sd try
+ cddb_server_name = g_strdup(CDDB_SERVER_NAME_AUTOMATIC_SEARCH2);
+ cddb_server_port = CDDB_SERVER_PORT_AUTOMATIC_SEARCH2;
+ cddb_server_cgi_path = g_strdup(CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2);
+ }
+
+ // Check values
+ if (!cddb_server_name || strcmp(cddb_server_name,"")==0)
+ continue;
+
+ // Connection to the server
+ if ( (socket_id=Cddb_Open_Connection(CDDB_USE_PROXY?CDDB_PROXY_NAME:cddb_server_name,
+ CDDB_USE_PROXY?CDDB_PROXY_PORT:cddb_server_port)) <= 0 )
+ {
+ return FALSE;
+ }
+
+ // CDDB Request (ex: GET /~cddb/cddb.cgi?cmd=cddb+query+0800ac01+1++150+172&hello=noname+localhost+EasyTAG+0.31&proto=1 HTTP/1.1\r\nHost: freedb.freedb.org:80\r\nConnection: close)
+ // Without proxy : "GET /~cddb/cddb.cgi?..." but doesn't work with a proxy.
+ // With proxy : "GET http://freedb.freedb.org/~cddb/cddb.cgi?..."
+ // proto=1 => ISO-8859-1 - proto=6 => UTF-8
+ cddb_in = g_strdup_printf("GET %s%s%s?cmd=cddb+query+"
+ "%s+"
+ "%d+%s+"
+ "%d"
+ "&hello=noname+localhost+%s+%s"
+ "&proto=6 HTTP/1.1\r\n"
+ "Host: %s:%d\r\n"
+ "%s"
+ "Connection: close\r\n\r\n",
+ CDDB_USE_PROXY?"http://":"",CDDB_USE_PROXY?cddb_server_name:"", cddb_server_cgi_path,
+ cddb_discid,
+ num_tracks, query_string,
+ disc_length,
+ APPNAME,VERSION,
+ cddb_server_name,cddb_server_port,
+ (proxy_auth=Cddb_Format_Proxy_Authentification())
+ );
+ g_free(proxy_auth);
+ //g_print("Request : '%s'\n", cddb_in);
+
+ msg = g_strdup_printf(_("Sending request (CddbId: %s, #tracks: %d, Disc length: %d) ..."),
+ cddb_discid,num_tracks,disc_length);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ if ( (bytes_written=send(socket_id,cddb_in,strlen(cddb_in)+1,0)) < 0)
+ {
+ Log_Print(_("Can't send the request (%s)!"),g_strerror(errno));
+ Cddb_Close_Connection(socket_id);
+ g_free(cddb_in);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ return FALSE;
+ }
+ g_free(cddb_in);
+
+
+ /*
+ * Read the answer
+ */
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,_("Receiving data ..."));
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ // Write result in a file
+ if (Cddb_Write_Result_To_File(socket_id,&bytes_read_total) < 0)
+ {
+ msg = g_strdup(_("The server returned a wrong answer!"));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+
+ // Parse server answer : Check returned code in the first line
+ file = NULL;
+ if (Cddb_Read_Http_Header(&file,&cddb_out) <= 0 || !cddb_out) // Order is important!
+ {
+ msg = g_strdup_printf(_("The server returned a wrong answer! (%s)"),cddb_out);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ g_free(cddb_out);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+ g_free(cddb_out);
+
+ cddb_end_str = g_strdup(".");
+
+ /*
+ * Format :
+ * For Freedb, Gnudb, the lines to read are like :
+ * 211 Found inexact matches, list follows (until terminating `.')
+ * rock 8f0dc00b Archive / Noise
+ * rock 7b0dd80b Archive / Noise
+ * .
+ * For MusicBrainz Cddb Gateway (see http://wiki.musicbrainz.org/CddbGateway), the lines to read are like :
+ * 200 jazz 7e0a100a Pink Floyd / Dark Side of the Moon
+ */
+ while ( CddbWindow && !CddbStopSearch
+ && Cddb_Read_Line(&file,&cddb_out) > 0 )
+ {
+ cddb_out_tmp = cddb_out;
+ //g_print("%s\n",cddb_out);
+
+ // To avoid the cddb lookups to hang (Patch from Paul Giordano)
+ /* It appears that on some systems that cddb lookups continue to attempt
+ * to get data from the socket even though the other system has completed
+ * sending. The fix adds one check to the loops to see if the actual
+ * end of data is in the last block read. In this case, the last line
+ * will be a single '.'
+ */
+ if ( cddb_out_tmp && strlen(cddb_out_tmp)<=3 && strstr(cddb_out_tmp,cddb_end_str)!=NULL )
+ break;
+
+ // Compatibility for the MusicBrainz CddbGateway
+ if ( cddb_out_tmp && strlen(cddb_out_tmp)>3
+ && (strncmp(cddb_out_tmp,"200",3)==0
+ || strncmp(cddb_out_tmp,"210",3)==0
+ || strncmp(cddb_out_tmp,"211",3)==0) )
+ cddb_out_tmp = cddb_out_tmp + 4;
+
+ // Reading of lines with albums (skiping return code lines :
+ // "211 Found inexact matches, list follows (until terminating `.')" )
+ if (cddb_out != NULL && strstr(cddb_out_tmp,"/") != NULL)
+ {
+ gchar* ptr;
+ CddbAlbum *cddbalbum;
+
+ cddbalbum = g_malloc0(sizeof(CddbAlbum));
+
+ // Parameters of the server used
+ cddbalbum->server_name = g_strdup(cddb_server_name);
+ cddbalbum->server_port = cddb_server_port;
+ cddbalbum->server_cgi_path = g_strdup(cddb_server_cgi_path);
+ cddbalbum->bitmap = Cddb_Get_Pixbuf_From_Server_Name(cddbalbum->server_name);
+
+ // Get album category
+ if ( (ptr = strstr(cddb_out_tmp, " ")) != NULL )
+ {
+ *ptr = 0;
+ cddbalbum->category = Try_To_Validate_Utf8_String(cddb_out_tmp);
+ *ptr = ' ';
+ cddb_out_tmp = ptr + 1;
+ }
+
+ // Get album ID
+ if ( (ptr = strstr(cddb_out_tmp, " ")) != NULL )
+ {
+ *ptr = 0;
+ cddbalbum->id = Try_To_Validate_Utf8_String(cddb_out_tmp);
+ *ptr = ' ';
+ cddb_out_tmp = ptr + 1;
+ }
+
+ // Get album and artist names.
+ cddbalbum->artist_album = Try_To_Validate_Utf8_String(cddb_out_tmp);
+
+ CddbAlbumList = g_list_append(CddbAlbumList,cddbalbum);
+ }
+
+ g_free(cddb_out);
+ }
+ g_free(cddb_end_str);
+ g_free(cddb_server_name);
+ g_free(cddb_server_cgi_path);
+
+ // Close connection
+ Cddb_Close_Connection(socket_id);
+ }
+
+ }
+
+ msg = g_strdup_printf(_("Found %d matching album(s) for DiscID '%s'"), g_list_length(CddbAlbumList),cddb_discid);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ g_free(msg);
+
+ g_free(cddb_discid);
+ g_free(query_string);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+
+ // Initialize the button
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbDisplayRedLinesButton), FALSE);
+
+ // Load the albums found in the list
+ Cddb_Load_Album_List(FALSE);
+
+ return TRUE;
+}
+
+
+/*
+ * Callback when selecting a row in the Album List.
+ * We get the list of tracks of the selected album
+ */
+gboolean Cddb_Get_Album_Tracks_List_CB (GtkTreeSelection *selection, gpointer data)
+{
+ gint i;
+ gint i_max = 5;
+
+ /* As may be not opened the first time (The server returned a wrong answer!)
+ * me try to reconnect severals times */
+ for (i = 1; i <= i_max; i++)
+ {
+ if ( Cddb_Get_Album_Tracks_List(selection) == TRUE )
+ {
+ break;
+ }
+ }
+ if (i <= i_max)
+ {
+ return TRUE;
+ } else
+ {
+ return FALSE;
+ }
+}
+
+/*
+ * Look up a specific album in freedb, and save to a CddbAlbum structure
+ */
+gboolean Cddb_Get_Album_Tracks_List (GtkTreeSelection* selection)
+{
+ gint socket_id = 0;
+ CddbAlbum *cddbalbum = NULL;
+ GList *TrackOffsetList = NULL;
+ gchar *cddb_in, *cddb_out = NULL;
+ gchar *cddb_end_str, *msg, *copy, *valid;
+ gchar *proxy_auth;
+ gchar *cddb_server_name;
+ gint cddb_server_port;
+ gchar *cddb_server_cgi_path;
+ gint bytes_written;
+ gulong bytes_read_total = 0;
+ FILE *file;
+ gboolean read_track_offset = FALSE;
+ GtkTreeIter row;
+
+ if (!CddbWindow)
+ return FALSE;
+
+ gtk_list_store_clear(CddbTrackListModel);
+ Cddb_Set_Apply_Button_Sensivity();
+ if (gtk_tree_selection_get_selected(selection, NULL, &row))
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbAlbumListModel), &row, CDDB_ALBUM_LIST_DATA, &cddbalbum, -1);
+ }
+ if (!cddbalbum)
+ return FALSE;
+
+ // We have already the track list
+ if (cddbalbum->track_list != NULL)
+ {
+ Cddb_Load_Track_Album_List(cddbalbum->track_list);
+ return TRUE;
+ }
+
+ // Parameters of the server used
+ cddb_server_name = cddbalbum->server_name;
+ cddb_server_port = cddbalbum->server_port;
+ cddb_server_cgi_path = cddbalbum->server_cgi_path;
+
+ if (!cddb_server_name)
+ {
+ // Local access
+ if ( (file=fopen(cddb_server_cgi_path,"r"))==0 )
+ {
+ Log_Print(_("Can't load file: '%s' (%s)!"),cddb_server_cgi_path,g_strerror(errno));
+ return FALSE;
+ }
+
+ }else
+ {
+ // Remote access
+
+ // Connection to the server
+ if ( (socket_id=Cddb_Open_Connection(CDDB_USE_PROXY?CDDB_PROXY_NAME:cddb_server_name,
+ CDDB_USE_PROXY?CDDB_PROXY_PORT:cddb_server_port)) <= 0 )
+ return FALSE;
+
+ // CDDB Request (ex: GET /~cddb/cddb.cgi?cmd=cddb+read+jazz+0200a401&hello=noname+localhost+EasyTAG+0.31&proto=1 HTTP/1.1\r\nHost: freedb.freedb.org:80\r\nConnection: close)
+ // Without proxy : "GET /~cddb/cddb.cgi?..." but doesn't work with a proxy.
+ // With proxy : "GET http://freedb.freedb.org/~cddb/cddb.cgi?..."
+ cddb_in = g_strdup_printf("GET %s%s%s?cmd=cddb+read+"
+ "%s+%s"
+ "&hello=noname+localhost+%s+%s"
+ "&proto=6 HTTP/1.1\r\n"
+ "Host: %s:%d\r\n"
+ "%s"
+ "Connection: close\r\n\r\n",
+ CDDB_USE_PROXY?"http://":"",CDDB_USE_PROXY?cddb_server_name:"", cddb_server_cgi_path,
+ cddbalbum->category,cddbalbum->id,
+ APPNAME,VERSION,
+ cddb_server_name,cddb_server_port,
+ (proxy_auth=Cddb_Format_Proxy_Authentification())
+ );
+ g_free(proxy_auth);
+ //g_print("Request : '%s'\n", cddb_in);
+
+ // Send the request
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,_("Sending request ..."));
+ while (gtk_events_pending()) gtk_main_iteration();
+ if ( (bytes_written=send(socket_id,cddb_in,strlen(cddb_in)+1,0)) < 0)
+ {
+ Log_Print(_("Can't send the request (%s)!"),g_strerror(errno));
+ Cddb_Close_Connection(socket_id);
+ g_free(cddb_in);
+ return FALSE;
+ }
+ g_free(cddb_in);
+
+
+ // Read the answer
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,_("Receiving data ..."));
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ // Write result in a file
+ if (Cddb_Write_Result_To_File(socket_id,&bytes_read_total) < 0)
+ {
+ msg = g_strdup(_("The server returned a wrong answer!"));
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchButton),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(CddbStopSearchAutoButton),FALSE);
+ return FALSE;
+ }
+
+
+ // Parse server answer : Check HTTP Header and CDDB Header
+ file = NULL;
+ if ( Cddb_Read_Http_Header(&file,&cddb_out) <= 0
+ || Cddb_Read_Cddb_Header(&file,&cddb_out) <= 0 )
+ {
+ gchar *msg = g_strdup_printf(_("The server returned a wrong answer! (%s)"),cddb_out);
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,msg);
+ Log_Print("%s",msg);
+ g_free(msg);
+ g_free(cddb_out);
+ return FALSE;
+ }
+ g_free(cddb_out);
+
+ }
+ cddb_end_str = g_strdup(".");
+
+ while ( CddbWindow && !CddbStopSearch
+ && Cddb_Read_Line(&file,&cddb_out) > 0 )
+ {
+ if (!cddb_out) // Empty line?
+ continue;
+ //g_print("%s\n",cddb_out);
+
+ // To avoid the cddb lookups to hang (Patch from Paul Giordano)
+ /* It appears that on some systems that cddb lookups continue to attempt
+ * to get data from the socket even though the other system has completed
+ * sending. The fix adds one check to the loops to see if the actual
+ * end of data is in the last block read. In this case, the last line
+ * will be a single '.'
+ */
+ if (strlen(cddb_out)<=3 && strstr(cddb_out,cddb_end_str)!=NULL)
+ break;
+
+ if ( strstr(cddb_out,"Track frame offsets")!=NULL ) // We read the Track frame offset
+ {
+ read_track_offset = TRUE; // The next reads are for the tracks offset
+ continue;
+
+ }else if (read_track_offset) // We are reading a track offset? (generates TrackOffsetList)
+ {
+ if ( strtoul(cddb_out+1,NULL,10)>0 )
+ {
+ CddbTrackFrameOffset *cddbtrackframeoffset = g_malloc0(sizeof(CddbTrackFrameOffset));
+ cddbtrackframeoffset->offset = strtoul(cddb_out+1,NULL,10);
+ TrackOffsetList = g_list_append(TrackOffsetList,cddbtrackframeoffset);
+ }else
+ {
+ read_track_offset = FALSE; // No more track offset
+ }
+ continue;
+
+ }else if ( strstr(cddb_out,"Disc length: ")!=NULL ) // Length of album (in second)
+ {
+ cddbalbum->duration = atoi(strchr(cddb_out,':')+1);
+ if (TrackOffsetList) // As it must be the last item, do nothing if no previous data
+ {
+ CddbTrackFrameOffset *cddbtrackframeoffset = g_malloc0(sizeof(CddbTrackFrameOffset));
+ cddbtrackframeoffset->offset = cddbalbum->duration * 75; // It's the last offset
+ TrackOffsetList = g_list_append(TrackOffsetList,cddbtrackframeoffset);
+ }
+ continue;
+
+ }else if ( strncmp(cddb_out,"DTITLE=",7)==0 ) // "Artist / Album" names
+ {
+ // Note : disc title too long take severals lines. For example :
+ // DTITLE=Marilyn Manson / The Nobodies (2005 Against All Gods Mix - Korea Tour L
+ // DTITLE=imited Edition)
+ if (!cddbalbum->album)
+ {
+ // It is the first time we find DTITLE...
+
+ gchar *alb_ptr = strstr(cddb_out," / ");
+ // Album
+ if (alb_ptr && alb_ptr+3)
+ {
+ cddbalbum->album = Try_To_Validate_Utf8_String(alb_ptr+3);
+ *alb_ptr = 0;
+ }
+
+ // Artist
+ cddbalbum->artist = Try_To_Validate_Utf8_String(cddb_out+7); // '7' to skip 'DTITLE='
+ }else
+ {
+ // It is at least the second time we find DTITLE
+ // So we suppose that only the album was truncated
+
+ // Album
+ valid = Try_To_Validate_Utf8_String(cddb_out+7); // '7' to skip 'DTITLE='
+ copy = cddbalbum->album; // To free...
+ cddbalbum->album = g_strconcat(cddbalbum->album,valid,NULL);
+ g_free(copy);
+ }
+ continue;
+
+ }else if ( strncmp(cddb_out,"DYEAR=",6)==0 ) // Year
+ {
+ valid = Try_To_Validate_Utf8_String(cddb_out+6); // '6' to skip 'DYEAR='
+ if (g_utf8_strlen(valid, -1))
+ cddbalbum->year = valid;
+ continue;
+
+ }else if ( strncmp(cddb_out,"DGENRE=",7)==0 ) // Genre
+ {
+ valid = Try_To_Validate_Utf8_String(cddb_out+7); // '7' to skip 'DGENRE='
+ if (g_utf8_strlen(valid, -1))
+ cddbalbum->genre = valid;
+ continue;
+
+ }else if ( strncmp(cddb_out,"TTITLE",6)==0 ) // Track title (for exemple : TTITLE10=xxxx)
+ {
+ CddbTrackAlbum *cddbtrackalbum_last = NULL;
+
+ CddbTrackAlbum *cddbtrackalbum = g_malloc0(sizeof(CddbTrackAlbum));
+ cddbtrackalbum->cddbalbum = cddbalbum; // To find the CddbAlbum father quickly
+
+ // Here is a fix when TTITLExx doesn't contain an "=", we skip the line
+ if ( (copy = g_utf8_strchr(cddb_out,-1,'=')) != NULL )
+ {
+ cddbtrackalbum->track_name = Try_To_Validate_Utf8_String(copy+1);
+ }else
+ {
+ continue;
+ }
+
+ *g_utf8_strchr(cddb_out,-1,'=') = 0;
+ cddbtrackalbum->track_number = atoi(cddb_out+6)+1;
+
+ // Note : titles too long take severals lines. For example :
+ // TTITLE15=Bob Marley vs. Funkstar De Luxe Remix - Sun Is Shining (Radio De Lu
+ // TTITLE15=xe Edit)
+ // So to check it, we compare current track number with the previous one...
+ if (cddbalbum->track_list)
+ cddbtrackalbum_last = g_list_last(cddbalbum->track_list)->data;
+ if (cddbtrackalbum_last && cddbtrackalbum_last->track_number == cddbtrackalbum->track_number)
+ {
+ gchar *track_name = g_strconcat(cddbtrackalbum_last->track_name,cddbtrackalbum->track_name,NULL);
+ g_free(cddbtrackalbum_last->track_name);
+
+ cddbtrackalbum_last->track_name = Try_To_Validate_Utf8_String(track_name);
+
+ // Frees useless allocated data previously
+ g_free(cddbtrackalbum->track_name);
+ g_free(cddbtrackalbum);
+ }else
+ {
+ if (TrackOffsetList && TrackOffsetList->next)
+ {
+ cddbtrackalbum->duration = ( ((CddbTrackFrameOffset *)TrackOffsetList->next->data)->offset - ((CddbTrackFrameOffset *)TrackOffsetList->data)->offset ) / 75; // Calculate time in seconds
+ TrackOffsetList = TrackOffsetList->next;
+ }
+ cddbalbum->track_list = g_list_append(cddbalbum->track_list,cddbtrackalbum);
+ }
+ continue;
+
+ }else if ( strncmp(cddb_out,"EXTD=",5)==0 ) // Extended album data
+ {
+ gchar *genre_ptr = strstr(cddb_out,"ID3G:");
+ gchar *year_ptr = strstr(cddb_out,"YEAR:");
+ // May contains severals EXTD field it too long
+ // EXTD=Techno
+ // EXTD= YEAR: 1997 ID3G: 18
+ // EXTD= ID3G: 17
+ if (year_ptr && cddbalbum->year)
+ cddbalbum->year = g_strdup_printf("%d",atoi(year_ptr+5));
+ if (genre_ptr && cddbalbum->genre)
+ cddbalbum->genre = g_strdup(Id3tag_Genre_To_String(atoi(genre_ptr+5)));
+ continue;
+ }
+
+ g_free(cddb_out);
+ }
+ g_free(cddb_end_str);
+
+ if (cddb_server_name)
+ {
+ // Remote access
+
+ /* Close connection */
+ Cddb_Close_Connection(socket_id);
+ }
+
+ /* Set color of the selected row (without reloading the whole list) */
+ Cddb_Album_List_Set_Row_Appearance(&row);
+
+ /* Load the track list of the album */
+ gtk_statusbar_push(GTK_STATUSBAR(CddbStatusBar),CddbStatusBarContext,_("Loading album track list ..."));
+ while (gtk_events_pending()) gtk_main_iteration();
+ Cddb_Load_Track_Album_List(cddbalbum->track_list);
+
+ Cddb_Show_Album_Info(gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbAlbumListView)),NULL);
+
+ // Frees 'TrackOffsetList'
+ TrackOffsetList = g_list_last(TrackOffsetList);
+ while (TrackOffsetList)
+ {
+ g_free(TrackOffsetList->data);
+ if (!TrackOffsetList->prev) break;
+ TrackOffsetList = TrackOffsetList->prev;
+ }
+ g_list_free(TrackOffsetList);
+ TrackOffsetList = (GList *)NULL;
+ return TRUE;
+}
+
+/*
+ * Set the row apperance depending if we have cached info or not
+ * Bold/Red = Info is cached
+ * Italic/Light Red = Duplicate CDDB entry
+ */
+void Cddb_Album_List_Set_Row_Appearance (GtkTreeIter *row)
+{
+ CddbAlbum *cddbalbum = NULL;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbAlbumListModel), row, CDDB_ALBUM_LIST_DATA, &cddbalbum, -1);
+
+ if (cddbalbum->track_list != NULL)
+ {
+ if (CHANGED_FILES_DISPLAYED_TO_BOLD)
+ {
+ gtk_list_store_set(CddbAlbumListModel, row, CDDB_ALBUM_LIST_FONT_WEIGHT, PANGO_WEIGHT_BOLD, -1);
+ } else
+ {
+ if(cddbalbum->other_version == TRUE)
+ {
+ gtk_list_store_set(CddbAlbumListModel, row, CDDB_ALBUM_LIST_FOREGROUND_COLOR, &LIGHT_RED, -1);
+ } else
+ {
+ gtk_list_store_set(CddbAlbumListModel, row, CDDB_ALBUM_LIST_FOREGROUND_COLOR, &RED, -1);
+ }
+ }
+ } else
+ {
+ if(cddbalbum->other_version == TRUE)
+ {
+ if (CHANGED_FILES_DISPLAYED_TO_BOLD)
+ {
+ gtk_list_store_set(CddbAlbumListModel, row, CDDB_ALBUM_LIST_FONT_STYLE, PANGO_STYLE_ITALIC, -1);
+ } else
+ {
+ gtk_list_store_set(CddbAlbumListModel, row, CDDB_ALBUM_LIST_FOREGROUND_COLOR, &GREY, -1);
+ }
+ }
+ }
+}
+
+
+/*
+ * Set CDDB data (from tracks list) into tags of the main file list
+ */
+gboolean Cddb_Set_Track_Infos_To_File_List (void)
+{
+ guint row;
+ guint list_length;
+ guint rows_to_loop = 0;
+ guint selectedcount;
+ guint file_selectedcount;
+ guint counter = 0;
+ GList *file_iterlist = NULL;
+ GList *file_selectedrows;
+ GList *selectedrows = NULL;
+ gchar buffer[256];
+ gboolean CddbTrackList_Line_Selected;
+ gboolean cddbsettoallfields, cddbsettotitle, cddbsettoartist, cddbsettoalbum, cddbsettoyear,
+ cddbsettotrack, cddbsettotracktotal, cddbsettogenre, cddbsettofilename;
+ CddbTrackAlbum *cddbtrackalbum = NULL;
+ GtkTreeSelection *selection = NULL;
+ GtkTreeSelection *file_selection = NULL;
+ GtkListStore *fileListModel;
+ GtkTreePath *currentPath = NULL;
+ GtkTreeIter currentIter;
+ GtkTreeIter *fileIter;
+ gpointer iterptr;
+
+ if (!CddbWindow || !BrowserList || !ETCore->ETFileDisplayedList)
+ return FALSE;
+
+ // Save the current displayed data
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ cddbsettoallfields = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToAllFields));
+ cddbsettotitle = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTitle));
+ cddbsettoartist = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToArtist));
+ cddbsettoalbum = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToAlbum));
+ cddbsettoyear = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToYear));
+ cddbsettotrack = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTrack));
+ cddbsettotracktotal = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToTrackTotal));
+ cddbsettogenre = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToGenre));
+ cddbsettofilename = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbSetToFileName));
+
+ fileListModel = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(BrowserList)));
+ list_length = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(CddbTrackListModel), NULL);
+
+ // Take the selected files in the cddb track list, else the full list
+ // Note : Just used to calculate "cddb_track_list_length" because
+ // "GPOINTER_TO_INT(cddb_track_list->data)" doesn't return the number of the
+ // line when "cddb_track_list = g_list_first(GTK_CLIST(CddbTrackCList)->row_list)"
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(CddbTrackListView));
+ selectedcount = gtk_tree_selection_count_selected_rows(selection);
+
+ /* Check if at least one line was selected. No line selected is equal to all lines selected. */
+ CddbTrackList_Line_Selected = FALSE;
+
+ if (selectedcount > 0)
+ {
+ /* Loop through selected rows only */
+ CddbTrackList_Line_Selected = TRUE;
+ rows_to_loop = selectedcount;
+ selectedrows = gtk_tree_selection_get_selected_rows(selection, NULL);
+ } else
+ {
+ /* Loop through all rows */
+ CddbTrackList_Line_Selected = FALSE;
+ rows_to_loop = list_length;
+ }
+
+ file_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ file_selectedcount = gtk_tree_selection_count_selected_rows(file_selection);
+
+ if (file_selectedcount > 0)
+ {
+ /* Rows are selected in the file list, apply tags to them only */
+ file_selectedrows = gtk_tree_selection_get_selected_rows(file_selection, NULL);
+
+ while (file_selectedrows)
+ {
+ counter++;
+ iterptr = g_malloc0(sizeof(GtkTreeIter));
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fileListModel),
+ (GtkTreeIter *)iterptr,
+ (GtkTreePath *)file_selectedrows->data))
+ file_iterlist = g_list_append(file_iterlist, iterptr);
+
+ if(!file_selectedrows->next || counter == rows_to_loop) break;
+ file_selectedrows = file_selectedrows->next;
+ }
+
+ /* Free the useless bit */
+ g_list_foreach(file_selectedrows, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(file_selectedrows);
+
+ } else /* No rows selected, use the first x items in the list */
+ {
+ gtk_tree_model_get_iter_first(GTK_TREE_MODEL(fileListModel), &currentIter);
+
+ do
+ {
+ counter++;
+ iterptr = g_memdup(&currentIter, sizeof(GtkTreeIter));
+ file_iterlist = g_list_append(file_iterlist, iterptr);
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(fileListModel), &currentIter));
+
+ file_selectedcount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(fileListModel), NULL);
+ }
+
+ if (file_selectedcount != rows_to_loop)
+ {
+ GtkWidget *msgbox;
+ gchar *msg;
+ gint button;
+
+ msg = g_strdup_printf(_("Be careful, you are applying %d lines of the CDDB "
+ "results to %d lines in the list of files!\n\nDo you want to continue ?"),
+ rows_to_loop,file_selectedcount);
+ msgbox = msg_box_new(_("Write Tag from CDDB..."),msg,GTK_STOCK_DIALOG_QUESTION,BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ button = msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ if (button != BUTTON_YES)
+ {
+ g_list_foreach(file_iterlist, (GFunc)g_free, NULL);
+ g_list_free(file_iterlist);
+ return FALSE;
+ }
+ }
+
+ //ET_Debug_Print_File_List (NULL, __FILE__, __LINE__, __FUNCTION__);
+
+ for (row=0; row < rows_to_loop; row++)
+ {
+ if (CddbTrackList_Line_Selected == FALSE)
+ {
+ if(row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+ } else /* (e.g.: if CddbTrackList_Line_Selected == TRUE) */
+ {
+ if(row == 0)
+ {
+ selectedrows = g_list_first(selectedrows);
+ currentPath = (GtkTreePath *)selectedrows->data;
+ } else
+ {
+ selectedrows = g_list_next(selectedrows);
+ currentPath = (GtkTreePath *)selectedrows->data;
+ }
+ }
+
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(CddbTrackListModel), &currentIter, currentPath))
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbTrackListModel), &currentIter, CDDB_TRACK_LIST_DATA, &cddbtrackalbum, -1);
+
+ // Set values in the ETFile
+ if (CDDB_USE_DLM)
+ {
+ // RQ : this part is ~ equal to code for '!CDDB_USE_DLM', but uses '*etfile' instead of 'etfile'
+ ET_File **etfile = NULL;
+ File_Name *FileName = NULL;
+ File_Tag *FileTag = NULL;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(CddbTrackListModel), &currentIter,
+ CDDB_TRACK_LIST_ETFILE, &etfile, -1);
+
+ /*
+ * Tag fields
+ */
+ if (cddbsettoallfields || cddbsettotitle || cddbsettotitle
+ || cddbsettoartist || cddbsettoalbum || cddbsettoyear
+ || cddbsettotrack || cddbsettotracktotal || cddbsettogenre)
+ {
+ // Allocation of a new FileTag
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(*etfile,FileTag);
+
+ if (cddbsettoallfields || cddbsettotitle)
+ ET_Set_Field_File_Tag_Item(&FileTag->title,cddbtrackalbum->track_name);
+
+ if ( (cddbsettoallfields || cddbsettoartist) && cddbtrackalbum->cddbalbum->artist)
+ ET_Set_Field_File_Tag_Item(&FileTag->artist,cddbtrackalbum->cddbalbum->artist);
+
+ if ( (cddbsettoallfields || cddbsettoalbum) && cddbtrackalbum->cddbalbum->album)
+ ET_Set_Field_File_Tag_Item(&FileTag->album, cddbtrackalbum->cddbalbum->album);
+
+ if ( (cddbsettoallfields || cddbsettoyear) && cddbtrackalbum->cddbalbum->year)
+ ET_Set_Field_File_Tag_Item(&FileTag->year, cddbtrackalbum->cddbalbum->year);
+
+ if (cddbsettoallfields || cddbsettotrack)
+ {
+ if (NUMBER_TRACK_FORMATED) snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,cddbtrackalbum->track_number);
+ else snprintf(buffer,sizeof(buffer),"%d", cddbtrackalbum->track_number);
+ ET_Set_Field_File_Tag_Item(&FileTag->track,buffer);
+ }
+
+ if (cddbsettoallfields || cddbsettotracktotal)
+ {
+ if (NUMBER_TRACK_FORMATED) snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,list_length);
+ else snprintf(buffer,sizeof(buffer),"%d", list_length);
+ ET_Set_Field_File_Tag_Item(&FileTag->track_total,buffer);
+ }
+
+ if ( (cddbsettoallfields || cddbsettogenre) && (cddbtrackalbum->cddbalbum->genre || cddbtrackalbum->cddbalbum->category) )
+ {
+ if (cddbtrackalbum->cddbalbum->genre && g_utf8_strlen(cddbtrackalbum->cddbalbum->genre, -1)>0)
+ ET_Set_Field_File_Tag_Item(&FileTag->genre,Cddb_Get_Id3_Genre_From_Cddb_Genre(cddbtrackalbum->cddbalbum->genre));
+ else
+ ET_Set_Field_File_Tag_Item(&FileTag->genre,Cddb_Get_Id3_Genre_From_Cddb_Genre(cddbtrackalbum->cddbalbum->category));
+ }
+ }
+
+ /*
+ * Filename field
+ */
+ if ( (cddbsettoallfields || cddbsettofilename) )
+ {
+ gchar *filename_generated_utf8;
+ gchar *filename_new_utf8;
+
+ // Allocation of a new FileName
+ FileName = ET_File_Name_Item_New();
+
+ // Build the filename with the path
+ if (NUMBER_TRACK_FORMATED) snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,cddbtrackalbum->track_number);
+ else snprintf(buffer,sizeof(buffer),"%d", cddbtrackalbum->track_number);
+
+ filename_generated_utf8 = g_strconcat(buffer," - ",cddbtrackalbum->track_name,NULL);
+ ET_File_Name_Convert_Character(filename_generated_utf8); // Replace invalid characters
+ filename_new_utf8 = ET_File_Name_Generate(*etfile,filename_generated_utf8);
+
+ ET_Set_Filename_File_Name_Item(FileName,filename_new_utf8,NULL);
+
+ g_free(filename_generated_utf8);
+ g_free(filename_new_utf8);
+ }
+
+ ET_Manage_Changes_Of_File_Data(*etfile,FileName,FileTag);
+
+ // Then run current scanner if asked...
+ if (ScannerWindow && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbRunScanner)) )
+ Scan_Select_Mode_And_Run_Scanner(*etfile);
+
+ } else if (cddbtrackalbum && file_iterlist && file_iterlist->data)
+ {
+ ET_File *etfile;
+ File_Name *FileName = NULL;
+ File_Tag *FileTag = NULL;
+
+ fileIter = (GtkTreeIter*) file_iterlist->data;
+ etfile = Browser_List_Get_ETFile_From_Iter(fileIter);
+
+ /*
+ * Tag fields
+ */
+ if (cddbsettoallfields || cddbsettotitle || cddbsettotitle
+ || cddbsettoartist || cddbsettoalbum || cddbsettoyear
+ || cddbsettotrack || cddbsettotracktotal || cddbsettogenre)
+ {
+ // Allocation of a new FileTag
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+
+ if (cddbsettoallfields || cddbsettotitle)
+ ET_Set_Field_File_Tag_Item(&FileTag->title,cddbtrackalbum->track_name);
+
+ if ( (cddbsettoallfields || cddbsettoartist) && cddbtrackalbum->cddbalbum->artist)
+ ET_Set_Field_File_Tag_Item(&FileTag->artist,cddbtrackalbum->cddbalbum->artist);
+
+ if ( (cddbsettoallfields || cddbsettoalbum) && cddbtrackalbum->cddbalbum->album)
+ ET_Set_Field_File_Tag_Item(&FileTag->album, cddbtrackalbum->cddbalbum->album);
+
+ if ( (cddbsettoallfields || cddbsettoyear) && cddbtrackalbum->cddbalbum->year)
+ ET_Set_Field_File_Tag_Item(&FileTag->year, cddbtrackalbum->cddbalbum->year);
+
+ if (cddbsettoallfields || cddbsettotrack)
+ {
+ if (NUMBER_TRACK_FORMATED) snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,cddbtrackalbum->track_number);
+ else snprintf(buffer,sizeof(buffer),"%d", cddbtrackalbum->track_number);
+ ET_Set_Field_File_Tag_Item(&FileTag->track,buffer);
+ }
+
+ if (cddbsettoallfields || cddbsettotracktotal)
+ {
+ if (NUMBER_TRACK_FORMATED) snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,list_length);
+ else snprintf(buffer,sizeof(buffer),"%d", list_length);
+ ET_Set_Field_File_Tag_Item(&FileTag->track_total,buffer);
+ }
+
+ if ( (cddbsettoallfields || cddbsettogenre) && (cddbtrackalbum->cddbalbum->genre || cddbtrackalbum->cddbalbum->category) )
+ {
+ if (cddbtrackalbum->cddbalbum->genre && g_utf8_strlen(cddbtrackalbum->cddbalbum->genre, -1)>0)
+ ET_Set_Field_File_Tag_Item(&FileTag->genre,Cddb_Get_Id3_Genre_From_Cddb_Genre(cddbtrackalbum->cddbalbum->genre));
+ else
+ ET_Set_Field_File_Tag_Item(&FileTag->genre,Cddb_Get_Id3_Genre_From_Cddb_Genre(cddbtrackalbum->cddbalbum->category));
+ }
+ }
+
+ /*
+ * Filename field
+ */
+ if ( (cddbsettoallfields || cddbsettofilename) )
+ {
+ gchar *filename_generated_utf8;
+ gchar *filename_new_utf8;
+
+ // Allocation of a new FileName
+ FileName = ET_File_Name_Item_New();
+
+ // Build the filename with the path
+ if (NUMBER_TRACK_FORMATED) snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,cddbtrackalbum->track_number);
+ else snprintf(buffer,sizeof(buffer),"%d", cddbtrackalbum->track_number);
+
+ filename_generated_utf8 = g_strconcat(buffer," - ",cddbtrackalbum->track_name,NULL);
+ ET_File_Name_Convert_Character(filename_generated_utf8); // Replace invalid characters
+ filename_new_utf8 = ET_File_Name_Generate(etfile,filename_generated_utf8);
+
+ ET_Set_Filename_File_Name_Item(FileName,filename_new_utf8,NULL);
+
+ g_free(filename_generated_utf8);
+ g_free(filename_new_utf8);
+ }
+
+ ET_Manage_Changes_Of_File_Data(etfile,FileName,FileTag);
+
+ // Then run current scanner if asked...
+ if (ScannerWindow && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbRunScanner)) )
+ Scan_Select_Mode_And_Run_Scanner(etfile);
+ }
+
+ if(!file_iterlist->next) break;
+ file_iterlist = file_iterlist->next;
+ }
+
+ g_list_foreach(file_iterlist, (GFunc)g_free, NULL);
+ g_list_free(file_iterlist);
+
+ Browser_List_Refresh_Whole_List();
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+
+ return TRUE;
+}
+
+
+void Cddb_Display_Red_Lines_In_Result (void)
+{
+ if (!CddbDisplayRedLinesButton) return;
+
+ if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(CddbDisplayRedLinesButton)) )
+ {
+ // Show only red lines
+ Cddb_Load_Album_List(TRUE);
+ }else
+ {
+ // Show all lines
+ Cddb_Load_Album_List(FALSE);
+ }
+}
+
+
+/*
+ * Returns the corresponding ID3 genre (the name, not the value)
+ */
+gchar *Cddb_Get_Id3_Genre_From_Cddb_Genre (gchar *cddb_genre)
+{
+ guint i;
+
+ if (!cddb_genre) return "";
+
+ for (i=0; i<=CDDB_GENRE_MAX; i++)
+ if (strcasecmp(cddb_genre,cddb_genre_vs_id3_genre[i][0])==0)
+ return cddb_genre_vs_id3_genre[i][1];
+ return cddb_genre;
+}
+
+/* Pixmaps */
+#include "../pixmaps/freedb.xpm"
+#include "../pixmaps/gnudb.xpm"
+#include "../pixmaps/musicbrainz.xpm"
+//#include "../pixmaps/closed_folder.xpm"
+
+/*
+ * Returns the pixmap to display following the server name
+ */
+GdkPixbuf *Cddb_Get_Pixbuf_From_Server_Name (gchar *server_name)
+{
+ if (!server_name)
+ return NULL;
+ else if (strstr((const gchar *)server_name,"freedb.org"))
+ return gdk_pixbuf_new_from_xpm_data(freedb_xpm);
+ else if (strstr((const gchar *)server_name,"gnudb.org"))
+ return gdk_pixbuf_new_from_xpm_data(gnudb_xpm);
+ else if (strstr((const gchar *)server_name,"musicbrainz.org"))
+ return gdk_pixbuf_new_from_xpm_data(musicbrainz_xpm);
+ else if (strstr((const gchar *)server_name,"/"))
+ //return gdk_pixbuf_new_from_xpm_data(closed_folder_xpm);
+ return NULL;
+ else
+ return NULL;
+}
+
+
+/*
+ * Function taken from gFTP.
+ * The standard to Base64 encoding can be found in RFC2045
+ */
+char *base64_encode (char *str)
+{
+ char *newstr, *newpos, *fillpos, *pos;
+ unsigned char table[64], encode[3];
+ int i, num;
+
+ for (i = 0; i < 26; i++)
+ {
+ table[i] = 'A' + i;
+ table[i + 26] = 'a' + i;
+ }
+
+ for (i = 0; i < 10; i++)
+ table[i + 52] = '0' + i;
+
+ table[62] = '+';
+ table[63] = '/';
+
+ num = strlen (str) / 3;
+ if (strlen (str) % 3 > 0)
+ num++;
+ newstr = g_malloc (num * 4 + 1);
+ newstr[num * 4] = '\0';
+ newpos = newstr;
+
+ pos = str;
+ while (*pos != '\0')
+ {
+ memset (encode, 0, sizeof (encode));
+ for (i = 0; i < 3 && *pos != '\0'; i++)
+ encode[i] = *pos++;
+
+ fillpos = newpos;
+ *newpos++ = table[encode[0] >> 2];
+ *newpos++ = table[(encode[0] & 3) << 4 | encode[1] >> 4];
+ *newpos++ = table[(encode[1] & 0xF) << 2 | encode[2] >> 6];
+ *newpos++ = table[encode[2] & 0x3F];
+ while (i < 3)
+ fillpos[++i] = '=';
+ }
+ return (newstr);
+}
+
+gchar *Cddb_Format_Proxy_Authentification (void)
+{
+ gchar *tempstr;
+ gchar *str;
+ gchar *ret;
+
+ if (CDDB_USE_PROXY && CDDB_PROXY_USER_NAME != NULL && *CDDB_PROXY_USER_NAME != '\0')
+ {
+ tempstr = g_strconcat(CDDB_PROXY_USER_NAME, ":", CDDB_PROXY_USER_PASSWORD, NULL);
+ str = base64_encode(tempstr);
+
+ ret = g_strdup_printf("Proxy-authorization: Basic %s\r\n", str);
+ g_free (str);
+ }else
+ {
+ ret = g_strdup("");
+ }
+ return ret;
+}
diff --git a/src/cddb.h b/src/cddb.h
new file mode 100644
index 0000000..9bcfd69
--- /dev/null
+++ b/src/cddb.h
@@ -0,0 +1,130 @@
+/* cddb.h - 2002/09/15 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __CDDB_H__
+#define __CDDB_H__
+
+
+/****************
+ * Declarations *
+ ****************/
+
+GtkWidget *CddbWindow;
+GtkWidget *CddbWindowHPaned;
+
+GtkWidget *CddbSearchInAllFields;
+GtkWidget *CddbSearchInArtistField;
+GtkWidget *CddbSearchInTitleField;
+GtkWidget *CddbSearchInTrackNameField;
+GtkWidget *CddbSearchInOtherField;
+
+GtkWidget *CddbSeparatorH;
+GtkWidget *CddbSeparatorV;
+GtkWidget *CddbShowCategoriesButton;
+
+GtkWidget *CddbSearchInAllCategories;
+GtkWidget *CddbSearchInBluesCategory;
+GtkWidget *CddbSearchInClassicalCategory;
+GtkWidget *CddbSearchInCountryCategory;
+GtkWidget *CddbSearchInFolkCategory;
+GtkWidget *CddbSearchInJazzCategory;
+GtkWidget *CddbSearchInMiscCategory;
+GtkWidget *CddbSearchInNewageCategory;
+GtkWidget *CddbSearchInReggaeCategory;
+GtkWidget *CddbSearchInRockCategory;
+GtkWidget *CddbSearchInSoundtrackCategory;
+
+GtkWidget *CddbSetToAllFields;
+GtkWidget *CddbSetToTitle;
+GtkWidget *CddbSetToArtist;
+GtkWidget *CddbSetToAlbum;
+GtkWidget *CddbSetToYear;
+GtkWidget *CddbSetToTrack;
+GtkWidget *CddbSetToTrackTotal;
+GtkWidget *CddbSetToGenre;
+GtkWidget *CddbSetToFileName;
+
+GtkWidget *CddbRunScanner;
+GtkWidget *CddbUseDLM2; // '2' as also used in the prefs.c
+GtkWidget *CddbUseLocalAccess;
+
+
+
+/*
+ * Structure used for each item of the album list. Aslo attached to each row of the album list
+ */
+typedef struct _CddbAlbum CddbAlbum;
+struct _CddbAlbum
+{
+ gchar *server_name; /* Remote access : Param of server name used for the connection - Local access : NULL */
+ gint server_port; /* Remote access : Param of server port used for the connection - Local access : 0 */
+ gchar *server_cgi_path; /* Remote access : Param of server cgi path used for the connection - Local access : discid file path */
+
+ GdkPixbuf *bitmap; /* Pixmap corresponding to the server */
+
+ gchar *artist_album; /* CDDB artist+album (allocated) */
+ gchar *category; /* CDDB genre (allocated) */
+ gchar *id; /* example : 8d0de30c (allocated) */
+ GList *track_list; /* List of tracks name of the album (list of CddbTrackAlbum items) */
+ gboolean other_version; /* To TRUE if this album is an other version of the previous one */
+
+ // We fill these data when loading the track list
+ gchar *artist; /* (allocated) */
+ gchar *album; /* (allocated) */
+ gchar *genre; /* (allocated) */
+ gchar *year; /* (allocated) */
+ guint duration;
+};
+
+
+/*
+ * Structure used for each item of the track_list of the CddbAlbum structure.
+ */
+typedef struct _CddbTrackAlbum CddbTrackAlbum;
+struct _CddbTrackAlbum
+{
+ guint track_number;
+ gchar *track_name; /* (allocated) */
+ guint duration;
+ CddbAlbum *cddbalbum; /* Pointer to the parent CddbAlbum structure (to access quickly to album properties) */
+};
+
+
+typedef struct _CddbTrackFrameOffset CddbTrackFrameOffset;
+struct _CddbTrackFrameOffset
+{
+ gulong offset;
+};
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void Init_CddbWindow (void);
+void Open_Cddb_Window (void);
+void Cddb_Popup_Menu_Search_Selected_File (void);
+void Cddb_Window_Apply_Changes (void);
+
+
+
+#endif /* __CDDB_H__ */
diff --git a/src/charset.c b/src/charset.c
new file mode 100755
index 0000000..74ecd9d
--- /dev/null
+++ b/src/charset.c
@@ -0,0 +1,824 @@
+/*
+ * Main part of code, written by:
+ *
+ * Copyright (C) 1999-2001 Håvard Kvålen <havardk@xmms.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include <config.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <string.h>
+#include <errno.h>
+#include <glib/gi18n-lib.h>
+
+#ifdef HAVE_LANGINFO_CODESET
+#include <langinfo.h>
+#endif
+
+#include "charset.h"
+#include "setting.h"
+#include "log.h"
+
+#ifdef WIN32
+ #include "win32/win32dep.h"
+#endif
+
+
+/****************
+ * Declarations *
+ ****************/
+
+#define CHARSET_TRANS_ARRAY_LEN ( sizeof(charset_trans_array) / sizeof((charset_trans_array)[0]) )
+const CharsetInfo charset_trans_array[] = {
+ {N_("Arabic (IBM-864)"), "IBM864" },
+ {N_("Arabic (ISO-8859-6)"), "ISO-8859-6" },
+ {N_("Arabic (Windows-1256)"), "windows-1256" },
+ {N_("Baltic (ISO-8859-13)"), "ISO-8859-13" },
+ {N_("Baltic (ISO-8859-4)"), "ISO-8859-4" },
+ {N_("Baltic (Windows-1257)"), "windows-1257" },
+ {N_("Celtic (ISO-8859-14)"), "ISO-8859-14" },
+ {N_("Central European (IBM-852)"), "IBM852" },
+ {N_("Central European (ISO-8859-2)"), "ISO-8859-2" },
+ {N_("Central European (Windows-1250)"), "windows-1250" },
+ {N_("Chinese Simplified (GB18030)"), "gb18030" },
+ {N_("Chinese Simplified (GB2312)"), "GB2312" },
+ {N_("Chinese Traditional (Big5)"), "Big5" },
+ {N_("Chinese Traditional (Big5-HKSCS)"), "Big5-HKSCS" },
+ {N_("Cyrillic (IBM-855)"), "IBM855" },
+ {N_("Cyrillic (ISO-8859-5)"), "ISO-8859-5" },
+ {N_("Cyrillic (ISO-IR-111)"), "ISO-IR-111" },
+ {N_("Cyrillic (KOI8-R)"), "KOI8-R" },
+ {N_("Cyrillic (Windows-1251)"), "windows-1251" },
+ {N_("Cyrillic/Russian (CP-866)"), "IBM866" },
+ {N_("Cyrillic/Ukrainian (KOI8-U)"), "KOI8-U" },
+ {N_("English (US-ASCII)"), "us-ascii" },
+ {N_("Greek (ISO-8859-7)"), "ISO-8859-7" },
+ {N_("Greek (Windows-1253)"), "windows-1253" },
+ {N_("Hebrew (IBM-862)"), "IBM862" },
+ {N_("Hebrew (Windows-1255)"), "windows-1255" },
+ {N_("Japanese (EUC-JP)"), "EUC-JP" },
+ {N_("Japanese (ISO-2022-JP)"), "ISO-2022-JP" },
+ {N_("Japanese (Shift_JIS)"), "Shift_JIS" },
+ {N_("Korean (EUC-KR)"), "EUC-KR" },
+ {N_("Nordic (ISO-8859-10)"), "ISO-8859-10" },
+ {N_("South European (ISO-8859-3)"), "ISO-8859-3" },
+ {N_("Thai (TIS-620)"), "TIS-620" },
+ {N_("Turkish (IBM-857)"), "IBM857" },
+ {N_("Turkish (ISO-8859-9)"), "ISO-8859-9" },
+ {N_("Turkish (Windows-1254)"), "windows-1254" },
+ //{N_("Unicode (UTF-7)"), "UTF-7" },
+ {N_("Unicode (UTF-8)"), "UTF-8" },
+
+ //{N_("Unicode (UTF-16BE)"), "UTF-16BE" },
+ //{N_("Unicode (UTF-16LE)"), "UTF-16LE" },
+ //{N_("Unicode (UTF-32BE)"), "UTF-32BE" },
+ //{N_("Unicode (UTF-32LE)"), "UTF-32LE" },
+
+ {N_("Vietnamese (VISCII)"), "VISCII" },
+ {N_("Vietnamese (Windows-1258)"), "windows-1258" },
+ {N_("Visual Hebrew (ISO-8859-8)"), "ISO-8859-8" },
+ {N_("Western (IBM-850)"), "IBM850" },
+ {N_("Western (ISO-8859-1)"), "ISO-8859-1" },
+ {N_("Western (ISO-8859-15)"), "ISO-8859-15" },
+ {N_("Western (Windows-1252)"), "windows-1252" }
+
+ /*
+ * From this point, character sets aren't supported by iconv
+ */
+/* {N_("Arabic (IBM-864-I)"), "IBM864i" },
+ {N_("Arabic (ISO-8859-6-E)"), "ISO-8859-6-E" },
+ {N_("Arabic (ISO-8859-6-I)"), "ISO-8859-6-I" },
+ {N_("Arabic (MacArabic)"), "x-mac-arabic" },
+ {N_("Armenian (ARMSCII-8)"), "armscii-8" },
+ {N_("Central European (MacCE)"), "x-mac-ce" },
+ {N_("Chinese Simplified (GBK)"), "x-gbk" },
+ {N_("Chinese Simplified (HZ)"), "HZ-GB-2312" },
+ {N_("Chinese Traditional (EUC-TW)"), "x-euc-tw" },
+ {N_("Croatian (MacCroatian)"), "x-mac-croatian" },
+ {N_("Cyrillic (MacCyrillic)"), "x-mac-cyrillic" },
+ {N_("Cyrillic/Ukrainian (MacUkrainian)"), "x-mac-ukrainian" },
+ {N_("Farsi (MacFarsi)"), "x-mac-farsi"},
+ {N_("Greek (MacGreek)"), "x-mac-greek" },
+ {N_("Gujarati (MacGujarati)"), "x-mac-gujarati" },
+ {N_("Gurmukhi (MacGurmukhi)"), "x-mac-gurmukhi" },
+ {N_("Hebrew (ISO-8859-8-E)"), "ISO-8859-8-E" },
+ {N_("Hebrew (ISO-8859-8-I)"), "ISO-8859-8-I" },
+ {N_("Hebrew (MacHebrew)"), "x-mac-hebrew" },
+ {N_("Hindi (MacDevanagari)"), "x-mac-devanagari" },
+ {N_("Icelandic (MacIcelandic)"), "x-mac-icelandic" },
+ {N_("Korean (JOHAB)"), "x-johab" },
+ {N_("Korean (UHC)"), "x-windows-949" },
+ {N_("Romanian (MacRomanian)"), "x-mac-romanian" },
+ {N_("Turkish (MacTurkish)"), "x-mac-turkish" },
+ {N_("User Defined"), "x-user-defined" },
+ {N_("Vietnamese (TCVN)"), "x-viet-tcvn5712" },
+ {N_("Vietnamese (VPS)"), "x-viet-vps" },
+ {N_("Western (MacRoman)"), "x-mac-roman" },
+ // charsets whithout possibly translatable names
+ {"T61.8bit", "T61.8bit" },
+ {"x-imap4-modified-utf7", "x-imap4-modified-utf7"},
+ {"x-u-escaped", "x-u-escaped" },
+ {"windows-936", "windows-936" }
+*/
+};
+
+static GHashTable *encodings;
+
+
+
+/*************
+ * Functions *
+ *************/
+
+
+/* stolen from gnome-desktop-item.c */
+static gboolean
+check_locale (const char *locale)
+{
+ GIConv cd = g_iconv_open ("UTF-8", locale);
+ if ((GIConv)-1 == cd)
+ return FALSE;
+ g_iconv_close (cd);
+ return TRUE;
+}
+
+/* stolen from gnome-desktop-item.c */
+static void
+insert_locales (GHashTable *encodings, char *enc, ...)
+{
+ va_list args;
+ char *s;
+
+ va_start (args, enc);
+ for (;;) {
+ s = va_arg (args, char *);
+ if (s == NULL)
+ break;
+ g_hash_table_insert (encodings, s, enc);
+ }
+ va_end (args);
+}
+
+/* stolen from gnome-desktop-item.c */
+/* make a standard conversion table from the desktop standard spec */
+void
+Charset_Insert_Locales_Init (void)
+{
+ encodings = g_hash_table_new (g_str_hash, g_str_equal);
+
+ /* "C" is plain ascii */
+ insert_locales (encodings, "ASCII", "C", NULL);
+#if WIN32
+ insert_locales (encodings, "windows-1256", "ar", NULL); // 2006.12.31 - For testing with Arabic
+#else
+ insert_locales (encodings, "ISO-8859-6", "ar", NULL);
+#endif
+ insert_locales (encodings, "ARMSCII-8", "by", NULL);
+ insert_locales (encodings, "BIG5", "zh_TW", NULL);
+ insert_locales (encodings, "CP1251", "be", "bg", NULL);
+ if (check_locale ("EUC-CN")) {
+ insert_locales (encodings, "EUC-CN", "zh_CN", NULL);
+ } else {
+ insert_locales (encodings, "GB2312", "zh_CN", NULL);
+ }
+ insert_locales (encodings, "EUC-JP", "ja", NULL);
+ insert_locales (encodings, "EUC-KR", "ko", NULL);
+ /*insert_locales (encodings, "GEORGIAN-ACADEMY", NULL);*/
+ insert_locales (encodings, "GEORGIAN-PS", "ka", NULL);
+ insert_locales (encodings, "ISO-8859-1", "br", "ca", "da", "de", "en", "es", "eu", "fi", "fr", "gl", "it", "nl", "wa", "no", "pt", "pt", "sv", NULL);
+#if WIN32
+ insert_locales (encodings, "windows-1250", "cs", "hr", "hu", "pl", "ro", "sk", "sl", "sq", "sr", NULL);
+#else
+ insert_locales (encodings, "ISO-8859-2", "cs", "hr", "hu", "pl", "ro", "sk", "sl", "sq", "sr", NULL);
+#endif
+ insert_locales (encodings, "ISO-8859-3", "eo", NULL);
+ insert_locales (encodings, "ISO-8859-5", "mk", "sp", NULL);
+#if WIN32
+ insert_locales (encodings, "windows-1253", "el", NULL);
+#else
+ insert_locales (encodings, "ISO-8859-7", "el", NULL);
+#endif
+#if WIN32
+ insert_locales (encodings, "windows-1254", "tr", NULL);
+#else
+ insert_locales (encodings, "ISO-8859-9", "tr", NULL);
+#endif
+ insert_locales (encodings, "ISO-8859-13", "lt", "lv", "mi", NULL);
+ insert_locales (encodings, "ISO-8859-14", "ga", "cy", NULL);
+ insert_locales (encodings, "ISO-8859-15", "et", NULL);
+#if WIN32
+ insert_locales (encodings, "windows-1251", "ru", NULL);
+#else
+ insert_locales (encodings, "KOI8-R", "ru", NULL);
+#endif
+ insert_locales (encodings, "KOI8-U", "uk", NULL);
+ if (check_locale ("TCVN-5712")) {
+ insert_locales (encodings, "TCVN-5712", "vi", NULL);
+ } else {
+ insert_locales (encodings, "TCVN", "vi", NULL);
+ }
+ insert_locales (encodings, "TIS-620", "th", NULL);
+#if WIN32
+ insert_locales (encodings, "windows-1255", "he", NULL);
+#endif
+ /*insert_locales (encodings, "VISCII", NULL);*/
+}
+
+void
+Charset_Insert_Locales_Destroy (void)
+{
+ g_hash_table_destroy (encodings);
+}
+
+/* stolen from gnome-desktop-item.c */
+const char *
+get_encoding_from_locale (const char *locale)
+{
+ char lang[3];
+ const char *encoding;
+
+ if (locale == NULL)
+ return NULL;
+
+ /* if locale includes encoding, use it *//*
+ encoding = strchr (locale, '.');
+ if (encoding != NULL) {
+ return encoding+1;
+ }*/
+ /* if locale includes encoding (that isn't UTF-8), use it */
+ encoding = strchr (locale, '.');
+ if (encoding != NULL && strncmp (encoding, ".UTF-8", 6)) {
+ return encoding+1;
+ }
+
+ /* first try the entire locale (at this point ll_CC) */
+ encoding = g_hash_table_lookup (encodings, locale);
+ if (encoding != NULL)
+ return encoding;
+
+ /* Try just the language */
+ strncpy (lang, locale, 2);
+ lang[2] = '\0';
+ return g_hash_table_lookup (encodings, lang);
+}
+
+
+/*
+ * Return the locale from LANG if exists, else from LC_ALL
+ *
+ * http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html#tag_08_02
+ *
+ * LANG
+ * This variable shall determine the locale category for native language,
+ * local customs, and coded character set in the absence of the LC_ALL and
+ * other LC_* ( LC_COLLATE , LC_CTYPE , LC_MESSAGES , LC_MONETARY , LC_NUMERIC ,
+ * LC_TIME ) environment variables. This can be used by applications to
+ * determine the language to use for error messages and instructions, collating
+ * sequences, date formats, and so on.
+ * LC_ALL
+ * This variable shall determine the values for all locale categories. The
+ * value of the LC_ALL environment variable has precedence over any of the
+ * other environment variables starting with LC_ ( LC_COLLATE , LC_CTYPE ,
+ * LC_MESSAGES , LC_MONETARY , LC_NUMERIC , LC_TIME ) and the LANG environment
+ * variable.
+ * LC_COLLATE
+ * This variable shall determine the locale category for character collation.
+ * It determines collation information for regular expressions and sorting,
+ * including equivalence classes and multi-character collating elements, in
+ * various utilities and the strcoll() and strxfrm() functions. Additional
+ * semantics of this variable, if any, are implementation-defined.
+ * LC_CTYPE
+ * This variable shall determine the locale category for character handling
+ * functions, such as tolower(), toupper(), and isalpha(). This environment
+ * variable determines the interpretation of sequences of bytes of text data
+ * as characters (for example, single as opposed to multi-byte characters),
+ * the classification of characters (for example, alpha, digit, graph), and
+ * the behavior of character classes. Additional semantics of this variable,
+ * if any, are implementation-defined.
+ * LC_MESSAGES
+ * This variable shall determine the locale category for processing affirmative
+ * and negative responses and the language and cultural conventions in which
+ * messages should be written. [XSI] [Option Start] It also affects the behavior
+ * of the catopen() function in determining the message catalog. [Option End]
+ * Additional semantics of this variable, if any, are implementation-defined.
+ * The language and cultural conventions of diagnostic and informative messages
+ * whose format is unspecified by IEEE Std 1003.1-2001 should be affected by
+ * the setting of LC_MESSAGES .
+ * LC_MONETARY
+ * This variable shall determine the locale category for monetary-related
+ * numeric formatting information. Additional semantics of this variable, if
+ * any, are implementation-defined.
+ * LC_NUMERIC
+ * This variable shall determine the locale category for numeric formatting
+ * (for example, thousands separator and radix character) information in
+ * various utilities as well as the formatted I/O operations in printf() and
+ * scanf() and the string conversion functions in strtod(). Additional semantics
+ * of this variable, if any, are implementation-defined.
+ * LC_TIME
+ * This variable shall determine the locale category for date and time formatting
+ * information. It affects the behavior of the time functions in strftime().
+ * Additional semantics of this variable, if any, are implementation-defined.
+ *
+ *
+ * The values of locale categories shall be determined by a precedence order; the
+ * first condition met below determines the value:
+ *
+ * 1. If the LC_ALL environment variable is defined and is not null, the value
+ * of LC_ALL shall be used.
+ * 2. If the LC_* environment variable ( LC_COLLATE , LC_CTYPE , LC_MESSAGES ,
+ * LC_MONETARY , LC_NUMERIC , LC_TIME ) is defined and is not null, the value
+ * of the environment variable shall be used to initialize the category that
+ * corresponds to the environment variable.
+ * 3. If the LANG environment variable is defined and is not null, the value of
+ * the LANG environment variable shall be used.
+ * 4. If the LANG environment variable is not set or is set to the empty string,
+ * the implementation-defined default locale shall be used.
+ *
+ */
+const gchar *get_locale (void)
+{
+ if (g_getenv("LC_ALL"))
+ return g_getenv("LC_ALL");
+
+ else if (g_getenv("LC_CTYPE"))
+ return g_getenv("LC_CTYPE");
+
+ else if (g_getenv("LANG"))
+ return g_getenv("LANG");
+
+ else
+ return NULL;
+}
+
+
+
+
+/*
+ * convert_string : (don't use with UTF-16 strings)
+ * - display_error : if TRUE, may return an escaped string and display an error
+ * message (if conversion fails).
+ */
+gchar *convert_string (const gchar *string, const gchar *from_codeset,
+ const gchar *to_codeset, const gboolean display_error)
+{
+ return convert_string_1(string, -1, from_codeset, to_codeset, display_error);
+}
+/* Length must be passed, as the string might be Unicode, in which case we can't
+ * count zeroes (see strlen call below). */
+gchar *convert_string_1 (const gchar *string, gssize length, const gchar *from_codeset,
+ const gchar *to_codeset, const gboolean display_error)
+{
+ gchar *output;
+ GError *error = NULL;
+ gsize bytes_written;
+
+ if (!string)
+ return NULL;
+
+ output = g_convert(string, length, to_codeset, from_codeset, NULL, &bytes_written, &error);
+ //output = g_convert_with_fallback(string, length, to_codeset, from_codeset, "?", NULL, &bytes_written, &error);
+
+ if (output == NULL)
+ {
+ gchar *escaped_str = g_strescape(string, NULL);
+ if (display_error)
+ {
+ Log_Print("convert_string(): Failed conversion from charset '%s' to '%s'. "
+ "String '%s'. Errcode %d (%s).\n",
+ from_codeset, to_codeset, escaped_str, error->code, error->message);
+ }
+ g_free(escaped_str);
+ g_error_free(error);
+ // Return the input string without converting it. If the string is
+ // displayed in the UI, it must be in UTF-8!
+ if ( (g_ascii_strcasecmp(to_codeset, "UTF-8"))
+ || (g_utf8_validate(string, -1, NULL)) )
+ {
+ return g_strdup(string);
+ }
+ }else
+ {
+ // Patch from Alexey Illarionov:
+ // g_convert returns null-terminated string only with one \0 at the
+ // end. It can cause some garbage at the end of a string for UTF-16.
+ // The second \0 should be set manually.
+ output = g_realloc(output, bytes_written + 2);
+ if (output != NULL)
+ output[bytes_written] = output[bytes_written + 1] = 0;
+ }
+
+ //g_print("from %s => len: %d, string: '%s'\n (%x %x %x %x %x %x %x %x)\n",from_codeset,length,string,string[0],string[1],string[2],string[3],string[4],string[5],string[6],string[7]);
+ //g_print("to %s => len: %d, output: '%s'\n (%x %x %x %x %x %x %x %x)\n\n",to_codeset,bytes_written+2,output,output[0],output[1],output[2],output[3],output[4],output[5],output[6],output[7]);
+
+ return output;
+}
+
+
+/*
+ * Conversion with UTF-8 for Ogg Vorbis and FLAC tags (current_charset <===> UTF-8)
+ */
+gchar *convert_to_utf8 (const gchar *string)
+{
+ gchar *output;
+ GError *error = NULL;
+
+ if (!string)
+ return NULL;
+
+ output = g_locale_to_utf8(string, -1, NULL, NULL, &error);
+
+ if (output == NULL)
+ {
+ const gchar *usercharset;
+ gchar *escaped_str = g_strescape(string, NULL);
+ g_get_charset(&usercharset);
+ Log_Print("convert_to_utf8(): Failed conversion from charset '%s'. "
+ "String '%s'. Errcode %d (%s).\n",
+ usercharset, escaped_str, error->code, error->message);
+ g_free(escaped_str);
+
+ if (g_utf8_validate(string, -1, NULL))
+ Log_Print("convert_to_utf8(): String was valid UTF-8.\n");
+ else
+ Log_Print("convert_to_utf8(): String was INVALID UTF-8.\n");
+
+ g_error_free(error);
+ return g_strdup(string);
+ }
+
+ return output;
+}
+
+gchar *convert_from_utf8 (const char *string)
+{
+ gchar *output;
+ GError *error = NULL;
+
+ if (!string)
+ return NULL;
+
+ output = g_locale_from_utf8(string, -1, NULL, NULL, &error);
+
+ if (output == NULL)
+ {
+ const gchar *usercharset;
+ gchar *escaped_str = g_strescape(string, NULL);
+ g_get_charset(&usercharset);
+ Log_Print("convert_from_utf8(): Failed conversion to charset '%s'. "
+ "String '%s'. Errcode %d (%s).\n",
+ usercharset, escaped_str, error->code, error->message);
+ g_free(escaped_str);
+
+ if (g_utf8_validate(string, -1, NULL))
+ Log_Print("convert_from_utf8(): String was valid UTF-8.\n");
+ else
+ Log_Print("convert_from_utf8(): String was INVALID UTF-8.\n");
+
+ g_error_free(error);
+ return g_strdup(string);
+ }
+
+ return output;
+}
+
+
+
+/*
+ * Convert a string from the filename system encoding to UTF-8.
+ * - conversion OK : returns the UTF-8 string (new allocated)
+ * - conversion KO : tries others encodings else returns an 'escaped' string
+ */
+gchar *filename_to_display (const gchar *string)
+{
+ gchar *ret = NULL;
+ GError *error = NULL;
+
+ if (!string)
+ return NULL;
+
+ if (g_utf8_validate(string, -1, NULL))
+ {
+ // String already in UTF-8
+ ret = g_strdup(string);
+ }else
+ {
+ const gchar *char_encoding;
+
+ // Get encoding associated to the locale without using UTF-8 (ex , if LANG=fr_FR.UTF-8 it will return ISO-8859-1)
+ char_encoding = get_encoding_from_locale(get_locale());
+ if (char_encoding)
+ {
+ //g_print("> char_encoding: %s\n",char_encoding);
+ error = NULL;
+ ret = g_convert(string, -1, "UTF-8", char_encoding, NULL, NULL, &error);
+ }
+
+ if (!ret)
+ {
+ // Failing that, try ISO-8859-1
+ error = NULL;
+ ret = g_convert(string, -1, "UTF-8", "ISO-8859-1", NULL, NULL, &error);
+ }
+
+ if (!ret)
+ {
+ gchar *escaped_str = g_strescape(string, NULL);
+ Log_Print(_("The filename '%s' couldn't be converted into UTF-8 (%s).\n"),
+ escaped_str, error && error->message ? error->message : _("Invalid UTF-8"));
+ g_clear_error(&error);
+
+ ret = escaped_str;
+ }
+ }
+
+#ifdef WIN32
+ ET_Win32_Path_Remove_Trailing_Slash(ret);
+ ET_Win32_Path_Replace_Slashes(ret);
+#endif
+
+ return ret;
+}
+
+/*
+ * Convert a string from UTF-8 to the filename system encoding.
+ * - conversion OK : returns the string in filename system encoding (new allocated)
+ * - conversion KO : display error message + returns nothing!
+ */
+gchar *filename_from_display (const gchar *string)
+{
+ GError *error = NULL;
+ gchar *ret = NULL;
+ const gchar *char_encoding = NULL;
+ //const gchar *filename_encoding = NULL;
+
+ if (!string) return NULL;
+
+ // Get system encoding from LANG if found (ex : fr_FR.UTF-8 => UTF-8)
+ if (get_locale())
+ char_encoding = strchr(get_locale(), '.');
+
+ if (char_encoding)
+ char_encoding = char_encoding+1; // Skip the '.'
+ if (char_encoding)
+ {
+ error = NULL;
+
+ if (FILENAME_CHARACTER_SET_OTHER)
+ {
+ ret = g_convert(string, -1, char_encoding, "UTF-8", NULL, NULL, &error);
+
+ }else if (FILENAME_CHARACTER_SET_APPROXIMATE)
+ {
+ // iconv_open (3):
+ // When the string "//TRANSLIT" is appended to tocode, transliteration
+ // is activated. This means that when a character cannot be represented
+ // in the target character set, it can be approximated through one or
+ // several similarly looking characters.
+ gchar *enc = g_strconcat(char_encoding, "//TRANSLIT", NULL);
+ ret = g_convert(string, -1, enc, "UTF-8", NULL, NULL, &error);
+ g_free(enc);
+
+ }else if (FILENAME_CHARACTER_SET_DISCARD)
+ {
+ // iconv_open (3):
+ // When the string "//IGNORE" is appended to tocode, characters that
+ // cannot be represented in the target character set will be silently
+ // discarded.
+ gchar *enc = g_strconcat(char_encoding, "//IGNORE", NULL);
+ ret = g_convert(string, -1, enc, "UTF-8", NULL, NULL, &error);
+ g_free(enc);
+ }
+ }
+
+ if (!ret)
+ {
+ // Get system encoding from locale in LANG if found (ex : fr_FR.UTF-8 => fr_FR => ISO-8859-1)
+ char_encoding = get_encoding_from_locale(get_locale());
+ if (char_encoding)
+ {
+ //g_print("> char_encoding: %s\n",char_encoding);
+ error = NULL;
+ ret = g_convert(string, -1, char_encoding, "UTF-8", NULL, NULL, &error);
+ }
+ }
+
+ if (!ret)
+ {
+ // Failing that, try ISO-8859-1
+ error = NULL;
+ ret = g_convert(string, -1, "ISO-8859-1", "UTF-8", NULL, NULL, &error);
+ }
+
+ if (!ret)
+ {
+ if (g_utf8_validate(string, -1, NULL))
+ {
+ // String already in UTF-8
+ ret = g_strdup(string);
+ }
+ }
+
+ if (!ret)
+ {
+ // Conversion KO!
+ gchar *escaped_str = g_strescape(string, NULL);
+ Log_Print(_("The UTF-8 string '%s' couldn't be converted into filename encoding (%s)\n"),
+ escaped_str, error && error->message ? error->message : _("Invalid UTF-8"));
+ g_clear_error(&error);
+
+ ret = escaped_str;
+ }
+
+#ifdef WIN32
+ //ET_Win32_Path_Replace_Backslashes(ret);
+#endif
+
+ return ret; // We need to catch errors (e.g. temp=NULL) in the real code
+}
+
+
+
+/*
+ * Function used when reading tags : we check if the string is valid UTF-8 (else
+ * it may cause problem in EasyTAG)
+ *
+ * Examples :
+ * - some Ogg Vorbis tags contain ISO-8859-1 characters instead of UTF-8).
+ * - some Flac tags may be probably encoded to ISO-8859-15 (by using for example
+ * "metaflac --no-utf8-convert ...") so we convert it from ISO-8859-1 to UTF-8.
+ *
+ * If not valid UTF-8, we try some conversion to try to get the correct string
+ * - conversion OK : returns the UTF-8 string (new allocated)
+ * - conversion KO : tries others encodings else returns an 'escaped' string
+ */
+gchar *Try_To_Validate_Utf8_String (const gchar *string)
+{
+ gchar *ret = NULL;
+ GError *error = NULL;
+
+ if (!string)
+ return NULL;
+
+ if (g_utf8_validate(string, -1, NULL))
+ {
+ // String already in UTF-8
+ ret = g_strdup(string);
+ }else
+ {
+ const gchar *char_encoding;
+
+ // Get encoding associated to the locale without using UTF-8 (ex , if LANG=fr_FR.UTF-8 it will return ISO-8859-1)
+ char_encoding = get_encoding_from_locale(get_locale());
+ if (char_encoding)
+ {
+ //g_print("> char_encoding: %s\n",char_encoding);
+ error = NULL;
+ ret = g_convert(string, -1, "UTF-8", char_encoding, NULL, NULL, &error);
+ }
+
+ if (!ret)
+ {
+ // Failing that, try ISO-8859-1
+ error = NULL;
+ ret = g_convert(string, -1, "UTF-8", "ISO-8859-1", NULL, NULL, &error);
+ }
+
+ if (!ret)
+ {
+ gchar *escaped_str = g_strescape(string, NULL);
+ Log_Print(_("The string '%s' couldn't be converted into UTF-8 (%s).\n"),
+ escaped_str, error && error->message ? error->message : _("Invalid UTF-8"));
+ g_clear_error(&error);
+
+ ret = escaped_str;
+ }
+ }
+
+ return ret;
+}
+
+
+
+void Charset_Populate_Combobox (GtkComboBox *combo, gchar *select_charset)
+{
+ guint i;
+
+ for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
+ {
+ gtk_combo_box_append_text(combo, _(charset_trans_array[i].charset_title));
+
+ if (select_charset && strcmp(charset_trans_array[i].charset_name, select_charset) == 0)
+ gtk_combo_box_set_active(combo, i);
+ }
+}
+
+
+/*
+ * Return charset_name from charset_title
+ */
+gchar *Charset_Get_Name_From_Title (const gchar *charset_title)
+{
+ guint i;
+
+ if (charset_title)
+ for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
+ if ( strcasecmp(_(charset_title),_(charset_trans_array[i].charset_title)) == 0 )
+ return charset_trans_array[i].charset_name;
+ return "";
+}
+
+
+/*
+ * Return charset_title from charset_name
+ */
+gchar *Charset_Get_Title_From_Name (gchar *charset_name)
+{
+ guint i;
+
+ if (charset_name)
+ for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
+ if ( strcasecmp(charset_name,charset_trans_array[i].charset_name) == 0 )
+ return _(charset_trans_array[i].charset_title);
+ return "";
+}
+
+
+
+/*
+ * Test if the conversion is supported between two character sets ('from' and 'to)
+ * (function called in the preferences window).
+ * Note : for UTF-16 (2 byte for each character) we make a special test...
+ */
+gboolean test_conversion_charset (const gchar *from, const gchar *to)
+{
+ gchar *temp;
+
+ if (!from || !to)
+ return FALSE;
+
+ // Do a quick test conversion and examine error output
+ if ( strcmp(from,"UTF-16BE") == 0 )
+ {
+ temp = convert_string_1("F\0O\0O\0\0\0", 6, from, to, FALSE);
+ }else if ( strcmp(from,"UTF-16LE") == 0 )
+ {
+ temp = convert_string_1("\0F\0O\0O\0\0", 6, from, to, FALSE);
+ }else
+ {
+ temp = convert_string("FOO", from, to, FALSE);
+ }
+
+ if (!temp)
+ {
+ /*// Error in conversion
+ if (error && error->code == G_CONVERT_ERROR_NO_CONVERSION)
+ {
+ Log_Print("Conversion error from '%s' to '%s' (G_CONVERT_ERROR_NO_CONVERSION)",from,to);
+ } else if (error && error->code == G_CONVERT_ERROR_ILLEGAL_SEQUENCE)
+ {
+ Log_Print("Conversion error from '%s' to '%s' (G_CONVERT_ERROR_ILLEGAL_SEQUENCE)",from,to);
+ } else if (error && error->code == G_CONVERT_ERROR_FAILED)
+ {
+ Log_Print("Conversion error from '%s' to '%s' (G_CONVERT_ERROR_FAILED)",from,to);
+ } else if (error && error->code == G_CONVERT_ERROR_PARTIAL_INPUT)
+ {
+ Log_Print("Conversion error from '%s' to '%s' (G_CONVERT_ERROR_PARTIAL_INPUT)",from,to);
+ } else if (error && error->code == G_CONVERT_ERROR_BAD_URI)
+ {
+ Log_Print("Conversion error from '%s' to '%s' (G_CONVERT_ERROR_BAD_URI)",from,to);
+ } else if (error && error->code == G_CONVERT_ERROR_NOT_ABSOLUTE_PATH)
+ {
+ Log_Print("Conversion error from '%s' to '%s' (G_CONVERT_ERROR_NOT_ABSOLUTE_PATH)",from,to);
+ } else
+ {
+ Log_Print("Conversion error from '%s' to '%s' (unknown : %d)",from,to,error->code);
+ }
+
+ if (error)
+ g_error_free(error);*/
+ return FALSE;
+ } else
+ {
+ /*// No error
+ if (error)
+ g_error_free(error);*/
+ g_free(temp);
+ return TRUE;
+ }
+}
diff --git a/src/charset.h b/src/charset.h
new file mode 100755
index 0000000..7613628
--- /dev/null
+++ b/src/charset.h
@@ -0,0 +1,72 @@
+/* charset.h - 2001/12/04 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __CHARSET_H__
+#define __CHARSET_H__
+
+#include <gtk/gtk.h>
+
+/***************
+ * Declaration *
+ ***************/
+
+typedef struct
+{
+ gchar *charset_title;
+ gchar *charset_name;
+} CharsetInfo;
+
+/* translated charset titles */
+extern const CharsetInfo charset_trans_array[];
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+const char *get_encoding_from_locale (const char *locale);
+const gchar *get_locale (void);
+
+
+gchar *convert_string (const gchar *string, const gchar *from_codeset, const gchar *to_codeset, const gboolean display_error);
+gchar *convert_string_1 (const gchar *string, gssize length, const gchar *from_codeset, const gchar *to_codeset, const gboolean display_error);
+
+/* Used for Ogg Vorbis and FLAC tags */
+gchar *convert_to_utf8 (const gchar *string);
+gchar *convert_from_utf8 (const gchar *string);
+
+gchar *filename_to_display (const gchar *string);
+gchar *filename_from_display (const gchar *string);
+
+gchar *Try_To_Validate_Utf8_String (const gchar *string);
+
+void Charset_Populate_Combobox (GtkComboBox *combo, gchar *select_charset);
+gchar *Charset_Get_Name_From_Title (const gchar *charset_title);
+gchar *Charset_Get_Title_From_Name (gchar *charset_name);
+
+gboolean test_conversion_charset (const gchar *from, const gchar *to);
+
+void Charset_Insert_Locales_Init (void);
+void Charset_Insert_Locales_Destroy (void);
+
+
+#endif /* __CHARSET_H__ */
diff --git a/src/crc32.c b/src/crc32.c
new file mode 100755
index 0000000..bd68609
--- /dev/null
+++ b/src/crc32.c
@@ -0,0 +1,130 @@
+/* crc32.c - the crc check algorithm for cksfv modified by oliver for easytag
+
+ Copyright (C) 2000 Bryan Call <bc@fodder.org>
+ Copyright (C) 2003 Oliver Schinagl <oliver@are-b.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdio.h>
+#include "crc32.h"
+
+/*
+ * Initial crc32 function
+ * This function was renamed from crc32(...) to crc32_easytag(...) to avoid a
+ * strange problem with some gtk theme that may use the same name of function.
+ */
+int crc32_easytag(register int fd, unsigned long *main_val)
+{
+ char buf[BUFFERSIZE], *p;
+ int nr;
+ unsigned long crc = ~0, crc32_total = ~0;
+
+ while ((nr = read(fd, &buf, sizeof(buf))) > 0)
+ for (p = buf; nr--; ++p)
+ {
+ crc = (crc >> 8) ^ crctable[(crc ^ *p) & 0xff];
+ crc32_total = (crc >> 8) ^ crctable[(crc32_total ^ *p) & 0xff];
+ }
+ if (nr < 0)
+ return 1;
+
+ *main_val = ~crc;
+
+ return 0;
+}
+
+
+
+/*
+ * Calculate the CRC-32 value of audio data (doesn't read the ID3v2 and ID3v1 tags).
+ * Return 0 if OK
+ */
+int crc32_file_with_ID3_tag(char *filename, unsigned long *main_val)
+{
+ char buf[BUFFERSIZE], *p;
+ int nr;
+ unsigned long crc = ~0, crc32_total = ~0;
+ FILE *fd;
+ unsigned char tmp_id3[4];
+ int id3v2size = 0;
+ struct stat statbuf;
+ unsigned long size = 0;
+ int has_id3v1 = 0;
+
+
+ if (!filename)
+ return 1;
+
+ stat(filename,&statbuf);
+ size = statbuf.st_size;
+
+ if ( (fd = fopen(filename,"r"))==NULL )
+ return 1;
+
+ // Check if there is an ID3v1 tag...
+ fseek(fd, -128, SEEK_END);
+ if (fread(tmp_id3, 1, 3, fd) != 3)
+ return 1;
+ if (tmp_id3[0] == 'T' && tmp_id3[1] == 'A' && tmp_id3[2] == 'G')
+ has_id3v1 = 1;
+
+
+ // Check if there is an ID3v2 tag...
+ fseek(fd, 0L, SEEK_SET);
+ if (fread(tmp_id3, 1, 4, fd) != 4)
+ return 1;
+ // Calculate ID3v2 length
+ if (tmp_id3[0] == 'I' && tmp_id3[1] == 'D' && tmp_id3[2] == '3' && tmp_id3[3] < 0xFF)
+ {
+ // id3v2 tag skipeer $49 44 33 yy yy xx zz zz zz zz [zz size]
+ fseek(fd, 2, SEEK_CUR); // Size is 6-9 position
+ if (fread(tmp_id3, 1, 4, fd) != 4)
+ return 1;
+ id3v2size = 10 + ( (long)(tmp_id3[3]) | ((long)(tmp_id3[2]) << 7)
+ | ((long)(tmp_id3[1]) << 14) | ((long)(tmp_id3[0]) << 21) );
+
+ fseek(fd, id3v2size, SEEK_SET);
+ size = size - id3v2size;
+ }else
+ {
+ fseek(fd, 0L, SEEK_SET);
+ }
+
+ while ((nr = fread(buf, sizeof(char), sizeof(buf), fd)) > 0)
+ {
+ if (has_id3v1 && nr <= 128) // We are reading end of ID3v1 tag
+ break;
+ if ( has_id3v1 && ((size=size-nr) < 128) ) // ID3v1 tag is in the current buf
+ nr = nr - 128 + size;
+
+ for (p = buf; nr--; ++p)
+ {
+ crc = (crc >> 8) ^ crctable[(crc ^ *p) & 0xff];
+ crc32_total = (crc >> 8) ^ crctable[(crc32_total ^ *p) & 0xff];
+ }
+ }
+
+ fclose(fd);
+
+ if (nr < 0)
+ return 1;
+
+ *main_val = ~crc;
+
+ return 0;
+}
diff --git a/src/crc32.h b/src/crc32.h
new file mode 100755
index 0000000..7f29a70
--- /dev/null
+++ b/src/crc32.h
@@ -0,0 +1,98 @@
+/* crc32.h - the crc check algorithm for cksfv modified by oliver for easytag
+
+ Copyright (C) 2000 Bryan Call <bc@fodder.org>
+ Copyright (C) 2003 Oliver Schinagl <oliver@are-b.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+#ifndef __CRC32_H__
+#define __CRC32_H__
+
+
+#define BUFFERSIZE 16384 /* (16k) buffer size for reading from the file */
+
+static const unsigned long crctable[256] = {
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
+ 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+ 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+ 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+ 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+ 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
+ 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+ 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+ 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
+ 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+ 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
+ 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+ 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+ 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
+ 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+ 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
+ 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+ 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
+ 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
+ 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+ 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
+ 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+ 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
+ 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
+ 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
+ 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
+ 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+ 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
+ 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+ 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
+ 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
+ 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+ 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
+ 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+ 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
+ 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
+ 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
+ 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
+ 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+ 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
+ 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+ 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
+ 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
+ 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+ 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
+ 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+ 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
+ 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
+ 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
+ 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
+ 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+ 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
+};
+
+int crc32_easytag(register int fd, unsigned long *main_val);
+int crc32_file_with_ID3_tag(char *filename, unsigned long *main_val);
+
+
+#endif /* __CRC32_H__ */
diff --git a/src/dlm.c b/src/dlm.c
new file mode 100755
index 0000000..19c14e3
--- /dev/null
+++ b/src/dlm.c
@@ -0,0 +1,90 @@
+/* dlm.c - 2004/07/04 - Santtu Lakkala */
+
+#include <glib.h>
+#include <string.h>
+
+int dlm_cost (const gchar, const gchar);
+int dlm_minimum (int a, int b, int c, int d);
+
+/*
+ * Compute the Damerau-Levenshtein Distance between utf-8 strings ds and dt.
+ */
+int dlm (const gchar *ds, const gchar *dt)
+{
+ int i, j, n, m, metric;
+ int *d;
+
+ /* Casefold for better matching of the strings. */
+ gchar *s = g_utf8_casefold(ds, -1);
+ gchar *t = g_utf8_casefold(dt, -1);
+
+ n = strlen(s);
+ m = strlen(t);
+
+ if (n && m)
+ {
+ n++;
+ m++;
+
+ d = (int *)g_malloc0(sizeof(int) * m * n);
+
+ for (i = 0; i < m; i++)
+ d[i * n] = i;
+
+ for (i = 1; i < n; i++)
+ {
+ d[i] = i;
+ for (j = 1; j < m; j++)
+ {
+ d[j * n + i] = dlm_minimum(
+ d[(j - 1) * n + i] + 1,
+ d[j * n + i - 1] + 1,
+ d[(j - 1) * n + i - 1] + dlm_cost(s[i - 1], t[j - 1]),
+ (j>1 && i>1 ?
+ d[(j - 2) * n + i - 2] + dlm_cost(s[i - 1], t[j])
+ + dlm_cost(s[i], t[j - 1])
+ : 0x7fff)
+ );
+ }
+ }
+ metric = d[n * m - 1];
+ g_free(d);
+
+ /* Count a "similarity value" */
+ metric = 1000 - (1000 * (metric * 2)) / (m + n);
+
+ g_free(t);
+ g_free(s);
+ return metric;
+ }
+ g_free(t);
+ g_free(s);
+
+ /* Return value of -1 indicates an error */
+ return -1;
+}
+
+/* "Cost" of changing from a to b. */
+int dlm_cost (const char a, const char b)
+{
+ return a == b ? 0 : 1;
+}
+
+/* Return the smallest of four integers. */
+int dlm_minimum (int a, int b, int c, int d)
+{
+ int min = a;
+ if (b < min)
+ {
+ min = b;
+ }
+ if (c < min)
+ {
+ min = c;
+ }
+ if (d < min)
+ {
+ min = d;
+ }
+ return min;
+}
diff --git a/src/dlm.h b/src/dlm.h
new file mode 100755
index 0000000..1ef23fd
--- /dev/null
+++ b/src/dlm.h
@@ -0,0 +1,8 @@
+/* dlm.h - 2004/07/04 */
+
+#ifndef __DLM_H__
+#define __DLM_H__
+
+int dlm (const gchar *s, const gchar *t);
+
+#endif /* __DLM_H__ */
diff --git a/src/easytag.c b/src/easytag.c
new file mode 100755
index 0000000..7ae6d35
--- /dev/null
+++ b/src/easytag.c
@@ -0,0 +1,4612 @@
+/* easytag.c - 2000/04/28 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#include <config.h> // For definition of ENABLE_OGG
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <string.h>
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n-lib.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+#include <signal.h>
+#ifdef ENABLE_MP3
+# include <id3tag.h>
+#endif
+#if defined ENABLE_MP3 && defined ENABLE_ID3LIB
+# include <id3.h>
+#endif
+#include <sys/types.h>
+#include <utime.h>
+
+#include "easytag.h"
+#include "browser.h"
+#include "log.h"
+#include "misc.h"
+#include "bar.h"
+#include "prefs.h"
+#include "setting.h"
+#include "scan.h"
+#include "mpeg_header.h"
+#include "id3_tag.h"
+#include "ogg_tag.h"
+#include "msgbox.h"
+#include "et_core.h"
+#include "cddb.h"
+#include "picture.h"
+#include "charset.h"
+
+#ifdef WIN32
+# include "win32/win32dep.h"
+#endif
+
+#include "../pixmaps/EasyTAG.xpm"
+
+
+/****************
+ * Declarations *
+ ****************/
+guint idle_handler_id;
+guint progressbar_index; /* An integer to set the value of progress bar into the recurse fonction */
+
+GtkWidget *QuitRecursionWindow = NULL;
+
+/* Used to force to hide the msgbox when saving tag */
+gboolean SF_HideMsgbox_Write_Tag;
+/* To remember which button was pressed when saving tag */
+gint SF_ButtonPressed_Write_Tag;
+/* Used to force to hide the msgbox when renaming file */
+gboolean SF_HideMsgbox_Rename_File;
+/* To remember which button was pressed when renaming file */
+gint SF_ButtonPressed_Rename_File;
+/* Used to force to hide the msgbox when deleting file */
+gboolean SF_HideMsgbox_Delete_File;
+/* To remember which button was pressed when deleting file */
+gint SF_ButtonPressed_Delete_File;
+
+
+
+/**************
+ * Prototypes *
+ **************/
+void Handle_Crash (gint signal_id);
+gchar *signal_to_string (gint signal);
+
+GtkWidget *Create_Browser_Area (void);
+GtkWidget *Create_File_Area (void);
+GtkWidget *Create_Tag_Area (void);
+
+void Menu_Mini_Button_Clicked (GtkEntry *entry);
+void Mini_Button_Clicked (GObject *object);
+void Disable_Command_Buttons (void);
+void Clear_Tag_Entry_Fields (void);
+void Clear_File_Entry_Field (void);
+void Clear_Header_Fields (void);
+
+gint Make_Dir (const gchar *dirname_old, const gchar *dirname_new);
+gint Remove_Dir (const gchar *dirname_old, const gchar *dirname_new);
+void Write_File_Tag (ET_File *ETFile);
+void Rename_File (ET_File *ETFile);
+gint Save_File (ET_File *ETFile, gboolean multiple_files, gboolean force_saving_files);
+gint Delete_File (ET_File *ETFile, gboolean multiple_files);
+gint Save_All_Files_With_Answer (gboolean force_saving_files);
+gint Save_Selected_Files_With_Answer (gboolean force_saving_files);
+gint Save_List_Of_Files (GList *etfilelist, gboolean force_saving_files);
+gint Delete_Selected_Files_With_Answer (void);
+gint Copy_File (gchar const *fileold, gchar const *filenew);
+
+void Display_Usage (void);
+
+void Init_Load_Default_Dir (void);
+void EasyTAG_Exit (void);
+void Quit_MainWindow_Ok_Button (void);
+
+GList *Read_Directory_Recursively (GList *file_list, gchar *path, gint recurse);
+void Open_Quit_Recursion_Function_Window (void);
+void Destroy_Quit_Recursion_Function_Window (void);
+void Quit_Recursion_Function_Button_Pressed (void);
+void Quit_Recursion_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+
+
+
+/********
+ * Main *
+ ********/
+#ifdef WIN32
+int easytag_main (struct HINSTANCE__ *hInstance, int argc, char *argv[]) /* entry point of DLL */
+#else
+int main (int argc, char *argv[])
+#endif
+{
+ GtkWidget *MainVBox;
+ GtkWidget *HBox, *VBox;
+ GdkPixmap *pixmap;
+ GdkBitmap *mask;
+ gboolean created_settings;
+ struct stat statbuf;
+
+
+#ifdef WIN32
+ ET_Win32_Init(hInstance);
+#else
+ /* Signal handling to display a message(SIGSEGV, ...) */
+ signal(SIGBUS,Handle_Crash);
+ signal(SIGFPE,Handle_Crash);
+ signal(SIGSEGV,Handle_Crash);
+ // Must handle this signal to avoid zombie of applications executed (ex: xmms)
+ signal(SIGCHLD,SIG_IGN); // Fix me! : can't run nautilus 1.0.6 with "Browse Directory With"
+#endif
+
+#ifdef ENABLE_NLS
+ bindtextdomain(GETTEXT_PACKAGE, LOCALE);
+ bind_textdomain_codeset(PACKAGE, "UTF-8");
+ textdomain(GETTEXT_PACKAGE);
+ /* Initialize i18n support */
+ //gtk_set_locale();
+#endif
+ Charset_Insert_Locales_Init();
+
+ /* Initialize GTK */
+ gtk_init(&argc, &argv);
+
+ /* Get home variable */
+ HOME_VARIABLE = (gchar *)g_getenv("HOME");
+ INIT_DIRECTORY = NULL;
+
+ /* Starting messages */
+ Log_Print(_("Starting EasyTAG %s (PId: %d) ..."),VERSION,getpid());
+#ifdef ENABLE_MP3
+ Log_Print(_("Currently using libid3tag version %s ..."), ID3_VERSION);
+#endif
+#if defined ENABLE_MP3 && defined ENABLE_ID3LIB
+ Log_Print(_("Currently using id3lib version %d.%d.%d ..."),ID3LIB_MAJOR_VERSION,
+ ID3LIB_MINOR_VERSION,
+ ID3LIB_PATCH_VERSION);
+#endif
+
+#ifdef WIN32
+ if (g_getenv("EASYTAGLANG"))
+ Log_Print(_("Variable EASYTAGLANG defined. Setting locale : '%s'"),g_getenv("EASYTAGLANG"));
+ else
+ Log_Print(_("Setting locale : '%s'"),g_getenv("LANG"));
+#endif
+
+ if (get_locale())
+ Log_Print(_("Currently using locale '%s' (and eventually '%s')..."),
+ get_locale(),get_encoding_from_locale(get_locale()));
+
+
+ /* Create all config files */
+ created_settings = Setting_Create_Files();
+ /* Load Config */
+ Init_Config_Variables();
+ Read_Config();
+ /* Display_Config(); // <- for debugging */
+
+ /* Check given arguments */
+ if (argc>1)
+ {
+ if ( (strcmp(argv[1],"--version")==0) || (strcmp(argv[1],"-v")==0) ) // Query version
+ {
+ g_print(_("%s %s by %s (compiled %s, %s)\n"),APPNAME,VERSION,AUTHOR,__TIME__,__DATE__);
+ g_print(_("E-mail: %s"),EMAIL"\n");
+ g_print(_("Web Page: %s"),WEBPAGE"\n");
+ exit (0);
+ }else if ( (strcmp(argv[1],"--help")==0) || (strcmp(argv[1],"-h")==0) ) // Query help
+ {
+ Display_Usage();
+ }else
+ {
+ gchar *path2check = NULL, *path2check_tmp = NULL;
+ gint resultstat;
+ gchar **pathsplit;
+ gint ps_index = 0;
+
+ // Check if relative or absolute path
+ if (g_path_is_absolute(argv[1])) // Passed an absolute path
+ {
+ path2check = g_strdup(argv[1]);
+ }else // Passed a relative path
+ {
+ gchar *curdir = g_get_current_dir();
+ path2check = g_strconcat(g_get_current_dir(),G_DIR_SEPARATOR_S,argv[1],NULL);
+ g_free(curdir);
+ }
+
+#ifdef WIN32
+ ET_Win32_Path_Replace_Slashes(path2check);
+#endif
+ // Check if contains hidden directories
+ pathsplit = g_strsplit(path2check,G_DIR_SEPARATOR_S,0);
+ g_free(path2check);
+ path2check = NULL;
+
+ // Browse the list to build again the path
+ //FIX ME : Should manage directory ".." in path
+ while (pathsplit[ps_index])
+ {
+ // Activate hidden directories in browser if path contains a dir like ".hidden_dir"
+ if ( (g_ascii_strcasecmp (pathsplit[ps_index],"..") != 0)
+ && (g_ascii_strncasecmp(pathsplit[ps_index],".", 1) == 0)
+ && (strlen(pathsplit[ps_index]) > 1) )
+ BROWSE_HIDDEN_DIR = 1; // If user saves the config for this session, this value will be saved to 1
+
+ if (pathsplit[ps_index]
+ && g_ascii_strcasecmp(pathsplit[ps_index],".") != 0
+ && g_ascii_strcasecmp(pathsplit[ps_index],"") != 0)
+ {
+ if (path2check)
+ {
+ path2check_tmp = g_strconcat(path2check,G_DIR_SEPARATOR_S,pathsplit[ps_index],NULL);
+ }else
+ {
+#ifdef WIN32
+ // Build a path starting with the drive letter
+ path2check_tmp = g_strdup(pathsplit[ps_index]);
+#else
+ path2check_tmp = g_strconcat(G_DIR_SEPARATOR_S,pathsplit[ps_index],NULL);
+#endif
+ }
+
+ path2check = g_strdup(path2check_tmp);
+ g_free(path2check_tmp);
+ }
+ ps_index++;
+ }
+
+ // Check if file or directory
+ resultstat = stat(path2check,&statbuf);
+ if (resultstat==0 && S_ISDIR(statbuf.st_mode)) // Directory
+ {
+ INIT_DIRECTORY = g_strdup(path2check);
+ }else if (resultstat==0 && S_ISREG(statbuf.st_mode)) // File
+ {
+ // When passing a file, we load only the directory
+ INIT_DIRECTORY = g_path_get_dirname(path2check);
+ }else
+ {
+ g_print(_("Unknown parameter or path '%s'\n"),argv[1]);
+ Display_Usage();
+ }
+ g_free(path2check);
+ }
+ }
+
+
+ /* Initialization */
+ ET_Core_Create();
+ Main_Stop_Button_Pressed = 0;
+ Init_Custom_Icons();
+ Init_Mouse_Cursor();
+ Init_OptionsWindow();
+ Init_ScannerWindow();
+ Init_CddbWindow();
+ BrowserEntryModel = NULL;
+ TrackEntryComboModel = NULL;
+ GenreComboModel = NULL;
+
+ /* The main window */
+ MainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(MainWindow),APPNAME" "VERSION);
+ // This part is needed to set correctly the position of handle panes
+ gtk_window_set_default_size(GTK_WINDOW(MainWindow),MAIN_WINDOW_WIDTH,MAIN_WINDOW_HEIGHT);
+
+ g_signal_connect(G_OBJECT(MainWindow),"delete_event",G_CALLBACK(Quit_MainWindow),NULL);
+ g_signal_connect(G_OBJECT(MainWindow),"destroy",G_CALLBACK(Quit_MainWindow),NULL);
+
+ /* Minimised window icon */
+ gtk_widget_realize(MainWindow);
+ pixmap = gdk_pixmap_create_from_xpm_d(MainWindow->window,&mask,NULL,EasyTAG_xpm);
+ gdk_window_set_icon(MainWindow->window,(GdkWindow *)NULL,pixmap,mask);
+
+
+ /* MainVBox for Menu bar + Tool bar + "Browser Area & FileArea & TagArea" + Log Area + "Status bar & Progress bar" */
+ MainVBox = gtk_vbox_new(FALSE,0);
+ gtk_container_add (GTK_CONTAINER(MainWindow),MainVBox);
+ gtk_widget_show(MainVBox);
+
+ /* Menu bar and tool bar */
+ Create_UI(&MenuArea, &ToolArea);
+ gtk_box_pack_start(GTK_BOX(MainVBox),MenuArea,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(MainVBox),ToolArea,FALSE,FALSE,0);
+
+
+ /* The two panes: BrowserArea on the left, FileArea+TagArea on the right */
+ MainWindowHPaned = gtk_hpaned_new();
+ //gtk_box_pack_start(GTK_BOX(MainVBox),MainWindowHPaned,TRUE,TRUE,0);
+ gtk_paned_set_position(GTK_PANED(MainWindowHPaned),PANE_HANDLE_POSITION1);
+ gtk_widget_show(MainWindowHPaned);
+
+ /* Browser (Tree + File list + Entry) */
+ BrowseArea = Create_Browser_Area();
+ gtk_paned_pack1(GTK_PANED(MainWindowHPaned),BrowseArea,TRUE,TRUE);
+
+ /* Vertical box for FileArea + TagArea */
+ VBox = gtk_vbox_new(FALSE,0);
+ gtk_paned_pack2(GTK_PANED(MainWindowHPaned),VBox,FALSE,FALSE);
+ gtk_widget_show(VBox);
+
+ /* File */
+ FileArea = Create_File_Area();
+ gtk_box_pack_start(GTK_BOX(VBox),FileArea,FALSE,FALSE,0);
+
+ /* Tag */
+ TagArea = Create_Tag_Area();
+ gtk_box_pack_start(GTK_BOX(VBox),TagArea,FALSE,FALSE,0);
+
+ /* Vertical pane for Browser Area + FileArea + TagArea */
+ MainWindowVPaned = gtk_vpaned_new();
+ gtk_box_pack_start(GTK_BOX(MainVBox),MainWindowVPaned,TRUE,TRUE,0);
+ gtk_paned_pack1(GTK_PANED(MainWindowVPaned),MainWindowHPaned,FALSE,FALSE);
+ gtk_paned_set_position(GTK_PANED(MainWindowVPaned),PANE_HANDLE_POSITION4);
+ gtk_widget_show(MainWindowVPaned);
+
+
+ /* Log */
+ LogArea = Create_Log_Area();
+ gtk_paned_pack2(GTK_PANED(MainWindowVPaned),LogArea,TRUE,TRUE);
+
+ /* Horizontal box for Status bar + Progress bar */
+ HBox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(MainVBox),HBox,FALSE,FALSE,0);
+ gtk_widget_show(HBox);
+
+ /* Status bar */
+ StatusArea = Create_Status_Bar();
+ gtk_box_pack_start(GTK_BOX(HBox),StatusArea,TRUE,TRUE,0);
+
+ /* Progress bar */
+ ProgressArea = Create_Progress_Bar();
+ gtk_box_pack_end(GTK_BOX(HBox),ProgressArea,FALSE,FALSE,0);
+
+ gtk_widget_show(MainWindow);
+
+ if (SET_MAIN_WINDOW_POSITION)
+ gdk_window_move(MainWindow->window, MAIN_WINDOW_X, MAIN_WINDOW_Y);
+
+ /* Load the default dir when the UI is created and displayed
+ * to the screen and open also the scanner window */
+ idle_handler_id = g_idle_add((GtkFunction)Init_Load_Default_Dir,NULL);
+
+ /* Enter the event loop */
+ gtk_main ();
+ return 0;
+}
+
+
+GtkWidget *Create_Browser_Area (void)
+{
+ GtkWidget *Frame;
+ GtkWidget *Tree;
+
+ Frame = gtk_frame_new(_("Browser"));
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 2);
+
+ Tree = Create_Browser_Items(MainWindow);
+ gtk_container_add(GTK_CONTAINER(Frame),Tree);
+
+ /* Don't load init dir here because Tag area hasn't been yet created!.
+ * It will be load at the end of the main function */
+ //Browser_Tree_Select_Dir(DEFAULT_PATH_TO_MP3);
+
+ gtk_widget_show(Frame);
+ return Frame;
+}
+
+
+GtkWidget *Create_File_Area (void)
+{
+ GtkWidget *VBox, *HBox;
+ GtkWidget *Separator;
+ GtkTooltips *Tips;
+
+
+ FileFrame = gtk_frame_new(_("File"));
+ gtk_container_set_border_width(GTK_CONTAINER(FileFrame),2);
+
+ VBox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(FileFrame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox),2);
+
+ /* Tips */
+ Tips = gtk_tooltips_new();
+
+ /* HBox for FileEntry and IconBox */
+ HBox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(VBox),HBox,TRUE,TRUE,0);
+
+ /* File index (position in list + list length) */
+ FileIndex = gtk_label_new("0/0:");
+ gtk_box_pack_start(GTK_BOX(HBox),FileIndex,FALSE,FALSE,0);
+
+ /* File name */
+ FileEntry = gtk_entry_new();
+ gtk_editable_set_editable(GTK_EDITABLE(FileEntry), TRUE);
+ gtk_box_pack_start(GTK_BOX(HBox),FileEntry,TRUE,TRUE,2);
+
+ /* Access status icon */
+ ReadOnlyStatusIconBox = Create_Pixmap_Icon_With_Event_Box("easytag-read-only");
+ gtk_box_pack_start(GTK_BOX(HBox),ReadOnlyStatusIconBox,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,ReadOnlyStatusIconBox,_("Read Only File"),NULL);
+ BrokenStatusIconBox = Create_Pixmap_Icon_With_Event_Box(GTK_STOCK_MISSING_IMAGE);
+ gtk_box_pack_start(GTK_BOX(HBox),BrokenStatusIconBox,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,BrokenStatusIconBox,_("File Link Broken"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(FileEntry));
+
+
+ /*
+ * File Infos
+ */
+ HeaderInfosTable = gtk_table_new(3,5,FALSE);
+ gtk_container_add(GTK_CONTAINER(VBox),HeaderInfosTable);
+ gtk_container_set_border_width(GTK_CONTAINER(HeaderInfosTable),2);
+ gtk_table_set_row_spacings(GTK_TABLE(HeaderInfosTable),1);
+ gtk_table_set_col_spacings(GTK_TABLE(HeaderInfosTable),2);
+
+ VersionLabel = gtk_label_new(_("MPEG"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),VersionLabel,0,1,0,1);
+ VersionValueLabel = gtk_label_new(_("?, Layer ?"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),VersionValueLabel,1,2,0,1);
+ gtk_misc_set_alignment(GTK_MISC(VersionLabel),1,0.5);
+ gtk_misc_set_alignment(GTK_MISC(VersionValueLabel),0,0.5);
+
+ BitrateLabel = gtk_label_new(_("Bitrate:"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),BitrateLabel,0,1,1,2);
+ BitrateValueLabel = gtk_label_new(_("? kb/s"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),BitrateValueLabel,1,2,1,2);
+ gtk_misc_set_alignment(GTK_MISC(BitrateLabel),1,0.5);
+ gtk_misc_set_alignment(GTK_MISC(BitrateValueLabel),0,0.5);
+
+ SampleRateLabel = gtk_label_new(_("Freq:"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),SampleRateLabel,0,1,2,3);
+ SampleRateValueLabel = gtk_label_new(_("? Hz"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),SampleRateValueLabel,1,2,2,3);
+ gtk_misc_set_alignment(GTK_MISC(SampleRateLabel),1,0.5);
+ gtk_misc_set_alignment(GTK_MISC(SampleRateValueLabel),0,0.5);
+
+ Separator = gtk_vseparator_new();
+ gtk_table_attach(GTK_TABLE(HeaderInfosTable),Separator,2,3,0,4,GTK_FILL,GTK_FILL,0,0);
+
+ ModeLabel = gtk_label_new(_("Mode:"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),ModeLabel,3,4,0,1);
+ ModeValueLabel = gtk_label_new(_("?"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),ModeValueLabel,4,5,0,1);
+ gtk_misc_set_alignment(GTK_MISC(ModeLabel),1,0.5);
+ gtk_misc_set_alignment(GTK_MISC(ModeValueLabel),0,0.5);
+
+ SizeLabel = gtk_label_new(_("Size:"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),SizeLabel,3,4,1,2);
+ SizeValueLabel = gtk_label_new(_("? kb"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),SizeValueLabel,4,5,1,2);
+ gtk_misc_set_alignment(GTK_MISC(SizeLabel),1,0.5);
+ gtk_misc_set_alignment(GTK_MISC(SizeValueLabel),0,0.5);
+
+ DurationLabel = gtk_label_new(_("Time:"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),DurationLabel,3,4,2,3);
+ DurationValueLabel = gtk_label_new(_("?"));
+ gtk_table_attach_defaults(GTK_TABLE(HeaderInfosTable),DurationValueLabel,4,5,2,3);
+ gtk_misc_set_alignment(GTK_MISC(DurationLabel),1,0.5);
+ gtk_misc_set_alignment(GTK_MISC(DurationValueLabel),0,0.5);
+
+ gtk_widget_show(FileFrame);
+ gtk_widget_show(VBox);
+ gtk_widget_show(HBox);
+ gtk_widget_show(FileIndex);
+ gtk_widget_show(FileEntry);
+ if (SHOW_HEADER_INFO)
+ gtk_widget_show_all(HeaderInfosTable);
+ return FileFrame;
+}
+
+#include "../pixmaps/sequence_track.xpm"
+GtkWidget *Create_Tag_Area (void)
+{
+ GtkWidget *Separator;
+ GtkWidget *Frame;
+ GtkWidget *Table;
+ GtkWidget *Label;
+ GtkWidget *Icon;
+ GtkWidget *VBox;
+ GtkWidget *hbox;
+ GList *focusable_widgets_list = NULL;
+ //GtkWidget *ScrollWindow;
+ //GtkTextBuffer *TextBuffer;
+ GtkEntryCompletion *completion;
+ GtkTooltips *Tips;
+ gint MButtonSize = 13;
+ gint TablePadding = 2;
+
+ // For Picture
+ static const GtkTargetEntry drops[] = { { "text/uri-list", 0, TARGET_URI_LIST } };
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
+
+
+ /* Tips */
+ Tips = gtk_tooltips_new();
+
+ /* Main Frame */
+ TagFrame = gtk_frame_new(_("Tag"));
+ gtk_container_set_border_width(GTK_CONTAINER(TagFrame),2);
+
+ /* Box for the notebook (only for setting a border) */
+ VBox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(TagFrame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox),2);
+
+ /*
+ * Note book
+ */
+ TagNoteBook = gtk_notebook_new();
+ gtk_notebook_popup_enable(GTK_NOTEBOOK(TagNoteBook));
+ //gtk_container_add(GTK_CONTAINER(TagFrame),TagNoteBook);
+ gtk_box_pack_start(GTK_BOX(VBox),TagNoteBook,TRUE,TRUE,0);
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK(TagNoteBook),GTK_POS_TOP);
+ gtk_notebook_set_show_border(GTK_NOTEBOOK(TagNoteBook),FALSE);
+ gtk_notebook_popup_enable(GTK_NOTEBOOK(TagNoteBook));
+
+ /*
+ * 1 - Page for common tag fields
+ */
+ Label = gtk_label_new(_("Common"));
+ Frame = gtk_frame_new(NULL);
+ gtk_notebook_append_page(GTK_NOTEBOOK(TagNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 0);
+ gtk_frame_set_shadow_type(GTK_FRAME(Frame),GTK_SHADOW_NONE); // Hide the Frame
+
+
+ Table = gtk_table_new(11,11,FALSE);
+ gtk_container_add(GTK_CONTAINER(Frame),Table);
+ gtk_container_set_border_width(GTK_CONTAINER(Table),2);
+
+ /* Title */
+ TitleLabel = gtk_label_new(_("Title:"));
+ gtk_table_attach(GTK_TABLE(Table),TitleLabel,0,1,0,1,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(TitleLabel),1,0.5);
+
+ TitleEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),TitleEntry,1,10,0,1,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+ gtk_widget_set_size_request(TitleEntry, 150, -1);
+
+ TitleMButton = gtk_button_new();
+ gtk_widget_set_size_request(TitleMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),TitleMButton,10,11,0,1,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(TitleMButton),"clicked", G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,TitleMButton,_("Tag selected files with this title"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(TitleEntry));
+ g_object_set_data(G_OBJECT(TitleEntry),"MButtonName",TitleMButton);
+
+
+ /* Artist */
+ ArtistLabel = gtk_label_new(_("Artist:"));
+ gtk_table_attach(GTK_TABLE(Table),ArtistLabel,0,1,1,2,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(ArtistLabel),1,0.5);
+
+ ArtistEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),ArtistEntry,1,10,1,2,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ ArtistMButton = gtk_button_new();
+ gtk_widget_set_size_request(ArtistMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),ArtistMButton,10,11,1,2,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(ArtistMButton),"clicked", G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,ArtistMButton,_("Tag selected files with this artist"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(ArtistEntry));
+ g_object_set_data(G_OBJECT(ArtistEntry),"MButtonName",ArtistMButton);
+
+ /* Album */
+ AlbumLabel = gtk_label_new(_("Album:"));
+ gtk_table_attach(GTK_TABLE(Table),AlbumLabel,0,1,2,3,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(AlbumLabel),1,0.5);
+
+ AlbumEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),AlbumEntry,1,7,2,3,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ AlbumMButton = gtk_button_new();
+ //gtk_widget_set_size_request(AlbumMButton, 10, 10);
+ gtk_widget_set_size_request(AlbumMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),AlbumMButton,7,8,2,3,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(AlbumMButton),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,AlbumMButton,_("Tag selected files with this album name"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(AlbumEntry));
+ g_object_set_data(G_OBJECT(AlbumEntry),"MButtonName",AlbumMButton);
+
+ /* Disc Number */
+ DiscNumberLabel = gtk_label_new(_("CD:"));
+ gtk_table_attach(GTK_TABLE(Table),DiscNumberLabel,8,9,2,3,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(DiscNumberLabel),1,0.5);
+
+ DiscNumberEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),DiscNumberEntry,9,10,2,3,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+ gtk_widget_set_size_request(DiscNumberEntry,30,-1);
+ // FIX ME should allow to type only something like : 1/3
+ //g_signal_connect(G_OBJECT(GTK_ENTRY(DiscNumberEntry)),"insert_text",G_CALLBACK(Insert_Only_Digit),NULL);
+
+ DiscNumberMButton = gtk_button_new();
+ //gtk_widget_set_size_request(DiscNumberMButton, 10, 10);
+ gtk_widget_set_size_request(DiscNumberMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),DiscNumberMButton,10,11,2,3,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(DiscNumberMButton),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,DiscNumberMButton,_("Tag selected files with this disc number"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(DiscNumberEntry));
+ g_object_set_data(G_OBJECT(DiscNumberEntry),"MButtonName",DiscNumberMButton);
+
+ /* Year */
+ YearLabel = gtk_label_new(_("Year:"));
+ gtk_table_attach(GTK_TABLE(Table),YearLabel,0,1,3,4,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(YearLabel),1,0.5);
+
+ YearEntry = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(YearEntry), 4);
+ gtk_table_attach(GTK_TABLE(Table),YearEntry,1,2,3,4,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+ gtk_widget_set_size_request(YearEntry,37,-1);
+ g_signal_connect(G_OBJECT(YearEntry),"insert_text",G_CALLBACK(Insert_Only_Digit),NULL);
+ g_signal_connect(G_OBJECT(YearEntry),"activate",G_CALLBACK(Parse_Date),NULL);
+ g_signal_connect(G_OBJECT(YearEntry),"focus-out-event",G_CALLBACK(Parse_Date),NULL);
+
+ YearMButton = gtk_button_new();
+ gtk_widget_set_size_request(YearMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),YearMButton,2,3,3,4,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(YearMButton),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,YearMButton,_("Tag selected files with this year"),NULL);
+
+ /* Small vertical separator */
+ Separator = gtk_vseparator_new();
+ gtk_table_attach(GTK_TABLE(Table),Separator,3,4,3,4,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+
+
+ /* Track and Track total */
+ TrackMButtonSequence = gtk_button_new();
+ gtk_widget_set_size_request(TrackMButtonSequence,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),TrackMButtonSequence,4,5,3,4,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(TrackMButtonSequence),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,TrackMButtonSequence,_("Number selected tracks sequentially. "
+ "Starts at 01 in each subdirectory."), NULL);
+ // Pixmap into TrackMButtonSequence button
+ //Icon = gtk_image_new_from_stock("easytag-sequence-track", GTK_ICON_SIZE_BUTTON); // FIX ME : it doesn't display the good size of the '#'
+ Icon = Create_Xpm_Image((const char **)sequence_track_xpm);
+ gtk_container_add(GTK_CONTAINER(TrackMButtonSequence),Icon);
+ GTK_WIDGET_UNSET_FLAGS(TrackMButtonSequence,GTK_CAN_DEFAULT); // To have enought space to display the icon
+ GTK_WIDGET_UNSET_FLAGS(TrackMButtonSequence,GTK_CAN_FOCUS); // To have enought space to display the icon
+
+ TrackLabel = gtk_label_new(_("Track #:"));
+ gtk_table_attach(GTK_TABLE(Table),TrackLabel,5,6,3,4,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(TrackLabel),1,0.5);
+
+ if (TrackEntryComboModel != NULL)
+ gtk_list_store_clear(TrackEntryComboModel);
+ else
+ TrackEntryComboModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+
+ TrackEntryCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(TrackEntryComboModel), MISC_COMBO_TEXT);
+ gtk_table_attach(GTK_TABLE(Table),TrackEntryCombo,6,7,3,4,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+ gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(TrackEntryCombo),3); // Three columns to display track numbers list
+
+ gtk_widget_set_size_request(TrackEntryCombo,50,-1);
+ g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child)),"insert_text",
+ G_CALLBACK(Insert_Only_Digit),NULL);
+
+ Label = gtk_label_new("/");
+ gtk_table_attach(GTK_TABLE(Table),Label,7,8,3,4,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(Label),0.5,0.5);
+
+ TrackMButtonNbrFiles = gtk_button_new();
+ gtk_widget_set_size_request(TrackMButtonNbrFiles,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),TrackMButtonNbrFiles,8,9,3,4,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(TrackMButtonNbrFiles),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,TrackMButtonNbrFiles,_("Set the number of files, in the same directory of the displayed file, to the selected tracks."), NULL);
+ // Pixmap into TrackMButtonNbrFiles button
+ //Icon = gtk_image_new_from_stock("easytag-sequence-track", GTK_ICON_SIZE_BUTTON);
+ Icon = Create_Xpm_Image((const char **)sequence_track_xpm);
+ gtk_container_add(GTK_CONTAINER(TrackMButtonNbrFiles),Icon);
+ GTK_WIDGET_UNSET_FLAGS(TrackMButtonNbrFiles,GTK_CAN_DEFAULT); // To have enought space to display the icon
+ GTK_WIDGET_UNSET_FLAGS(TrackMButtonNbrFiles,GTK_CAN_FOCUS); // To have enought space to display the icon
+
+ TrackTotalEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),TrackTotalEntry,9,10,3,4,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+ gtk_widget_set_size_request(TrackTotalEntry,30,-1);
+ g_signal_connect(G_OBJECT(GTK_ENTRY(TrackTotalEntry)),"insert_text",
+ G_CALLBACK(Insert_Only_Digit),NULL);
+
+ TrackMButton = gtk_button_new();
+ gtk_widget_set_size_request(TrackMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),TrackMButton,10,11,3,4,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(TrackMButton),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,TrackMButton,_("Tag selected files with this number of tracks"),NULL);
+
+ g_object_set_data(G_OBJECT(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child)),"MButtonName",TrackMButton);
+ g_object_set_data(G_OBJECT(TrackTotalEntry),"MButtonName",TrackMButton);
+
+ /* Genre */
+ GenreLabel = gtk_label_new(_("Genre:"));
+ gtk_table_attach(GTK_TABLE(Table),GenreLabel,0,1,4,5,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(GenreLabel),1,0.5);
+
+ if (GenreComboModel != NULL)
+ gtk_list_store_clear(GenreComboModel);
+ else
+ GenreComboModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ GenreCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(GenreComboModel), MISC_COMBO_TEXT);
+ completion = gtk_entry_completion_new();
+ gtk_entry_set_completion(GTK_ENTRY(GTK_BIN(GenreCombo)->child), completion);
+ g_object_unref(completion);
+ gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(GenreComboModel));
+ gtk_entry_completion_set_text_column(completion, 0);
+ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(GenreComboModel), MISC_COMBO_TEXT, Combo_Alphabetic_Sort, NULL, NULL);
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(GenreComboModel), MISC_COMBO_TEXT, GTK_SORT_ASCENDING);
+ gtk_table_attach(GTK_TABLE(Table),GenreCombo,1,10,4,5,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+ Load_Genres_List_To_UI();
+ gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(GenreCombo),2); // Two columns to display genres list
+
+ GenreMButton = gtk_button_new();
+ gtk_widget_set_size_request(GenreMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),GenreMButton,10,11,4,5,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(GenreMButton),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,GenreMButton,_("Tag selected files with this genre"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(GTK_BIN(GenreCombo)->child));
+ g_object_set_data(G_OBJECT(GTK_BIN(GenreCombo)->child),"MButtonName",GenreMButton);
+
+ /* Comment */
+ CommentLabel = gtk_label_new(_("Comment:"));
+ gtk_table_attach(GTK_TABLE(Table),CommentLabel,0,1,5,6,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(CommentLabel),1,0.5);
+
+ CommentEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),CommentEntry,1,10,5,6,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ // Use of a text view instead of an entry...
+ //ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ //gtk_table_attach_defaults(GTK_TABLE(Table),ScrollWindow,1,10,5,6);
+ //gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow), GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ //gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(ScrollWindow), GTK_SHADOW_IN);
+ //gtk_widget_set_size_request(ScrollWindow,-1,52); // Display ~3 lines...
+ //TextBuffer = gtk_text_buffer_new(NULL);
+ //CommentView = gtk_text_view_new_with_buffer(TextBuffer);
+ //gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(CommentView), GTK_WRAP_WORD); // To not display the horizontal scrollbar
+ //gtk_container_add(GTK_CONTAINER(ScrollWindow),CommentView);
+ //Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+
+ CommentMButton = gtk_button_new();
+ gtk_widget_set_size_request(CommentMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),CommentMButton,10,11,5,6,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(CommentMButton),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,CommentMButton,_("Tag selected files with this comment"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentEntry));
+ g_object_set_data(G_OBJECT(CommentEntry),"MButtonName",CommentMButton);
+ //Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CommentView));
+ //g_object_set_data(G_OBJECT(CommentView),"MButtonName",CommentMButton);
+
+
+ /* Composer (name of the composers) */
+ ComposerLabel = gtk_label_new(_("Composer:"));
+ gtk_table_attach(GTK_TABLE(Table),ComposerLabel,0,1,6,7,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(ComposerLabel),1,0.5);
+
+ ComposerEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),ComposerEntry,1,10,6,7,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ ComposerMButton = gtk_button_new();
+ gtk_widget_set_size_request(ComposerMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),ComposerMButton,10,11,6,7,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(ComposerMButton),"clicked", G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,ComposerMButton,_("Tag selected files with this composer"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(ComposerEntry));
+ g_object_set_data(G_OBJECT(ComposerEntry),"MButtonName",ComposerMButton);
+
+
+ /* Original Artist / Performer */
+ OrigArtistLabel = gtk_label_new(_("Orig. Artist:"));
+ gtk_table_attach(GTK_TABLE(Table),OrigArtistLabel,0,1,7,8,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(OrigArtistLabel),1,0.5);
+
+ OrigArtistEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),OrigArtistEntry,1,10,7,8,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ OrigArtistMButton = gtk_button_new();
+ gtk_widget_set_size_request(OrigArtistMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),OrigArtistMButton,10,11,7,8,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(OrigArtistMButton),"clicked", G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,OrigArtistMButton,_("Tag selected files with this original artist"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(OrigArtistEntry));
+ g_object_set_data(G_OBJECT(OrigArtistEntry),"MButtonName",OrigArtistMButton);
+
+
+ /* Copyright */
+ CopyrightLabel = gtk_label_new(_("Copyright:"));
+ gtk_table_attach(GTK_TABLE(Table),CopyrightLabel,0,1,8,9,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(CopyrightLabel),1,0.5);
+
+ CopyrightEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),CopyrightEntry,1,10,8,9,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ CopyrightMButton = gtk_button_new();
+ gtk_widget_set_size_request(CopyrightMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),CopyrightMButton,10,11,8,9,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(CopyrightMButton),"clicked", G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,CopyrightMButton,_("Tag selected files with this copyright"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(CopyrightEntry));
+ g_object_set_data(G_OBJECT(CopyrightEntry),"MButtonName",CopyrightMButton);
+
+
+ /* URL */
+ URLLabel = gtk_label_new(_("URL:"));
+ gtk_table_attach(GTK_TABLE(Table),URLLabel,0,1,9,10,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(URLLabel),1,0.5);
+
+ URLEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),URLEntry,1,10,9,10,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ URLMButton = gtk_button_new();
+ gtk_widget_set_size_request(URLMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),URLMButton,10,11,9,10,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(URLMButton),"clicked", G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,URLMButton,_("Tag selected files with this URL"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(URLEntry));
+ g_object_set_data(G_OBJECT(URLEntry),"MButtonName",URLMButton);
+
+
+ /* Encoded by */
+ EncodedByLabel = gtk_label_new(_("Encoded by:"));
+ gtk_table_attach(GTK_TABLE(Table),EncodedByLabel,0,1,10,11,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(EncodedByLabel),1,0.5);
+
+ EncodedByEntry = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),EncodedByEntry,1,10,10,11,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ EncodedByMButton = gtk_button_new();
+ gtk_widget_set_size_request(EncodedByMButton,MButtonSize,MButtonSize);
+ gtk_table_attach(GTK_TABLE(Table),EncodedByMButton,10,11,10,11,0,0,TablePadding,TablePadding);
+ g_signal_connect(G_OBJECT(EncodedByMButton),"clicked", G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,EncodedByMButton,_("Tag selected files with this encoder name"),NULL);
+
+ Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(EncodedByEntry));
+ g_object_set_data(G_OBJECT(EncodedByEntry),"MButtonName",EncodedByMButton);
+
+
+ // Managing of entries when pressing the Enter key
+ g_signal_connect_swapped(G_OBJECT(TitleEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(ArtistEntry));
+ g_signal_connect_swapped(G_OBJECT(ArtistEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(AlbumEntry));
+ g_signal_connect_swapped(G_OBJECT(AlbumEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(DiscNumberEntry));
+ g_signal_connect_swapped(G_OBJECT(DiscNumberEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(YearEntry));
+ g_signal_connect_swapped(G_OBJECT(YearEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child)));
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child)),"activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(TrackTotalEntry));
+ g_signal_connect_swapped(G_OBJECT(TrackTotalEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(GTK_BIN(GenreCombo)->child));
+ g_signal_connect_swapped(G_OBJECT(GTK_BIN(GenreCombo)->child),"activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(CommentEntry));
+ g_signal_connect_swapped(G_OBJECT(CommentEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(ComposerEntry));
+ g_signal_connect_swapped(G_OBJECT(ComposerEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(OrigArtistEntry));
+ g_signal_connect_swapped(G_OBJECT(OrigArtistEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(CopyrightEntry));
+ g_signal_connect_swapped(G_OBJECT(CopyrightEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(URLEntry));
+ g_signal_connect_swapped(G_OBJECT(URLEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(EncodedByEntry));
+ g_signal_connect_swapped(G_OBJECT(EncodedByEntry), "activate",G_CALLBACK(gtk_widget_grab_focus),G_OBJECT(TitleEntry));
+
+ // Set focus chain
+ focusable_widgets_list = g_list_append(focusable_widgets_list,TitleEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,TitleMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,ArtistEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,ArtistMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,AlbumEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,AlbumMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,DiscNumberEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,DiscNumberMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,YearEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,YearMButton);
+ //focusable_widgets_list = g_list_append(focusable_widgets_list,TrackMButtonSequence); // Doesn't work as focus disabled for this widget to have enought space to display icon
+ focusable_widgets_list = g_list_append(focusable_widgets_list,TrackEntryCombo);
+ //focusable_widgets_list = g_list_append(focusable_widgets_list,TrackMButtonNbrFiles);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,TrackTotalEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,TrackMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,GenreCombo);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,GenreMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,CommentEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,CommentMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,ComposerEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,ComposerMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,OrigArtistEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,OrigArtistMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,CopyrightEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,CopyrightMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,URLEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,URLMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,EncodedByEntry);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,EncodedByMButton);
+ focusable_widgets_list = g_list_append(focusable_widgets_list,TitleEntry); // To loop to the beginning
+ gtk_container_set_focus_chain(GTK_CONTAINER(Table),focusable_widgets_list);
+
+
+
+ /*
+ * 2 - Page for extra tag fields
+ */
+ Label = gtk_label_new(_("Pictures")); // As there is only the picture field... - also used in ET_Display_File_Tag_To_UI
+ Frame = gtk_frame_new(NULL);
+ gtk_notebook_append_page(GTK_NOTEBOOK(TagNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 0);
+ gtk_frame_set_shadow_type(GTK_FRAME(Frame),GTK_SHADOW_NONE); // Hide the Frame
+
+ Table = gtk_table_new(3,5,FALSE);
+ gtk_container_add(GTK_CONTAINER(Frame),Table);
+ gtk_container_set_border_width(GTK_CONTAINER(Table),2);
+
+ /* Picture */
+ PictureLabel = gtk_label_new(_("Pictures:"));
+ gtk_table_attach(GTK_TABLE(Table),PictureLabel,0,1,0,1,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+ gtk_misc_set_alignment(GTK_MISC(PictureLabel),1,0.5);
+
+ // Scroll window for PictureEntryView
+ PictureScrollWindow = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(PictureScrollWindow),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_table_attach(GTK_TABLE(Table), PictureScrollWindow, 1,4,0,1,
+ GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,TablePadding,TablePadding);
+
+ PictureEntryModel = gtk_list_store_new(PICTURE_COLUMN_COUNT,
+ GDK_TYPE_PIXBUF,
+ G_TYPE_STRING,
+ G_TYPE_POINTER);
+ PictureEntryView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(PictureEntryModel));
+ //gtk_tree_view_set_reorderable(GTK_TREE_VIEW(PictureEntryView),TRUE);
+ gtk_container_add(GTK_CONTAINER(PictureScrollWindow), PictureEntryView);
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(PictureEntryView), FALSE);
+ gtk_widget_set_size_request(PictureEntryView, -1, 200);
+ gtk_tooltips_set_tip(Tips,PictureEntryView,_("You can use drag and drop to add picture."),NULL);
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(PictureEntryView));
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
+
+ renderer = gtk_cell_renderer_pixbuf_new();
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "pixbuf", PICTURE_COLUMN_PIC,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(PictureEntryView), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "text", PICTURE_COLUMN_TEXT,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(PictureEntryView), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ // Activate Drag'n'Drop for the PictureEntryView (and PictureAddButton)
+ gtk_drag_dest_set(GTK_WIDGET(PictureEntryView),
+ GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
+ drops, sizeof(drops) / sizeof(GtkTargetEntry),
+ GDK_ACTION_COPY);
+ g_signal_connect(G_OBJECT(PictureEntryView),"drag_data_received", G_CALLBACK(Tag_Area_Picture_Drag_Data), 0);
+ g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(Picture_Selection_Changed_cb), NULL);
+ g_signal_connect(G_OBJECT(PictureEntryView), "button_press_event",G_CALLBACK(Picture_Entry_View_Button_Pressed),NULL);
+ g_signal_connect(G_OBJECT(PictureEntryView),"key_press_event", G_CALLBACK(Picture_Entry_View_Key_Pressed),NULL);
+
+ // The mini button for picture
+ PictureMButton = gtk_button_new();
+ gtk_table_attach(GTK_TABLE(Table),PictureMButton,4,5,0,1,0,0,TablePadding,TablePadding);
+ gtk_widget_set_usize(PictureMButton,MButtonSize,MButtonSize);
+ g_signal_connect(G_OBJECT(PictureMButton),"clicked",G_CALLBACK(Mini_Button_Clicked),NULL);
+ gtk_tooltips_set_tip(Tips,PictureMButton,_("Tag selected files with these pictures"),NULL);
+
+ // Picture action buttons
+ hbox = gtk_hbox_new(FALSE, 4);
+ gtk_table_attach(GTK_TABLE(Table),hbox,1,4,1,2,GTK_FILL,GTK_FILL,TablePadding,TablePadding);
+
+ PictureClearButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(PictureClearButton),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),PictureClearButton,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,PictureClearButton,_("Remove selected pictures, else all pictures."),NULL);
+
+ PictureAddButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(PictureAddButton),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),PictureAddButton,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,PictureAddButton,_("Add pictures to the tag (drag and drop is also available)."),NULL);
+
+ Label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ PictureSaveButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(PictureSaveButton),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),PictureSaveButton,FALSE,FALSE,0);
+ gtk_widget_set_sensitive(GTK_WIDGET(PictureSaveButton), FALSE);
+ gtk_tooltips_set_tip(Tips,PictureSaveButton,_("Save the selected pictures on the hard disk."),NULL);
+
+ PicturePropertiesButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(PicturePropertiesButton),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),PicturePropertiesButton,FALSE,FALSE,0);
+ gtk_widget_set_sensitive(GTK_WIDGET(PicturePropertiesButton), FALSE);
+ gtk_tooltips_set_tip(Tips,PicturePropertiesButton,_("Set properties of the selected pictures."),NULL);
+
+ g_signal_connect(G_OBJECT(PictureClearButton), "clicked", G_CALLBACK(Picture_Clear_Button_Clicked), NULL);
+ g_signal_connect(G_OBJECT(PictureAddButton), "clicked", G_CALLBACK(Picture_Add_Button_Clicked), NULL);
+ g_signal_connect(G_OBJECT(PictureSaveButton), "clicked", G_CALLBACK(Picture_Save_Button_Clicked), NULL);
+ g_signal_connect(G_OBJECT(PicturePropertiesButton), "clicked", G_CALLBACK(Picture_Properties_Button_Clicked), NULL);
+
+ // Activate Drag'n'Drop for the PictureAddButton (and PictureEntryView)
+ gtk_drag_dest_set(GTK_WIDGET(PictureAddButton),
+ GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
+ drops, sizeof(drops) / sizeof(GtkTargetEntry),
+ GDK_ACTION_COPY);
+ g_signal_connect(G_OBJECT(PictureAddButton),"drag_data_received", G_CALLBACK(Tag_Area_Picture_Drag_Data), 0);
+
+
+ //Attach_Popup_Menu_To_Tag_Entries(GTK_ENTRY(PictureEntryView));
+ gtk_object_set_data(GTK_OBJECT(PictureEntryView),"MButtonName",PictureMButton);
+
+ gtk_widget_show_all(TagFrame);
+ return TagFrame;
+}
+
+
+
+/*
+ * Actions when mini buttons are pressed: apply the field to all others files
+ */
+void Menu_Mini_Button_Clicked (GtkEntry *entry)
+{
+ if ( g_object_get_data(G_OBJECT(entry),"MButtonName") )
+ Mini_Button_Clicked((GObject *)g_object_get_data(G_OBJECT(entry),"MButtonName"));
+}
+void Mini_Button_Clicked (GObject *object)
+{
+ GList *etfilelist = NULL;
+ GList *selection_filelist = NULL;
+ gchar *string_to_set = NULL;
+ gchar *string_to_set1 = NULL;
+ gchar *msg = NULL;
+ ET_File *etfile;
+ File_Tag *FileTag;
+ GtkTreeSelection *selection;
+
+
+ if (!ETCore->ETFileDisplayedList || !BrowserList) return;
+
+ // Save the current displayed data
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ // Warning : 'selection_filelist' is not a list of 'ETFile' items!
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selection_filelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ // Create an 'ETFile' list from 'selection_filelist'
+ while (selection_filelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selection_filelist->data);
+ etfilelist = g_list_append(etfilelist,etfile);
+
+ if (!selection_filelist->next) break;
+ selection_filelist = g_list_next(selection_filelist);
+ }
+ g_list_foreach(selection_filelist, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selection_filelist);
+
+
+ if (object==G_OBJECT(TitleMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(TitleEntry),0,-1); // The string to apply to all other files
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->title,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with title '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed title from selected files."));
+ }
+ else if (object==G_OBJECT(ArtistMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(ArtistEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->artist,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with artist '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed artist from selected files."));
+ }
+ else if (object==G_OBJECT(AlbumMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(AlbumEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->album,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with album '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed album name from selected files."));
+ }
+ else if (object==G_OBJECT(DiscNumberMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(DiscNumberEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->disc_number,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with disc number '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed disc number from selected files."));
+ }
+ else if (object==G_OBJECT(YearMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(YearEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->year,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with year '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed year from selected files."));
+ }
+ else if (object==G_OBJECT(TrackMButton))
+ {
+ /* Used of Track and Total Track values */
+ string_to_set = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child)));
+ string_to_set1 = gtk_editable_get_chars(GTK_EDITABLE(TrackTotalEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+
+ // We apply the TrackEntry field to all others files only if it is to delete
+ // the field (string=""). Else we don't overwrite the track number
+ if (!string_to_set || g_utf8_strlen(string_to_set, -1) == 0)
+ ET_Set_Field_File_Tag_Item(&FileTag->track,string_to_set);
+ ET_Set_Field_File_Tag_Item(&FileTag->track_total,string_to_set1);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+
+ if ( string_to_set && g_utf8_strlen(string_to_set, -1) > 0 ) //&& atoi(string_to_set)>0 )
+ {
+ if ( string_to_set1 != NULL && g_utf8_strlen(string_to_set1, -1)>0 ) //&& atoi(string_to_set1)>0 )
+ {
+ msg = g_strdup_printf(_("Selected files tagged with track like 'xx/%s'."),string_to_set1);
+ }else
+ {
+ msg = g_strdup_printf(_("Selected files tagged with track like 'xx'."));
+ }
+ }else
+ {
+ msg = g_strdup(_("Removed track number from selected files."));
+ }
+ }
+ else if (object==G_OBJECT(TrackMButtonSequence))
+ {
+ /* This part doesn't set the same track number to all files, but sequence the tracks.
+ * So we must browse the whole 'etfilelistfull' to get position of each selected file.
+ * Note : 'etfilelistfull' and 'etfilelist' must be sorted in the same order */
+ GList *etfilelistfull = NULL;
+ gchar *path = NULL;
+ gchar *path1 = NULL;
+ gint i = 0;
+
+ /* FIX ME!: see to fill also the Total Track (it's a good idea?) */
+ etfilelistfull = g_list_first(ETCore->ETFileList);
+
+ // Sort 'etfilelistfull' and 'etfilelist' in the same order
+ etfilelist = ET_Sort_File_List(etfilelist,SORTING_FILE_MODE);
+ etfilelistfull = ET_Sort_File_List(etfilelistfull,SORTING_FILE_MODE);
+
+ while (etfilelist && etfilelistfull)
+ {
+ // To get the path of the file
+ File_Name *FileNameCur = (File_Name *)((ET_File *)etfilelistfull->data)->FileNameCur->data;
+ // The ETFile in the selected file list
+ etfile = etfilelist->data;
+
+ // Restart counter when entering a new directory
+ g_free(path1);
+ path1 = g_path_get_dirname(FileNameCur->value);
+ if ( path && path1 && strcmp(path,path1)!=0 )
+ i = 0;
+ if (NUMBER_TRACK_FORMATED)
+ string_to_set = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,++i);
+ else
+ string_to_set = g_strdup_printf("%d",++i);
+
+ // The file is in the selection?
+ if ( (ET_File *)etfilelistfull->data == etfile )
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->track,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+
+ g_free(string_to_set);
+ g_free(path);
+ path = g_strdup(path1);
+
+ etfilelistfull = g_list_next(etfilelistfull);
+ }
+ g_free(path);
+ g_free(path1);
+ //msg = g_strdup_printf(_("All %d tracks numbered sequentially."), ETCore->ETFileSelectionList_Length);
+ msg = g_strdup_printf(_("Selected tracks numbered sequentially."));
+ }
+ else if (object==G_OBJECT(TrackMButtonNbrFiles))
+ {
+ /* Used of Track and Total Track values */
+ while (etfilelist)
+ {
+ gchar *path_utf8, *filename_utf8;
+
+ etfile = (ET_File *)etfilelist->data;
+ filename_utf8 = ((File_Name *)etfile->FileNameNew->data)->value_utf8;
+ path_utf8 = g_path_get_dirname(filename_utf8);
+ if (NUMBER_TRACK_FORMATED)
+ string_to_set = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,ET_Get_Number_Of_Files_In_Directory(path_utf8));
+ else
+ string_to_set = g_strdup_printf("%d",ET_Get_Number_Of_Files_In_Directory(path_utf8));
+ g_free(path_utf8);
+ if (!string_to_set1)
+ string_to_set1 = g_strdup(string_to_set); // Just for the message below...
+
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->track_total,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+
+ if ( string_to_set1 != NULL && g_utf8_strlen(string_to_set1, -1)>0 ) //&& atoi(string_to_set1)>0 )
+ {
+ msg = g_strdup_printf(_("Selected files tagged with track like 'xx/%s'."),string_to_set1);
+ }else
+ {
+ msg = g_strdup(_("Removed track number from selected files."));
+ }
+ }
+ else if (object==G_OBJECT(GenreMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(GTK_BIN(GenreCombo)->child),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->genre,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with genre '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed genre from selected files."));
+ }
+ else if (object==G_OBJECT(CommentMButton))
+ {
+ //GtkTextBuffer *textbuffer;
+ //GtkTextIter start_iter;
+ //GtkTextIter end_iter;
+ //textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(CommentView));
+ //gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(textbuffer),&start_iter,&end_iter);
+ //string_to_set = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(textbuffer),&start_iter,&end_iter,TRUE);
+
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(CommentEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->comment,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with comment '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed comment from selected files."));
+ }
+ else if (object==G_OBJECT(ComposerMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(ComposerEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->composer,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with composer '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed composer from selected files."));
+ }
+ else if (object==G_OBJECT(OrigArtistMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(OrigArtistEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->orig_artist,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with original artist '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed original artist from selected files."));
+ }
+ else if (object==G_OBJECT(CopyrightMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(CopyrightEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->copyright,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with copyright '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed copyright from selected files."));
+ }
+ else if (object==G_OBJECT(URLMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(URLEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->url,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with URL '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed URL from selected files."));
+ }
+ else if (object==G_OBJECT(EncodedByMButton))
+ {
+ string_to_set = gtk_editable_get_chars(GTK_EDITABLE(EncodedByEntry),0,-1);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Item(&FileTag->encoded_by,string_to_set);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (string_to_set != NULL && g_utf8_strlen(string_to_set, -1)>0)
+ msg = g_strdup_printf(_("Selected files tagged with encoder name '%s'."),string_to_set);
+ else
+ msg = g_strdup(_("Removed encoder name from selected files."));
+ }
+ else if (object==G_OBJECT(PictureMButton))
+ {
+ Picture *res = NULL, *pic, *prev_pic = NULL;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(PictureEntryView));
+ if (gtk_tree_model_get_iter_first(model, &iter))
+ {
+ do
+ {
+ gtk_tree_model_get(model, &iter, PICTURE_COLUMN_DATA, &pic, -1);
+ pic = Picture_Copy_One(pic);
+ if (!res)
+ res = pic;
+ else
+ prev_pic->next = pic;
+ prev_pic = pic;
+ } while (gtk_tree_model_iter_next(model, &iter));
+ }
+
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(etfile,FileTag);
+ ET_Set_Field_File_Tag_Picture((Picture **)&FileTag->picture, res);
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ if (!etfilelist->next) break;
+ etfilelist = g_list_next(etfilelist);
+ }
+ if (res)
+ msg = g_strdup(_("Selected files tagged with pictures."));
+ else
+ msg = g_strdup(_("Removed pictures from selected files."));
+ Picture_Free(res);
+ }
+
+ g_list_free(etfilelist);
+
+ // Refresh the whole list (faster than file by file) to show changes
+ Browser_List_Refresh_Whole_List();
+
+ /* Display the current file (Needed when sequencing tracks) */
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+
+ if (msg)
+ {
+ Log_Print("%s",msg);
+ Statusbar_Message(msg,TRUE);
+ g_free(msg);
+ }
+ g_free(string_to_set);
+ g_free(string_to_set1);
+
+ /* To update state of Undo button */
+ Update_Command_Buttons_Sensivity();
+}
+
+
+
+
+/*
+ * Action when selecting all files
+ */
+void Action_Select_All_Files (void)
+{
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ Browser_List_Select_All_Files();
+ Update_Command_Buttons_Sensivity();
+}
+
+
+/*
+ * Action when unselecting all files
+ */
+void Action_Unselect_All_Files (void)
+{
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ Browser_List_Unselect_All_Files();
+ ETCore->ETFileDisplayed = NULL;
+}
+
+
+/*
+ * Action when inverting files selection
+ */
+void Action_Invert_Files_Selection (void)
+{
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ Browser_List_Invert_File_Selection();
+ Update_Command_Buttons_Sensivity();
+}
+
+
+
+/*
+ * Action when First button is selected
+ */
+void Action_Select_First_File (void)
+{
+ GList *etfilelist;
+
+ if (!ETCore->ETFileDisplayedList)
+ return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Go to the first item of the list */
+ etfilelist = ET_Displayed_File_List_First();
+ if (etfilelist)
+ {
+ Browser_List_Unselect_All_Files(); // To avoid the last line still selected
+ Browser_List_Select_File_By_Etfile((ET_File *)etfilelist->data,TRUE);
+ ET_Display_File_Data_To_UI((ET_File *)etfilelist->data);
+ }
+
+ Update_Command_Buttons_Sensivity();
+ Scan_Rename_File_Generate_Preview();
+ Scan_Fill_Tag_Generate_Preview();
+}
+
+
+/*
+ * Action when Prev button is selected
+ */
+void Action_Select_Prev_File (void)
+{
+ GList *etfilelist;
+
+ if (!ETCore->ETFileDisplayedList || !ETCore->ETFileDisplayedList->prev)
+ return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Go to the prev item of the list */
+ etfilelist = ET_Displayed_File_List_Previous();
+ if (etfilelist)
+ {
+ Browser_List_Unselect_All_Files();
+ Browser_List_Select_File_By_Etfile((ET_File *)etfilelist->data,TRUE);
+ ET_Display_File_Data_To_UI((ET_File *)etfilelist->data);
+ }
+
+// if (!ETFileList->prev)
+// gdk_beep(); // Warm the user
+
+ Update_Command_Buttons_Sensivity();
+ Scan_Rename_File_Generate_Preview();
+ Scan_Fill_Tag_Generate_Preview();
+
+ if (SET_FOCUS_TO_FIRST_TAG_FIELD)
+ gtk_widget_grab_focus(GTK_WIDGET(TitleEntry));
+}
+
+
+/*
+ * Action when Next button is selected
+ */
+void Action_Select_Next_File (void)
+{
+ GList *etfilelist;
+
+ if (!ETCore->ETFileDisplayedList || !ETCore->ETFileDisplayedList->next)
+ return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Go to the next item of the list */
+ etfilelist = ET_Displayed_File_List_Next();
+ if (etfilelist)
+ {
+ Browser_List_Unselect_All_Files();
+ Browser_List_Select_File_By_Etfile((ET_File *)etfilelist->data,TRUE);
+ ET_Display_File_Data_To_UI((ET_File *)etfilelist->data);
+ }
+
+// if (!ETFileList->next)
+// gdk_beep(); // Warm the user
+
+ Update_Command_Buttons_Sensivity();
+ Scan_Rename_File_Generate_Preview();
+ Scan_Fill_Tag_Generate_Preview();
+
+ if (SET_FOCUS_TO_FIRST_TAG_FIELD)
+ gtk_widget_grab_focus(GTK_WIDGET(TitleEntry));
+}
+
+
+/*
+ * Action when Last button is selected
+ */
+void Action_Select_Last_File (void)
+{
+ GList *etfilelist;
+
+ if (!ETCore->ETFileDisplayedList || !ETCore->ETFileDisplayedList->next)
+ return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Go to the last item of the list */
+ etfilelist = ET_Displayed_File_List_Last();
+ if (etfilelist)
+ {
+ Browser_List_Unselect_All_Files();
+ Browser_List_Select_File_By_Etfile((ET_File *)etfilelist->data,TRUE);
+ ET_Display_File_Data_To_UI((ET_File *)etfilelist->data);
+ }
+
+ Update_Command_Buttons_Sensivity();
+ Scan_Rename_File_Generate_Preview();
+ Scan_Fill_Tag_Generate_Preview();
+}
+
+
+/*
+ * Select a file in the "main list" using the ETFile adress of each item.
+ */
+void Action_Select_Nth_File_By_Etfile (ET_File *ETFile)
+{
+ if (!ETCore->ETFileDisplayedList)
+ return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Display the item */
+ Browser_List_Select_File_By_Etfile(ETFile,TRUE);
+ ET_Displayed_File_List_By_Etfile(ETFile); // Just to update 'ETFileDisplayedList'
+ ET_Display_File_Data_To_UI(ETFile);
+
+ Update_Command_Buttons_Sensivity();
+ Scan_Rename_File_Generate_Preview();
+ Scan_Fill_Tag_Generate_Preview();
+}
+
+
+/*
+ * Action when Scan button is pressed
+ */
+void Action_Scan_Selected_Files (void)
+{
+ gint progress_bar_index;
+ gint selectcount;
+ gchar progress_bar_text[30];
+ double fraction;
+ GList *selfilelist = NULL;
+ ET_File *etfile;
+ GtkTreeSelection *selection;
+
+ if (!ETCore->ETFileDisplayedList || !BrowserList) return;
+
+ /* Check if scanner window is opened */
+ if (!ScannerWindow)
+ {
+ Open_ScannerWindow(SCANNER_TYPE);
+ Statusbar_Message(_("Select Mode and Mask, and redo the same action"),TRUE);
+ return;
+ }
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Initialize status bar */
+ selectcount = gtk_tree_selection_count_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList)));
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar),0);
+ progress_bar_index = 0;
+ g_snprintf(progress_bar_text, 30, "%d/%d", progress_bar_index, selectcount);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), progress_bar_text);
+
+ /* Set to unsensitive all command buttons (except Quit button) */
+ Disable_Command_Buttons();
+
+ progress_bar_index = 0;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ while (selfilelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selfilelist->data);
+
+ // Run the current scanner
+ Scan_Select_Mode_And_Run_Scanner(etfile);
+
+ fraction = (++progress_bar_index) / (double) selectcount;
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), fraction);
+ g_snprintf(progress_bar_text, 30, "%d/%d", progress_bar_index, selectcount);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), progress_bar_text);
+
+ /* Needed to refresh status bar */
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ if (!selfilelist->next) break;
+ selfilelist = g_list_next(selfilelist);
+ }
+
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+
+ // Refresh the whole list (faster than file by file) to show changes
+ Browser_List_Refresh_Whole_List();
+
+ /* Display the current file */
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+
+ /* To update state of command buttons */
+ Update_Command_Buttons_Sensivity();
+
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), "");
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), 0);
+ Statusbar_Message(_("All tags have been scanned"),TRUE);
+}
+
+
+
+/*
+ * Action when Remove button is pressed
+ */
+void Action_Remove_Selected_Tags (void)
+{
+ GList *selfilelist = NULL;
+ ET_File *etfile;
+ File_Tag *FileTag;
+ gint progress_bar_index;
+ gint selectcount;
+ double fraction;
+ GtkTreeSelection *selection;
+
+ if (!ETCore->ETFileDisplayedList || !BrowserList) return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Initialize status bar */
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), 0.0);
+ selectcount = gtk_tree_selection_count_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList)));
+ progress_bar_index = 0;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ while (selfilelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selfilelist->data);
+ FileTag = ET_File_Tag_Item_New();
+ ET_Manage_Changes_Of_File_Data(etfile,NULL,FileTag);
+
+ fraction = (++progress_bar_index) / (double) selectcount;
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), fraction);
+ /* Needed to refresh status bar */
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ if (!selfilelist->next) break;
+ selfilelist = g_list_next(selfilelist);
+ }
+
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+
+ // Refresh the whole list (faster than file by file) to show changes
+ Browser_List_Refresh_Whole_List();
+
+ /* Display the current file */
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+ Update_Command_Buttons_Sensivity();
+
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), 0.0);
+ Statusbar_Message(_("All tags have been removed"),TRUE);
+}
+
+
+
+/*
+ * Action when Undo button is pressed.
+ * Action_Undo_Selected_Files: Undo the last changes for the selected files.
+ * Action_Undo_From_History_List: Undo the changes of the last modified file of the list.
+ */
+gint Action_Undo_Selected_Files (void)
+{
+ GList *selfilelist = NULL;
+ gboolean state = FALSE;
+ ET_File *etfile;
+ GtkTreeSelection *selection;
+
+ if (!ETCore->ETFileDisplayedList || !BrowserList) return FALSE;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ while (selfilelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selfilelist->data);
+ state |= ET_Undo_File_Data(etfile);
+
+ if (!selfilelist->next) break;
+ selfilelist = g_list_next(selfilelist);
+ }
+
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+
+ // Refresh the whole list (faster than file by file) to show changes
+ Browser_List_Refresh_Whole_List();
+
+ /* Display the current file */
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+ Update_Command_Buttons_Sensivity();
+
+ //ET_Debug_Print_File_List(ETCore->ETFileList,__FILE__,__LINE__,__FUNCTION__);
+
+ return state;
+}
+
+
+void Action_Undo_From_History_List (void)
+{
+ ET_File *ETFile;
+
+ if (!ETCore->ETFileList) return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ ETFile = ET_Undo_History_File_Data();
+ if (ETFile)
+ {
+ ET_Display_File_Data_To_UI(ETFile);
+ Browser_List_Select_File_By_Etfile(ETFile,TRUE);
+ Browser_List_Refresh_File_In_List(ETFile);
+ }
+
+ Update_Command_Buttons_Sensivity();
+}
+
+
+
+/*
+ * Action when Redo button is pressed.
+ * Action_Redo_Selected_Files: Redo the last changes for the selected files.
+ * Action_Redo_From_History_List: Redo the changes of the last modified file of the list.
+ */
+gint Action_Redo_Selected_File (void)
+{
+ GList *selfilelist = NULL;
+ gboolean state = FALSE;
+ ET_File *etfile;
+ GtkTreeSelection *selection;
+
+ if (!ETCore->ETFileDisplayedList || !BrowserList) return FALSE;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ while (selfilelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selfilelist->data);
+ state |= ET_Redo_File_Data(etfile);
+
+ if (!selfilelist->next) break;
+ selfilelist = g_list_next(selfilelist);
+ }
+
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+
+ // Refresh the whole list (faster than file by file) to show changes
+ Browser_List_Refresh_Whole_List();
+
+ /* Display the current file */
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+ Update_Command_Buttons_Sensivity();
+
+ return state;
+}
+
+
+void Action_Redo_From_History_List (void)
+{
+ ET_File *ETFile;
+
+ if (!ETCore->ETFileDisplayedList) return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ ETFile = ET_Redo_History_File_Data();
+ if (ETFile)
+ {
+ ET_Display_File_Data_To_UI(ETFile);
+ Browser_List_Select_File_By_Etfile(ETFile,TRUE);
+ Browser_List_Refresh_File_In_List(ETFile);
+ }
+
+ Update_Command_Buttons_Sensivity();
+}
+
+
+
+
+/*
+ * Action when Save button is pressed
+ */
+void Action_Save_Selected_Files (void)
+{
+ Save_Selected_Files_With_Answer(FALSE);
+}
+
+void Action_Force_Saving_Selected_Files (void)
+{
+ Save_Selected_Files_With_Answer(TRUE);
+}
+
+
+/*
+ * Will save the full list of file (not only the selected files in list)
+ * and check if we must save also only the changed files or all files
+ * (force_saving_files==TRUE)
+ */
+gint Save_All_Files_With_Answer (gboolean force_saving_files)
+{
+ GList *etfilelist;
+
+ if (!ETCore || !ETCore->ETFileList) return FALSE;
+ etfilelist = g_list_first(ETCore->ETFileList);
+ return Save_List_Of_Files(etfilelist,force_saving_files);
+}
+
+/*
+ * Will save only the selected files in the file list
+ */
+gint Save_Selected_Files_With_Answer (gboolean force_saving_files)
+{
+ gint toreturn;
+ GList *etfilelist = NULL;
+ GList *selfilelist = NULL;
+ ET_File *etfile;
+ GtkTreeSelection *selection;
+
+ if (!BrowserList) return FALSE;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ while (selfilelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selfilelist->data);
+ etfilelist = g_list_append(etfilelist, etfile);
+
+ if (!selfilelist->next) break;
+ selfilelist = selfilelist->next;
+ }
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+
+ toreturn = Save_List_Of_Files(etfilelist, force_saving_files);
+ g_list_free(etfilelist);
+ return toreturn;
+}
+
+/*
+ * Save_List_Of_Files: Function to save a list of files.
+ * - force_saving_files = TRUE => force saving the file even if it wasn't changed
+ * - force_saving_files = FALSE => force saving only the changed files
+ */
+gint Save_List_Of_Files (GList *etfilelist, gboolean force_saving_files)
+{
+ gint progress_bar_index;
+ gint saving_answer;
+ gint nb_files_to_save;
+ gchar *msg;
+ gchar progress_bar_text[30];
+ GList *etfilelist_tmp;
+ ET_File *etfile_save_position = NULL;
+ File_Tag *FileTag;
+ File_Name *FileNameNew;
+ double fraction;
+ GtkAction *uiaction;
+ GtkWidget *TBViewMode;
+ GtkTreePath *currentPath = NULL;
+
+ if (!ETCore) return FALSE;
+
+ /* Save the current position in the list */
+ etfile_save_position = ETCore->ETFileDisplayed;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Count the number of files to save */
+ nb_files_to_save = 0;
+ etfilelist_tmp = etfilelist;
+ while (etfilelist_tmp)
+ {
+ File_Tag *filetag = ((ET_File *)etfilelist_tmp->data)->FileTag->data;
+ File_Name *filename = ((ET_File *)etfilelist_tmp->data)->FileNameNew->data;
+
+ // Count only the changed files or all files if force_saving_files==TRUE
+ if ( force_saving_files
+ || (filename && filename->saved==FALSE) || (filetag && filetag->saved==FALSE) )
+ nb_files_to_save++;
+ etfilelist_tmp = etfilelist_tmp->next;
+ }
+
+ /* Initialize status bar */
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar),0);
+ progress_bar_index = 0;
+ g_snprintf(progress_bar_text, 30, "%d/%d", progress_bar_index, nb_files_to_save);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), progress_bar_text);
+
+ /* Set to unsensitive all command buttons (except Quit button) */
+ Disable_Command_Buttons();
+ Browser_Area_Set_Sensitive(FALSE);
+ Tag_Area_Set_Sensitive(FALSE);
+ File_Area_Set_Sensitive(FALSE);
+
+ /* Show msgbox (if needed) to ask confirmation */
+ SF_HideMsgbox_Write_Tag = 0;
+ SF_HideMsgbox_Rename_File = 0;
+
+ Main_Stop_Button_Pressed = 0;
+ uiaction = gtk_ui_manager_get_action(UIManager, "/ToolBar/Stop");
+ g_object_set(uiaction, "sensitive", FALSE, NULL);
+
+ etfilelist_tmp = etfilelist;
+ while (etfilelist_tmp)
+ {
+ FileTag = ((ET_File *)etfilelist_tmp->data)->FileTag->data;
+ FileNameNew = ((ET_File *)etfilelist_tmp->data)->FileNameNew->data;
+
+ /* We process only the files changed and not saved, or we force to save all
+ * files if force_saving_files==TRUE */
+ if ( force_saving_files
+ || FileTag->saved == FALSE || FileNameNew->saved == FALSE )
+ {
+ ET_Display_File_Data_To_UI((ET_File *)etfilelist_tmp->data);
+ // Use of 'currentPath' to try to increase speed. Indeed, in many
+ // cases, the next file to select, is the next in the list
+ currentPath = Browser_List_Select_File_By_Etfile2((ET_File *)etfilelist_tmp->data,FALSE,currentPath);
+
+ fraction = (++progress_bar_index) / (double) nb_files_to_save;
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), fraction);
+ g_snprintf(progress_bar_text, 30, "%d/%d", progress_bar_index, nb_files_to_save);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), progress_bar_text);
+
+ /* Needed to refresh status bar */
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ // Save tag and rename file
+ saving_answer = Save_File((ET_File *)etfilelist_tmp->data, (nb_files_to_save>1) ? TRUE : FALSE, force_saving_files);
+
+ if (saving_answer == -1)
+ {
+ /* Stop saving files + reinit progress bar */
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), 0.0);
+ Statusbar_Message(_("All files have been saved..."),TRUE);
+ /* To update state of command buttons */
+ Update_Command_Buttons_Sensivity();
+ Browser_Area_Set_Sensitive(TRUE);
+ Tag_Area_Set_Sensitive(TRUE);
+ File_Area_Set_Sensitive(TRUE);
+
+ return -1; /* We stop all actions */
+ }
+ }
+
+ etfilelist_tmp = etfilelist_tmp->next;
+ if (Main_Stop_Button_Pressed == 1 )
+ break;
+
+ }
+
+ if (currentPath)
+ gtk_tree_path_free(currentPath);
+
+ if (Main_Stop_Button_Pressed)
+ msg = g_strdup(_("Files have been partially saved..."));
+ else
+ msg = g_strdup(_("All files have been saved..."));
+
+ Main_Stop_Button_Pressed = 0;
+ uiaction = gtk_ui_manager_get_action(UIManager, "/ToolBar/Stop");
+ g_object_set(uiaction, "sensitive", FALSE, NULL);
+
+ /* Return to the saved position in the list */
+ ET_Display_File_Data_To_UI(etfile_save_position);
+ Browser_List_Select_File_By_Etfile(etfile_save_position,TRUE);
+
+ /* Browser is on mode : Artist + Album list */
+ TBViewMode = gtk_ui_manager_get_widget(UIManager, "/ToolBar/ViewModeToggle");
+ if ( gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(TBViewMode)) )
+ Browser_Display_Tree_Or_Artist_Album_List();
+
+ /* To update state of command buttons */
+ Update_Command_Buttons_Sensivity();
+ Browser_Area_Set_Sensitive(TRUE);
+ Tag_Area_Set_Sensitive(TRUE);
+ File_Area_Set_Sensitive(TRUE);
+
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), "");
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), 0);
+ Statusbar_Message(msg,TRUE);
+ g_free(msg);
+
+ return TRUE;
+}
+
+
+
+/*
+ * Delete a file on the hard disk
+ */
+void Action_Delete_Selected_Files (void)
+{
+ Delete_Selected_Files_With_Answer();
+}
+
+
+gint Delete_Selected_Files_With_Answer (void)
+{
+ GList *selfilelist;
+ GList *rowreflist = NULL;
+ gint progress_bar_index;
+ gint saving_answer;
+ gint nb_files_to_delete;
+ gint nb_files_deleted = 0;
+ gchar *msg;
+ gchar progress_bar_text[30];
+ double fraction;
+ GtkTreeModel *treemodel;
+ GtkTreeRowReference *rowref;
+ GtkTreeSelection *selection;
+
+ if (!ETCore->ETFileDisplayedList || !BrowserList) return FALSE;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Number of files to save */
+ nb_files_to_delete = gtk_tree_selection_count_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList)));
+
+ /* Initialize status bar */
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar),0);
+ progress_bar_index = 0;
+ g_snprintf(progress_bar_text, 30, "%d/%d", progress_bar_index, nb_files_to_delete);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), progress_bar_text);
+
+ /* Set to unsensitive all command buttons (except Quit button) */
+ Disable_Command_Buttons();
+ Browser_Area_Set_Sensitive(FALSE);
+ Tag_Area_Set_Sensitive(FALSE);
+ File_Area_Set_Sensitive(FALSE);
+
+ /* Show msgbox (if needed) to ask confirmation */
+ SF_HideMsgbox_Delete_File = 0;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, &treemodel);
+ while (selfilelist)
+ {
+ rowref = gtk_tree_row_reference_new(treemodel, selfilelist->data);
+ rowreflist = g_list_append(rowreflist, rowref);
+
+ if (!selfilelist->next) break;
+ selfilelist = selfilelist->next;
+ }
+
+ while (rowreflist)
+ {
+ GtkTreePath *path;
+ ET_File *ETFile;
+
+ path = gtk_tree_row_reference_get_path(rowreflist->data);
+ ETFile = Browser_List_Get_ETFile_From_Path(path);
+ gtk_tree_path_free(path);
+
+ ET_Display_File_Data_To_UI(ETFile);
+ Browser_List_Select_File_By_Etfile(ETFile,FALSE);
+ fraction = (++progress_bar_index) / (double) nb_files_to_delete;
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), fraction);
+ g_snprintf(progress_bar_text, 30, "%d/%d", progress_bar_index, nb_files_to_delete);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), progress_bar_text);
+ /* Needed to refresh status bar */
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ saving_answer = Delete_File(ETFile,(nb_files_to_delete>1)?TRUE:FALSE);
+
+ switch (saving_answer)
+ {
+ case 1:
+ nb_files_deleted += saving_answer;
+ // Remove file in the browser (corresponding line in the clist)
+ Browser_List_Remove_File(ETFile);
+ // Remove file from file list
+ ET_Remove_File_From_File_List(ETFile);
+ break;
+ case 0:
+ break;
+ case -1:
+ // Stop deleting files + reinit progress bar
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar),0.0);
+ // To update state of command buttons
+ Update_Command_Buttons_Sensivity();
+ Browser_Area_Set_Sensitive(TRUE);
+ Tag_Area_Set_Sensitive(TRUE);
+ File_Area_Set_Sensitive(TRUE);
+
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+ return -1; // We stop all actions
+ }
+
+ if (!rowreflist->next) break;
+ rowreflist = rowreflist->next;
+ }
+
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+ g_list_foreach(rowreflist, (GFunc) gtk_tree_row_reference_free, NULL);
+ g_list_free(rowreflist);
+
+ if (nb_files_deleted < nb_files_to_delete)
+ msg = g_strdup(_("Files have been partially deleted..."));
+ else
+ msg = g_strdup(_("All files have been deleted..."));
+
+ // It's important to displayed the new item, as it'll check the changes in Browser_Display_Tree_Or_Artist_Album_List
+ if (ETCore->ETFileDisplayed)
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+ /*else if (ET_Displayed_File_List_Current())
+ ET_Display_File_Data_To_UI((ET_File *)ET_Displayed_File_List_Current()->data);*/
+
+ // Load list...
+ Browser_List_Load_File_List(ETCore->ETFileDisplayedList, NULL);
+ // Rebuild the list...
+ Browser_Display_Tree_Or_Artist_Album_List();
+
+ /* To update state of command buttons */
+ Update_Command_Buttons_Sensivity();
+ Browser_Area_Set_Sensitive(TRUE);
+ Tag_Area_Set_Sensitive(TRUE);
+ File_Area_Set_Sensitive(TRUE);
+
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), "");
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), 0);
+ Statusbar_Message(msg,TRUE);
+ g_free(msg);
+
+ return TRUE;
+}
+
+
+
+/*
+ * Save changes of the ETFile (write tag and rename file)
+ * - multiple_files = TRUE : when saving files, a msgbox appears with ability
+ * to do the same action for all files.
+ * - multiple_files = FALSE : appears only a msgbox to ask confirmation.
+ */
+gint Save_File (ET_File *ETFile, gboolean multiple_files, gboolean force_saving_files)
+{
+ File_Tag *FileTag;
+ File_Name *FileNameNew;
+ gchar *msg = NULL;
+ gchar *msg_title = NULL;
+ gint stop_loop = 0;
+ gchar *filename_cur_utf8 = ((File_Name *)ETFile->FileNameCur->data)->value_utf8;
+ gchar *filename_new_utf8 = ((File_Name *)ETFile->FileNameNew->data)->value_utf8;
+ gchar *basename_cur_utf8, *basename_new_utf8;
+ gchar *dirname_cur_utf8, *dirname_new_utf8;
+
+
+ if (!ETFile) return 0;
+
+ basename_cur_utf8 = g_path_get_basename(filename_cur_utf8);
+ basename_new_utf8 = g_path_get_basename(filename_new_utf8);
+
+ /* Save the current displayed data */
+ // Not needed, done before //ET_Save_File_Data_From_UI((ET_File *)ETFileList->data);
+ FileTag = ETFile->FileTag->data;
+ FileNameNew = ETFile->FileNameNew->data;
+
+ /*
+ * First part: write tag informations (artist, title,...)
+ */
+ // Note : the option 'force_saving_files' is only used to save tags
+ if ( force_saving_files
+ || FileTag->saved == FALSE ) // This tag had been already saved ?
+ {
+ GtkWidget *msgbox = NULL;
+ gint button;
+
+ if (CONFIRM_WRITE_TAG && !SF_HideMsgbox_Write_Tag)
+ {
+ ET_Display_File_Data_To_UI(ETFile);
+
+ msg = g_strdup_printf(_("Do you want to write the tag of file\n'%s' ?"),basename_cur_utf8);
+
+ if (multiple_files)
+ {
+ msgbox = msg_box_new(_("Write Tag..."),msg,GTK_STOCK_DIALOG_QUESTION,
+ BUTTON_CANCEL,BUTTON_NO,BUTTON_YES,0);
+ msg_box_check_button_set_active(MSG_BOX(msgbox),TRUE); // Checked by default
+ }else
+ {
+ msgbox = msg_box_new(_("Write Tag..."),msg,GTK_STOCK_DIALOG_QUESTION,
+ BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ }
+ g_free(msg);
+
+ SF_ButtonPressed_Write_Tag = button = msg_box_run(MSG_BOX(msgbox));
+ /* When check button in msgbox was activated : do not display the message again */
+ if (msg_box_check_button_get_active(MSG_BOX(msgbox)))
+ SF_HideMsgbox_Write_Tag = MSG_BOX(msgbox)->check_button_state;
+ gtk_widget_destroy(msgbox);
+ }else
+ {
+ if (SF_HideMsgbox_Write_Tag)
+ button = SF_ButtonPressed_Write_Tag;
+ else
+ button = BUTTON_YES;
+ }
+
+ switch (button)
+ {
+ case BUTTON_YES:
+ Write_File_Tag(ETFile);
+ break;
+ case BUTTON_NO:
+ break;
+ case BUTTON_CANCEL:
+ case -1:
+ stop_loop = -1;
+ return stop_loop;
+ break;
+ }
+ }
+
+
+ /*
+ * Second part: rename the file
+ */
+ // Do only if changed! (don't take force_saving_files into account)
+ if ( FileNameNew->saved == FALSE ) // This filename had been already saved ?
+ {
+ GtkWidget *msgbox = NULL;
+ gint button;
+
+ if (CONFIRM_RENAME_FILE && !SF_HideMsgbox_Rename_File)
+ {
+ ET_Display_File_Data_To_UI(ETFile);
+
+ dirname_cur_utf8 = g_path_get_dirname(filename_cur_utf8);
+ dirname_new_utf8 = g_path_get_dirname(filename_new_utf8);
+
+ // Directories were renamed? or only filename?
+ if (g_utf8_collate(dirname_cur_utf8,dirname_new_utf8) != 0)
+ {
+ if (g_utf8_collate(basename_cur_utf8,basename_new_utf8) != 0)
+ {
+ // Directories and filename changed
+ msg_title = g_strdup(_("Rename File and Directory..."));
+ msg = g_strdup_printf(_("Do you want to rename the file and directory \n'%s'\nto \n'%s' ?"),
+ filename_cur_utf8, filename_new_utf8);
+ }else
+ {
+ // Only directories changed
+ msg_title = g_strdup(_("Rename Directory..."));
+ msg = g_strdup_printf(_("Do you want to rename the directory \n'%s'\nto \n'%s' ?"),
+ dirname_cur_utf8, dirname_new_utf8);
+ }
+ }else
+ {
+ // Only filename changed
+ msg_title = g_strdup(_("Rename File..."));
+ msg = g_strdup_printf(_("Do you want to rename the file \n'%s'\nto \n'%s' ?"),
+ basename_cur_utf8, basename_new_utf8);
+ }
+
+ g_free(dirname_cur_utf8);
+ g_free(dirname_new_utf8);
+
+ if (multiple_files)
+ {
+ // Allow to cancel for all other files
+ msgbox = msg_box_new(msg_title,msg,GTK_STOCK_DIALOG_QUESTION,
+ BUTTON_CANCEL,BUTTON_NO,BUTTON_YES,0);
+ msg_box_check_button_set_active(MSG_BOX(msgbox),TRUE); // Checked by default
+ }else
+ {
+ msgbox = msg_box_new(msg_title,msg,GTK_STOCK_DIALOG_QUESTION,
+ BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ }
+ g_free(msg);
+ g_free(msg_title);
+ SF_ButtonPressed_Rename_File = button = msg_box_run(MSG_BOX(msgbox));
+ if (msg_box_check_button_get_active(MSG_BOX(msgbox)))
+ SF_HideMsgbox_Rename_File = msg_box_check_button_get_active(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ }else
+ {
+ if (SF_HideMsgbox_Rename_File)
+ button = SF_ButtonPressed_Rename_File;
+ else
+ button = BUTTON_YES;
+ }
+
+ switch(button)
+ {
+ case BUTTON_YES:
+ Rename_File(ETFile);
+ break;
+ case BUTTON_NO:
+ break;
+ case BUTTON_CANCEL:
+ case -1:
+ stop_loop = -1;
+ return stop_loop;
+ break;
+ }
+ }
+
+ g_free(basename_cur_utf8);
+ g_free(basename_new_utf8);
+
+ /* Refresh file into browser list */
+ Browser_List_Refresh_File_In_List(ETFile);
+
+ return 1;
+}
+
+
+/*
+ * Write tag of the ETFile
+ */
+void Write_File_Tag (ET_File *ETFile)
+{
+ gchar *cur_filename_utf8 = ((File_Name *)ETFile->FileNameCur->data)->value_utf8;
+ gchar *msg;
+ gchar *basename_utf8;
+ GtkWidget *msgbox;
+
+ basename_utf8 = g_path_get_basename(cur_filename_utf8);
+ msg = g_strdup_printf(_("Writing tag of '%s'"),basename_utf8);
+ Statusbar_Message(msg,TRUE);
+ g_free(msg);
+
+ if (ET_Save_File_Tag_To_HD(ETFile))
+ {
+ Statusbar_Message(_("Tag(s) written"),TRUE);
+ return;
+ }
+
+ switch ( ((ET_File_Description *)ETFile->ETFileDescription)->TagType)
+ {
+#ifdef ENABLE_OGG
+ case OGG_TAG:
+ // Special for Ogg Vorbis because the error is defined into 'vcedit_error(state)'
+ msg = g_strdup_printf(_("Can't write tag in file '%s'!\n(%s)"),
+ basename_utf8,ogg_error_msg);
+ break;
+#endif
+ default:
+ msg = g_strdup_printf(_("Can't write tag in file '%s'!\n(%s)"),
+ basename_utf8,g_strerror(errno));
+ }
+
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ g_free(basename_utf8);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+}
+
+
+/*
+ * Make dir and all parents with permission mode
+ */
+gint Make_Dir (const gchar *dirname_old, const gchar *dirname_new)
+{
+ gchar *parent, *temp;
+ struct stat dirstat;
+#ifdef WIN32
+ gboolean first = TRUE;
+#endif
+
+ // Use same permissions as the old directory
+ stat(dirname_old,&dirstat);
+
+ temp = parent = g_strdup(dirname_new);
+ for (temp++;*temp;temp++)
+ {
+ if (*temp!=G_DIR_SEPARATOR)
+ continue;
+
+#ifdef WIN32
+ if (first)
+ {
+ first = FALSE;
+ continue;
+ }
+#endif
+
+ *temp=0; // To truncate temporarly dirname_new
+
+ if (mkdir(parent,dirstat.st_mode)==-1 && errno!=EEXIST)
+ {
+ g_free(parent);
+ return(-1);
+ }
+ *temp=G_DIR_SEPARATOR; // To cancel the '*temp=0;'
+ }
+ g_free(parent);
+
+ if (mkdir(dirname_new,dirstat.st_mode)==-1 && errno!=EEXIST)
+ return(-1);
+
+ return(0);
+}
+
+/*
+ * Remove old directories after renaming the file
+ * Badly coded, but works....
+ */
+gint Remove_Dir (const gchar *dirname_old, const gchar *dirname_new)
+{
+ gchar *temp_old, *temp_new;
+ gchar *temp_end_old, *temp_end_new;
+
+ temp_old = g_strdup(dirname_old);
+ temp_new = g_strdup(dirname_new);
+
+ while (temp_old && temp_new && strcmp(temp_old,temp_new)!=0 )
+ {
+ if (rmdir(temp_old)==-1)
+ {
+ if (errno!=ENOTEMPTY)
+ {
+ g_free(temp_old);
+ g_free(temp_new);
+ return(-1);
+ }else
+ {
+ break;
+ }
+ }
+
+ temp_end_old = temp_old + strlen(temp_old) - 1;
+ temp_end_new = temp_new + strlen(temp_new) - 1;
+
+ while (*temp_end_old && *temp_end_old!=G_DIR_SEPARATOR)
+ {
+ temp_end_old--;
+ }
+ *temp_end_old=0;
+ while (*temp_end_new && *temp_end_new!=G_DIR_SEPARATOR)
+ {
+ temp_end_new--;
+ }
+ *temp_end_new=0;
+ }
+ g_free(temp_old);
+ g_free(temp_new);
+
+ return(0);
+}
+
+
+/*
+ * Rename the file ETFile
+ */
+void Rename_File (ET_File *ETFile)
+{
+ FILE *file;
+ gchar *tmp_filename = NULL;
+ gchar *cur_filename = ((File_Name *)ETFile->FileNameCur->data)->value;
+ gchar *new_filename = ((File_Name *)ETFile->FileNameNew->data)->value;
+ gchar *cur_filename_utf8 = ((File_Name *)ETFile->FileNameCur->data)->value_utf8; // Filename + path
+ gchar *new_filename_utf8 = ((File_Name *)ETFile->FileNameNew->data)->value_utf8;
+ gchar *cur_basename_utf8 = g_path_get_basename(cur_filename_utf8); // Only filename
+ gchar *new_basename_utf8 = g_path_get_basename(new_filename_utf8);
+ gint fd_tmp;
+ gchar *msg;
+ gchar *dirname_cur;
+ gchar *dirname_new;
+ gchar *dirname_cur_utf8;
+ gchar *dirname_new_utf8;
+
+ msg = g_strdup_printf(_("Renaming file '%s'"),cur_filename_utf8);
+ Statusbar_Message(msg,TRUE);
+ g_free(msg);
+
+ /* We use two stages to rename file, to avoid problem with some system
+ * that doesn't allow to rename the file if only the case has changed. */
+ tmp_filename = g_strdup_printf("%s.XXXXXX",cur_filename);
+ if ( (fd_tmp = mkstemp(tmp_filename)) >= 0 )
+ {
+ close(fd_tmp);
+ unlink(tmp_filename);
+ }
+
+ // Rename to the temporary name
+ if ( rename(cur_filename,tmp_filename)!=0 ) // => rename() fails
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ /* Renaming file to the temporary filename has failed */
+ msg = g_strdup_printf(_("Can't rename file '%s'\n to \n'%s'!\n(%s)"),
+ cur_basename_utf8,new_basename_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ Statusbar_Message(_("File(s) not renamed..."),TRUE);
+ g_free(tmp_filename);
+ g_free(cur_basename_utf8);
+ g_free(new_basename_utf8);
+ return;
+ }
+
+ /* Check if the new file name already exists. Must be done after changing
+ * filename to the temporary name, else we can't detect the problem under
+ * Linux when renaming a file 'aa.mp3' to 'AA.mp3' and if the last one
+ * already exists */
+ if ( (file=fopen(new_filename,"r"))!=NULL )
+ {
+ GtkWidget *msgbox;
+
+ fclose(file);
+
+ // Restore the initial name
+ if ( rename(tmp_filename,cur_filename)!=0 ) // => rename() fails
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ /* Renaming file from the temporary filename has failed */
+ msg = g_strdup_printf(_("Can't rename file '%s'\n to \n'%s'!\n(%s)"),
+ new_basename_utf8,cur_basename_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ Statusbar_Message(_("File(s) not renamed..."),TRUE);
+ g_free(tmp_filename);
+ g_free(cur_basename_utf8);
+ g_free(new_basename_utf8);
+ return;
+ }
+
+ msg = g_strdup_printf(_("Can't rename file \n'%s'\nbecause the following "
+ "file already exists:\n'%s'"),cur_basename_utf8,new_basename_utf8);
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ Statusbar_Message(_("File(s) not renamed..."),TRUE);
+
+ g_free(new_basename_utf8);
+ g_free(cur_basename_utf8);
+ return;
+
+ }
+
+ /* If files are in different directories, we need to create the new
+ * destination directory */
+ dirname_cur = g_path_get_dirname(tmp_filename);
+ dirname_new = g_path_get_dirname(new_filename);
+
+ if (dirname_cur && dirname_new && strcmp(dirname_cur,dirname_new)) /* Need to create target directory? */
+ {
+ if (Make_Dir(dirname_cur,dirname_new))
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ /* Renaming file has failed, but we try to set the initial name */
+ rename(tmp_filename,cur_filename);
+
+ dirname_new_utf8 = filename_to_display(dirname_new);
+ msg = g_strdup_printf(_("Can't create target directory\n'%s'!\n(%s)"),
+ dirname_new_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ g_free(dirname_new_utf8);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ g_free(tmp_filename);
+ g_free(cur_basename_utf8);
+ g_free(new_basename_utf8);
+ g_free(dirname_cur);
+ g_free(dirname_new);
+ return;
+ }
+ }
+
+ /* Now, we rename the file to his final name */
+ if ( rename(tmp_filename,new_filename)==0 )
+ {
+ /* Renaming file has succeeded */
+ Log_Print(_("Renamed file '%s' to '%s'"),cur_basename_utf8,new_basename_utf8);
+
+ ETFile->FileNameCur = ETFile->FileNameNew;
+ /* Now the file was renamed, so mark his state */
+ ET_Mark_File_Name_As_Saved(ETFile);
+
+ Statusbar_Message(_("File(s) renamed..."),TRUE);
+
+ /* Remove the of directory (check automatically if it is empty) */
+ if (Remove_Dir(dirname_cur,dirname_new))
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ /* Removing directories failed */
+ dirname_cur_utf8 = filename_to_display(dirname_cur);
+ msg = g_strdup_printf(_("Can't remove old directory\n'%s'!\n(%s)"),
+ dirname_cur_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ g_free(dirname_cur_utf8);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ g_free(tmp_filename);
+ g_free(cur_basename_utf8);
+ g_free(new_basename_utf8);
+ g_free(dirname_cur);
+ g_free(dirname_new);
+ return;
+ }
+ }else if ( errno==EXDEV )
+ {
+ /* For the error "Invalid cross-device link" during renaming, when the
+ * new filename isn't on the same device of the omd filename. In this
+ * case, we need to move the file, and not only to update the hard disk
+ * index table. For example : 'renaming' /mnt/D/file.mp3 to /mnt/E/file.mp3
+ *
+ * So, we need to copy the old file to the new location, and then to
+ * deleted the old file */
+ if ( Copy_File(tmp_filename,new_filename) )
+ {
+ /* Delete the old file */
+ unlink(tmp_filename);
+
+ /* Renaming file has succeeded */
+ Log_Print(_("Moved file '%s' to '%s'"),cur_basename_utf8,new_basename_utf8);
+
+ ETFile->FileNameCur = ETFile->FileNameNew;
+ /* Now the file was renamed, so mark his state */
+ ET_Mark_File_Name_As_Saved(ETFile);
+
+ Statusbar_Message(_("File(s) moved..."),TRUE);
+
+ /* Remove the of directory (check automatically if it is empty) */
+ if (Remove_Dir(dirname_cur,dirname_new))
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ /* Removing directories failed */
+ dirname_cur_utf8 = filename_to_display(dirname_cur);
+ msg = g_strdup_printf(_("Can't remove old directory\n'%s'!\n(%s)"),
+ dirname_cur_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ g_free(dirname_cur_utf8);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ g_free(tmp_filename);
+ g_free(cur_basename_utf8);
+ g_free(new_basename_utf8);
+ g_free(dirname_cur);
+ g_free(dirname_new);
+ return;
+ }
+ }else
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ /* Moving file has failed */
+ msg = g_strdup_printf(_("Can't move file '%s'\n to \n'%s'!\n(%s)"),
+ cur_basename_utf8,new_basename_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ Statusbar_Message(_("File(s) not moved..."),TRUE);
+ }
+ }else
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+
+ /* Renaming file has failed, but we try to set the initial name */
+ rename(tmp_filename,cur_filename);
+
+ msg = g_strdup_printf(_("Can't rename file '%s'\n to \n'%s'!\n(%s)"),
+ cur_basename_utf8,new_basename_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ Statusbar_Message(_("File(s) not renamed..."),TRUE);
+ }
+ g_free(tmp_filename);
+ g_free(cur_basename_utf8);
+ g_free(new_basename_utf8);
+ g_free(dirname_cur);
+ g_free(dirname_new);
+}
+
+/*
+ * Delete the file ETFile
+ */
+gint Delete_File (ET_File *ETFile, gboolean multiple_files)
+{
+ GtkWidget *msgbox = NULL;
+ gchar *cur_filename;
+ gchar *cur_filename_utf8;
+ gchar *basename_utf8;
+ gchar *msg;
+ gint button;
+ gint stop_loop;
+
+ if (!ETFile) return FALSE;
+
+ // Filename of the file to delete
+ cur_filename = ((File_Name *)(ETFile->FileNameCur)->data)->value;
+ cur_filename_utf8 = ((File_Name *)(ETFile->FileNameCur)->data)->value_utf8;
+ basename_utf8 = g_path_get_basename(cur_filename);
+
+ /*
+ * Remove the file
+ */
+ if (CONFIRM_DELETE_FILE && !SF_HideMsgbox_Delete_File)
+ {
+ msg = g_strdup_printf(_("Do you really want to delete definitively the file\n'%s' ?"),basename_utf8);
+ if (multiple_files)
+ {
+ msgbox = msg_box_new(_("Delete File..."),msg,GTK_STOCK_DIALOG_QUESTION,
+ BUTTON_CANCEL,BUTTON_NO,BUTTON_YES,0);
+ }else
+ {
+ msgbox = msg_box_new(_("Delete File..."),msg,GTK_STOCK_DIALOG_QUESTION,
+ BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ }
+ g_free(msg);
+ SF_ButtonPressed_Delete_File = button = msg_box_run(MSG_BOX(msgbox));
+ if (msg_box_check_button_get_active(MSG_BOX(msgbox)))
+ SF_HideMsgbox_Delete_File = MSG_BOX(msgbox)->check_button_state;
+ gtk_widget_destroy(msgbox);
+ }else
+ {
+ if (SF_HideMsgbox_Delete_File)
+ button = SF_ButtonPressed_Delete_File;
+ else
+ button = BUTTON_YES;
+ }
+
+ switch(button)
+ {
+ case BUTTON_YES:
+ if (remove(cur_filename)==0)
+ {
+ msg = g_strdup_printf(_("File '%s' deleted"), basename_utf8);
+ Statusbar_Message(msg,FALSE);
+ g_free(msg);
+ g_free(basename_utf8);
+ return 1;
+ }
+ break;
+ case BUTTON_NO:
+ break;
+ case BUTTON_CANCEL:
+ case -1:
+ stop_loop = -1;
+ g_free(basename_utf8);
+ return stop_loop;
+ break;
+ }
+
+ g_free(basename_utf8);
+ return 0;
+}
+
+/*
+ * Copy a file to a new location
+ */
+gint Copy_File (gchar const *fileold, gchar const *filenew)
+{
+ FILE* fOld;
+ FILE* fNew;
+ gchar buffer[512];
+ gint NbRead;
+ struct stat statbuf;
+ struct utimbuf utimbufbuf;
+
+ if ( (fOld=fopen(fileold, "rb")) == NULL )
+ {
+ return FALSE;
+ }
+
+ if ( (fNew=fopen(filenew, "wb")) == NULL )
+ {
+ fclose(fOld);
+ return FALSE;
+ }
+
+ while ( (NbRead=fread(buffer, 1, 512, fOld)) != 0 )
+ {
+ fwrite(buffer, 1, NbRead, fNew);
+ }
+
+ fclose(fNew);
+ fclose(fOld);
+
+ // Copy properties of the old file to the new one.
+ stat(fileold,&statbuf);
+ chmod(filenew,statbuf.st_mode & (S_IRWXU|S_IRWXG|S_IRWXO));
+ chown(filenew,statbuf.st_uid,statbuf.st_gid);
+ utimbufbuf.actime = statbuf.st_atime; // Last access time
+ utimbufbuf.modtime = statbuf.st_mtime; // Last modification time
+ utime(filenew,&utimbufbuf);
+
+ return TRUE;
+}
+
+void Action_Select_Browser_Style (void)
+{
+ if (!ETCore->ETFileDisplayedList) return;
+
+ /* Save the current displayed data */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ Browser_Display_Tree_Or_Artist_Album_List();
+
+ Update_Command_Buttons_Sensivity();
+}
+
+
+
+
+
+/*
+ * Scans the specified directory: and load files into a list.
+ * If the path doesn't exist, we free the previous loaded list of files.
+ */
+#include <sys/types.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+void Read_Directory (gchar *path_real)
+{
+ DIR *dir;
+ gchar *msg;
+ gchar *tmp;
+ gchar progress_bar_text[30];
+ guint nbrfile = 0;
+ double fraction;
+ GList *FileList = NULL;
+ gint progress_bar_index = 0;
+ GtkAction *uiaction;
+ GtkWidget *TBViewMode;
+
+ if (!path_real) return;
+
+ ReadingDirectory = TRUE; /* A flag to avoid to start an other reading */
+
+ /* Initialize file list */
+ ET_Core_Free();
+ ET_Core_Initialize();
+ Update_Command_Buttons_Sensivity();
+
+ /* Initialize browser list */
+ Browser_List_Clear();
+
+ /* Clear entry boxes */
+ Clear_File_Entry_Field();
+ Clear_Header_Fields();
+ Clear_Tag_Entry_Fields();
+ gtk_label_set_text(GTK_LABEL(FileIndex),"0/0:");
+
+ TBViewMode = gtk_ui_manager_get_widget(UIManager, "/ToolBar/ViewModeToggle");
+ gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(TBViewMode),FALSE);
+ //Browser_Display_Tree_Or_Artist_Album_List(); // To show the corresponding lists...
+
+ // Set to unsensitive the Browser Area, to avoid to select an other file while loading the first one
+ Browser_Area_Set_Sensitive(FALSE);
+
+ /* Placed only here, to empty the previous list of files */
+ if ((dir=opendir(path_real)) == NULL)
+ {
+ GtkWidget *msgbox;
+ gchar *path_utf8 = filename_to_display(path_real);
+ gchar *msg;
+
+ msg = g_strdup_printf(_("Can't read directory :\n'%s'\n(%s)"),path_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ g_free(path_utf8);
+
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ ReadingDirectory = FALSE; //Allow a new reading
+ return;
+ }
+ closedir(dir);
+
+ /* Open the window to quit recursion (since 27/04/2007 : not only into recursion mode) */
+ Set_Busy_Cursor();
+ uiaction = gtk_ui_manager_get_action(UIManager, "/ToolBar/Stop");
+ g_object_set(uiaction, "sensitive", BROWSE_SUBDIR, NULL);
+ //if (BROWSE_SUBDIR)
+ Open_Quit_Recursion_Function_Window();
+
+ /* Read the directory recursively */
+ msg = g_strdup_printf(_("Search in progress..."));
+ Statusbar_Message(msg,FALSE);
+ g_free(msg);
+ // Search the supported files
+ FileList = Read_Directory_Recursively(FileList,path_real,BROWSE_SUBDIR);
+ nbrfile = g_list_length(FileList);
+
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), 0.0);
+ g_snprintf(progress_bar_text, 30, "%d/%d", 0, nbrfile);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), progress_bar_text);
+
+ // Load the supported files (Extension recognized)
+ while (FileList)
+ {
+ gchar *filename_real = FileList->data; // Contains real filenames
+ gchar *filename_utf8 = filename_to_display(filename_real);
+
+ msg = g_strdup_printf(_("File: '%s'"),filename_utf8);
+ Statusbar_Message(msg,FALSE);
+ g_free(msg);
+ g_free(filename_utf8);
+
+ // Warning: Do not free filename_real because ET_Add_File.. uses it for internal structures
+ ET_Add_File_To_File_List(filename_real);
+
+ // Update the progress bar
+ fraction = (++progress_bar_index) / (double) nbrfile;
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), fraction);
+ g_snprintf(progress_bar_text, 30, "%d/%d", progress_bar_index, nbrfile);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), progress_bar_text);
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ if ( !FileList->next || (Main_Stop_Button_Pressed==1) ) break;
+ FileList = FileList->next;
+ }
+ if (FileList) g_list_free(FileList);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressBar), "");
+
+ /* Close window to quit recursion */
+ Destroy_Quit_Recursion_Function_Window();
+ Main_Stop_Button_Pressed = 0;
+ uiaction = gtk_ui_manager_get_action(UIManager, "/ToolBar/Stop");
+ g_object_set(uiaction, "sensitive", FALSE, NULL);
+
+ //ET_Debug_Print_File_List(ETCore->ETFileList,__FILE__,__LINE__,__FUNCTION__);
+
+ if (ETCore->ETFileList)
+ {
+ //GList *etfilelist;
+ /* Load the list of file into the browser list widget */
+ Browser_Display_Tree_Or_Artist_Album_List();
+
+ /* Load the list attached to the TrackEntry */
+ Load_Track_List_To_UI();
+
+ /* Display the first file */
+ //No need to select first item, because Browser_Display_Tree_Or_Artist_Album_List() does this
+ //etfilelist = ET_Displayed_File_List_First();
+ //if (etfilelist)
+ //{
+ // ET_Display_File_Data_To_UI((ET_File *)etfilelist->data);
+ // Browser_List_Select_File_By_Etfile((ET_File *)etfilelist->data,FALSE);
+ //}
+
+ /* Prepare message for the status bar */
+ if (BROWSE_SUBDIR)
+ msg = g_strdup_printf(_("Found %d file(s) in this directory and subdirectories."),ETCore->ETFileDisplayedList_Length);
+ else
+ msg = g_strdup_printf(_("Found %d file(s) in this directory."),ETCore->ETFileDisplayedList_Length);
+
+ }else
+ {
+ /* Clear entry boxes */
+ Clear_File_Entry_Field();
+ Clear_Header_Fields();
+ Clear_Tag_Entry_Fields();
+
+ if (FileIndex)
+ gtk_label_set_text(GTK_LABEL(FileIndex),"0/0:");
+
+
+ tmp = g_strdup_printf(_("%u file(s)"),0); // See in ET_Display_Filename_To_UI
+ Browser_Label_Set_Text(tmp);
+ g_free(tmp);
+
+ /* Prepare message for the status bar */
+ if (BROWSE_SUBDIR)
+ msg = g_strdup(_("No file found in this directory and subdirectories!"));
+ else
+ msg = g_strdup(_("No file found in this directory!"));
+ }
+
+ /* Update sensitivity of buttons and menus */
+ Update_Command_Buttons_Sensivity();
+
+ Browser_Area_Set_Sensitive(TRUE);
+
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressBar), 0.0);
+ Statusbar_Message(msg,FALSE);
+ g_free(msg);
+ Set_Unbusy_Cursor();
+ ReadingDirectory = FALSE;
+}
+
+
+
+/*
+ * Recurse the path to create a list of files. Return a GList of the files found.
+ */
+GList *Read_Directory_Recursively (GList *file_list, gchar *path_real, gint recurse)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ struct stat statbuf;
+ gchar *filename;
+
+ if ((dir = opendir(path_real)) == NULL)
+ return file_list;
+
+ while ((dirent = readdir(dir)) != NULL)
+ {
+ if (Main_Stop_Button_Pressed == 1)
+ {
+ closedir(dir);
+ return file_list;
+ }
+
+ // We don't read the directories '.' and '..', but may read hidden directories like '.mydir'
+ if ( (g_ascii_strcasecmp (dirent->d_name,"..") != 0)
+ && ((g_ascii_strncasecmp(dirent->d_name,".", 1) != 0) || (BROWSE_HIDDEN_DIR && strlen(dirent->d_name) > 1)) )
+ {
+ if (path_real[strlen(path_real)-1]!=G_DIR_SEPARATOR)
+ filename = g_strconcat(path_real,G_DIR_SEPARATOR_S,dirent->d_name,NULL);
+ else
+ filename = g_strconcat(path_real,dirent->d_name,NULL);
+
+ if (lstat(filename, &statbuf) == -1)
+ {
+ g_free(filename);
+ continue;
+ }
+
+ if (S_ISDIR(statbuf.st_mode))
+ {
+ if (recurse)
+ file_list = Read_Directory_Recursively(file_list,filename,recurse);
+ //}else if ( (S_ISREG(statbuf.st_mode) || S_ISLNK(statbuf.st_mode)) && ET_File_Is_Supported(filename))
+ }else if ( S_ISREG(statbuf.st_mode) && ET_File_Is_Supported(filename))
+ {
+ file_list = g_list_append(file_list,g_strdup(filename));
+ }
+ g_free(filename);
+
+ // Just to not block X events
+ while (gtk_events_pending())
+ gtk_main_iteration();
+ }
+ }
+
+ closedir(dir);
+ return file_list;
+}
+
+
+/*
+ * Window with the 'STOP' button to stop recursion when reading directories
+ */
+void Open_Quit_Recursion_Function_Window (void)
+{
+ GtkWidget *button;
+ GtkWidget *frame;
+
+ if (QuitRecursionWindow != NULL)
+ return;
+ QuitRecursionWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(QuitRecursionWindow),_("Searching..."));
+ gtk_window_set_transient_for(GTK_WINDOW(QuitRecursionWindow),GTK_WINDOW(MainWindow));
+ //gtk_window_set_policy(GTK_WINDOW(QuitRecursionWindow),FALSE,FALSE,TRUE);
+
+ // Just center on mainwindow
+ gtk_window_set_position(GTK_WINDOW(QuitRecursionWindow), GTK_WIN_POS_CENTER_ON_PARENT);
+
+ g_signal_connect(G_OBJECT(QuitRecursionWindow),"destroy",
+ G_CALLBACK(Quit_Recursion_Function_Button_Pressed),NULL);
+ g_signal_connect(G_OBJECT(QuitRecursionWindow),"delete_event",
+ G_CALLBACK(Quit_Recursion_Function_Button_Pressed),NULL);
+ g_signal_connect(G_OBJECT(QuitRecursionWindow),"key_press_event",
+ G_CALLBACK(Quit_Recursion_Window_Key_Press),NULL);
+
+ frame = gtk_frame_new(NULL);
+ gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_IN);
+ gtk_container_add(GTK_CONTAINER(QuitRecursionWindow),frame);
+ gtk_container_set_border_width(GTK_CONTAINER(frame),2);
+
+ // Button to stop...
+ button = Create_Button_With_Icon_And_Label(GTK_STOCK_STOP,_(" STOP the search... "));
+ gtk_container_set_border_width(GTK_CONTAINER(button),8);
+ gtk_container_add(GTK_CONTAINER(frame),button);
+ g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(Quit_Recursion_Function_Button_Pressed),NULL);
+
+ gtk_widget_show_all(QuitRecursionWindow);
+}
+void Destroy_Quit_Recursion_Function_Window (void)
+{
+ if (QuitRecursionWindow)
+ {
+ gtk_widget_destroy(QuitRecursionWindow);
+ QuitRecursionWindow = (GtkWidget *)NULL;
+ /*Statusbar_Message(_("Recursive file search interrupted."),FALSE);*/
+ }
+}
+void Quit_Recursion_Function_Button_Pressed (void)
+{
+ Action_Main_Stop_Button_Pressed();
+ Destroy_Quit_Recursion_Function_Window();
+}
+void Quit_Recursion_Window_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ Destroy_Quit_Recursion_Function_Window();
+ break;
+ }
+ }
+}
+
+
+/*
+ * To stop the recursive search within directories or saving files
+ */
+void Action_Main_Stop_Button_Pressed (void)
+{
+ GtkAction *uiaction;
+ Main_Stop_Button_Pressed = 1;
+ uiaction = gtk_ui_manager_get_action(UIManager, "/ToolBar/Stop");
+ g_object_set(uiaction, "sensitive", FALSE, NULL);
+}
+
+void ui_widget_set_sensitive (const gchar *menu, const gchar *action, gboolean sensitive)
+{
+ GtkAction *uiaction;
+ gchar *path;
+
+ path = g_strconcat("/MenuBar/", menu,"/", action, NULL);
+
+ uiaction = gtk_ui_manager_get_action(UIManager, path);
+ if (uiaction)
+ g_object_set(uiaction, "sensitive", sensitive, NULL);
+ g_free(path);
+}
+
+/*
+ * Update_Command_Buttons_Sensivity: Set to sensitive/unsensitive the state of each button into
+ * the commands area and menu items in function of state of the "main list".
+ */
+void Update_Command_Buttons_Sensivity (void)
+{
+ GtkAction *uiaction;
+
+ if (!ETCore->ETFileDisplayedList)
+ {
+ /* No file found */
+
+ /* File and Tag frames */
+ File_Area_Set_Sensitive(FALSE);
+ Tag_Area_Set_Sensitive(FALSE);
+
+ /* Tool bar buttons (the others are covered by the menu) */
+ uiaction = gtk_ui_manager_get_action(UIManager, "/ToolBar/Stop");
+ g_object_set(uiaction, "sensitive", FALSE, NULL);
+
+ /* Scanner Window */
+ if (SWScanButton)
+ gtk_widget_set_sensitive(GTK_WIDGET(SWScanButton),FALSE);
+
+ /* Menu commands */
+ ui_widget_set_sensitive(MENU_FILE, AM_OPEN_FILE_WITH, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_SELECT_ALL_FILES, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_UNSELECT_ALL_FILES, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_INVERT_SELECTION, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_DELETE_FILE, FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_ASCENDING_FILENAME, FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_DESCENDING_FILENAME,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_ASCENDING_CREATION_DATE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_DESCENDING_CREATION_DATE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_ASCENDING_TRACK_NUMBER,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_DESCENDING_TRACK_NUMBER,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_ASCENDING_TITLE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_DESCENDING_TITLE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_ASCENDING_ARTIST,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_DESCENDING_ARTIST,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_ASCENDING_ALBUM,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_DESCENDING_ALBUM,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_ASCENDING_YEAR,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_DESCENDING_YEAR,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_ASCENDING_GENRE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_DESCENDING_GENRE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_ASCENDING_COMMENT,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH, AM_SORT_DESCENDING_COMMENT,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_ASCENDING_FILE_TYPE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_DESCENDING_FILE_TYPE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_ASCENDING_FILE_SIZE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_DESCENDING_FILE_SIZE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_ASCENDING_FILE_DURATION,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_DESCENDING_FILE_DURATION,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_ASCENDING_FILE_BITRATE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_DESCENDING_FILE_BITRATE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_ASCENDING_FILE_SAMPLERATE,FALSE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH, AM_SORT_DESCENDING_FILE_SAMPLERATE,FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_PREV, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_NEXT, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_FIRST, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_LAST, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_SCAN, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_REMOVE, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_UNDO, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_REDO, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_SAVE, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_SAVE_FORCED, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_UNDO_HISTORY, FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_REDO_HISTORY, FALSE);
+ ui_widget_set_sensitive(MENU_MISC, AM_SEARCH_FILE, FALSE);
+ ui_widget_set_sensitive(MENU_MISC, AM_FILENAME_FROM_TXT, FALSE);
+ ui_widget_set_sensitive(MENU_MISC, AM_WRITE_PLAYLIST, FALSE);
+ ui_widget_set_sensitive(MENU_MISC, AM_RUN_AUDIO_PLAYER, FALSE);
+ ui_widget_set_sensitive(MENU_SCANNER, AM_SCANNER_FILL_TAG, FALSE);
+ ui_widget_set_sensitive(MENU_SCANNER, AM_SCANNER_RENAME_FILE, FALSE);
+ ui_widget_set_sensitive(MENU_SCANNER, AM_SCANNER_PROCESS_FIELDS, FALSE);
+
+ return;
+ }else
+ {
+ GList *selfilelist = NULL;
+ ET_File *etfile;
+ gboolean has_undo = FALSE;
+ gboolean has_redo = FALSE;
+ GtkTreeSelection *selection;
+
+ /* File and Tag frames */
+ File_Area_Set_Sensitive(TRUE);
+ Tag_Area_Set_Sensitive(TRUE);
+
+ /* Tool bar buttons */
+ uiaction = gtk_ui_manager_get_action(UIManager, "/ToolBar/Stop");
+ g_object_set(uiaction, "sensitive", FALSE, NULL);
+
+ /* Scanner Window */
+ if (SWScanButton) gtk_widget_set_sensitive(GTK_WIDGET(SWScanButton),TRUE);
+
+ /* Commands into menu */
+ ui_widget_set_sensitive(MENU_FILE, AM_OPEN_FILE_WITH,TRUE);
+ ui_widget_set_sensitive(MENU_FILE, AM_SELECT_ALL_FILES,TRUE);
+ ui_widget_set_sensitive(MENU_FILE, AM_UNSELECT_ALL_FILES,TRUE);
+ ui_widget_set_sensitive(MENU_FILE, AM_INVERT_SELECTION,TRUE);
+ ui_widget_set_sensitive(MENU_FILE, AM_DELETE_FILE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_ASCENDING_FILENAME,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_FILENAME,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_ASCENDING_CREATION_DATE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_CREATION_DATE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_ASCENDING_TRACK_NUMBER,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_DESCENDING_TRACK_NUMBER,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_ASCENDING_TITLE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_DESCENDING_TITLE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_ASCENDING_ARTIST,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_DESCENDING_ARTIST,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_ASCENDING_ALBUM,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_DESCENDING_ALBUM,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_ASCENDING_YEAR,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_DESCENDING_YEAR,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_ASCENDING_GENRE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_DESCENDING_GENRE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_ASCENDING_COMMENT,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_TAG_PATH,AM_SORT_DESCENDING_COMMENT,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_ASCENDING_FILE_TYPE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_FILE_TYPE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_ASCENDING_FILE_SIZE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_FILE_SIZE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_ASCENDING_FILE_DURATION,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_FILE_DURATION,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_ASCENDING_FILE_BITRATE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_FILE_BITRATE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_ASCENDING_FILE_SAMPLERATE,TRUE);
+ ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_FILE_SAMPLERATE,TRUE);
+ ui_widget_set_sensitive(MENU_FILE,AM_SCAN,TRUE);
+ ui_widget_set_sensitive(MENU_FILE,AM_REMOVE,TRUE);
+ ui_widget_set_sensitive(MENU_MISC,AM_SEARCH_FILE,TRUE);
+ ui_widget_set_sensitive(MENU_MISC,AM_FILENAME_FROM_TXT,TRUE);
+ ui_widget_set_sensitive(MENU_MISC,AM_WRITE_PLAYLIST,TRUE);
+ ui_widget_set_sensitive(MENU_MISC,AM_RUN_AUDIO_PLAYER,TRUE);
+ ui_widget_set_sensitive(MENU_SCANNER,AM_SCANNER_FILL_TAG,TRUE);
+ ui_widget_set_sensitive(MENU_SCANNER,AM_SCANNER_RENAME_FILE,TRUE);
+ ui_widget_set_sensitive(MENU_SCANNER,AM_SCANNER_PROCESS_FIELDS,TRUE);
+
+ /* Check if one of the selected files has undo or redo data */
+ if (BrowserList)
+ {
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ while (selfilelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selfilelist->data);
+ has_undo |= ET_File_Data_Has_Undo_Data(etfile);
+ has_redo |= ET_File_Data_Has_Redo_Data(etfile);
+ //has_to_save |= ET_Check_If_File_Is_Saved((ET_File *)etfilelist->data);
+ if ((has_undo && has_redo) || !selfilelist->next) // Useless to check the other files
+ break;
+ selfilelist = g_list_next(selfilelist);
+ }
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+ }
+
+ /* Enable undo commands if there are undo data */
+ if (has_undo)
+ ui_widget_set_sensitive(MENU_FILE, AM_UNDO, TRUE);
+ else
+ ui_widget_set_sensitive(MENU_FILE, AM_UNDO, FALSE);
+
+ /* Enable redo commands if there are redo data */
+ if (has_redo)
+ ui_widget_set_sensitive(MENU_FILE, AM_REDO, TRUE);
+ else
+ ui_widget_set_sensitive(MENU_FILE, AM_REDO, FALSE);
+
+ /* Enable save file command if file has been changed */
+ // Desactivated because problem with only one file in the list
+ //if (has_to_save)
+ //{
+ // gtk_widget_set_sensitive(TBSaveButton,FALSE);
+ // ui_widget_set_sensitive(AM_SAVE,FALSE);
+ //}else
+ //{
+ ui_widget_set_sensitive(MENU_FILE, AM_SAVE, TRUE);
+ //}
+ ui_widget_set_sensitive(MENU_FILE, AM_SAVE_FORCED, TRUE);
+
+ /* Enable undo command if there are data into main undo list (history list) */
+ if (ET_History_File_List_Has_Undo_Data())
+ ui_widget_set_sensitive(MENU_FILE, AM_UNDO_HISTORY, TRUE);
+ else
+ ui_widget_set_sensitive(MENU_FILE, AM_UNDO_HISTORY, FALSE);
+
+ /* Enable redo commands if there are data into main redo list (history list) */
+ if (ET_History_File_List_Has_Redo_Data())
+ ui_widget_set_sensitive(MENU_FILE, AM_REDO_HISTORY, TRUE);
+ else
+ ui_widget_set_sensitive(MENU_FILE, AM_REDO_HISTORY, FALSE);
+ }
+
+ if (!ETCore->ETFileDisplayedList->prev) /* Is it the 1st item ? */
+ {
+ ui_widget_set_sensitive(MENU_FILE, AM_PREV,FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_FIRST,FALSE);
+ }else
+ {
+ ui_widget_set_sensitive(MENU_FILE, AM_PREV,TRUE);
+ ui_widget_set_sensitive(MENU_FILE, AM_FIRST,TRUE);
+ }
+ if (!ETCore->ETFileDisplayedList->next) /* Is it the last item ? */
+ {
+ ui_widget_set_sensitive(MENU_FILE, AM_NEXT,FALSE);
+ ui_widget_set_sensitive(MENU_FILE, AM_LAST,FALSE);
+ }else
+ {
+ ui_widget_set_sensitive(MENU_FILE, AM_NEXT,TRUE);
+ ui_widget_set_sensitive(MENU_FILE, AM_LAST,TRUE);
+ }
+}
+
+/*
+ * Just to disable buttons when we are saving files (do not disable Quit button)
+ */
+void Disable_Command_Buttons (void)
+{
+ /* Scanner Window */
+ if (SWScanButton)
+ gtk_widget_set_sensitive(SWScanButton,FALSE);
+
+ /* "File" menu commands */
+ ui_widget_set_sensitive(MENU_FILE,AM_OPEN_FILE_WITH,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_SELECT_ALL_FILES,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_UNSELECT_ALL_FILES,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_INVERT_SELECTION,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_DELETE_FILE,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_FIRST,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_PREV,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_NEXT,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_LAST,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_SCAN,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_REMOVE,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_UNDO,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_REDO,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_SAVE,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_SAVE_FORCED,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_UNDO_HISTORY,FALSE);
+ ui_widget_set_sensitive(MENU_FILE,AM_REDO_HISTORY,FALSE);
+
+ /* "Scanner" menu commands */
+ ui_widget_set_sensitive(MENU_SCANNER,AM_SCANNER_FILL_TAG,FALSE);
+ ui_widget_set_sensitive(MENU_SCANNER,AM_SCANNER_RENAME_FILE,FALSE);
+ ui_widget_set_sensitive(MENU_SCANNER,AM_SCANNER_PROCESS_FIELDS,FALSE);
+
+}
+
+/*
+ * Disable (FALSE) / Enable (TRUE) all user widgets in the tag area
+ */
+void Tag_Area_Set_Sensitive (gboolean activate)
+{
+ if (!TagArea) return;
+
+ // TAG Area (entries + buttons)
+ gtk_widget_set_sensitive(GTK_BIN(TagArea)->child,activate);
+
+ /*// TAG Area
+ gtk_widget_set_sensitive(GTK_WIDGET(TitleEntry), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(ArtistEntry), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(AlbumEntry), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(DiscNumberEntry), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(YearEntry), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(TrackEntryCombo), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(TrackTotalEntry), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(CommentEntry), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(GenreCombo), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(PictureScrollWindow), activate);
+ // Mini buttons
+ gtk_widget_set_sensitive(GTK_WIDGET(TitleMButton), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(ArtistMButton), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(DiscNumberMButton), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(AlbumMButton), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(YearMButton), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(TrackMButton), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(TrackMButtonSequence), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(TrackMButtonNbrFiles), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(CommentMButton), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(GenreMButton), activate);
+ gtk_widget_set_sensitive(GTK_WIDGET(PictureMButton), activate);*/
+}
+
+/*
+ * Disable (FALSE) / Enable (TRUE) all user widgets in the file area
+ */
+void File_Area_Set_Sensitive (gboolean activate)
+{
+ if (!FileArea) return;
+
+ // File Area
+ gtk_widget_set_sensitive(GTK_BIN(FileArea)->child,activate);
+ /*gtk_widget_set_sensitive(GTK_WIDGET(FileEntry),activate);*/
+}
+
+/*
+ * Display controls according the kind of tag... (Hide some controls if not available for a tag type)
+ */
+void Tag_Area_Display_Controls (ET_File *ETFile)
+{
+ if (!ETFile || !ETFile->ETFileDescription || !TitleLabel)
+ return;
+
+ // Commun controls for all tags
+ gtk_widget_show(GTK_WIDGET(TitleLabel));
+ gtk_widget_show(GTK_WIDGET(TitleEntry));
+ gtk_widget_show(GTK_WIDGET(TitleMButton));
+ gtk_widget_show(GTK_WIDGET(ArtistLabel));
+ gtk_widget_show(GTK_WIDGET(ArtistEntry));
+ gtk_widget_show(GTK_WIDGET(ArtistMButton));
+ gtk_widget_show(GTK_WIDGET(AlbumLabel));
+ gtk_widget_show(GTK_WIDGET(AlbumEntry));
+ gtk_widget_show(GTK_WIDGET(AlbumMButton));
+ gtk_widget_show(GTK_WIDGET(YearLabel));
+ gtk_widget_show(GTK_WIDGET(YearEntry));
+ gtk_widget_show(GTK_WIDGET(YearMButton));
+ gtk_widget_show(GTK_WIDGET(TrackLabel));
+ gtk_widget_show(GTK_WIDGET(TrackEntryCombo));
+ gtk_widget_show(GTK_WIDGET(TrackTotalEntry));
+ gtk_widget_show(GTK_WIDGET(TrackMButton));
+ gtk_widget_show(GTK_WIDGET(TrackMButtonSequence));
+ gtk_widget_show(GTK_WIDGET(TrackMButtonNbrFiles));
+ gtk_widget_show(GTK_WIDGET(GenreLabel));
+ gtk_widget_show(GTK_WIDGET(GenreCombo));
+ gtk_widget_show(GTK_WIDGET(GenreMButton));
+ gtk_widget_show(GTK_WIDGET(CommentLabel));
+ gtk_widget_show(GTK_WIDGET(CommentEntry));
+ gtk_widget_show(GTK_WIDGET(CommentMButton));
+
+ // Special controls to display or not!
+ switch (ETFile->ETFileDescription->TagType)
+ {
+ case ID3_TAG:
+ if (!FILE_WRITING_ID3V2_WRITE_TAG)
+ {
+ // ID3v1 : Hide specifics ID3v2 fields if not activated!
+ gtk_widget_hide(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_hide(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_hide(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_hide(GTK_WIDGET(ComposerLabel));
+ gtk_widget_hide(GTK_WIDGET(ComposerEntry));
+ gtk_widget_hide(GTK_WIDGET(ComposerMButton));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistLabel));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistEntry));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistMButton));
+ gtk_widget_hide(GTK_WIDGET(CopyrightLabel));
+ gtk_widget_hide(GTK_WIDGET(CopyrightEntry));
+ gtk_widget_hide(GTK_WIDGET(CopyrightMButton));
+ gtk_widget_hide(GTK_WIDGET(URLLabel));
+ gtk_widget_hide(GTK_WIDGET(URLEntry));
+ gtk_widget_hide(GTK_WIDGET(URLMButton));
+ gtk_widget_hide(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_hide(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_hide(GTK_WIDGET(EncodedByMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureLabel));
+ gtk_widget_hide(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_hide(GTK_WIDGET(PictureMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureClearButton));
+ gtk_widget_hide(GTK_WIDGET(PictureAddButton));
+ gtk_widget_hide(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_hide(GTK_WIDGET(PicturePropertiesButton));
+ }else
+ {
+ gtk_widget_show(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_show(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_show(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_show(GTK_WIDGET(ComposerLabel));
+ gtk_widget_show(GTK_WIDGET(ComposerEntry));
+ gtk_widget_show(GTK_WIDGET(ComposerMButton));
+ gtk_widget_show(GTK_WIDGET(OrigArtistLabel));
+ gtk_widget_show(GTK_WIDGET(OrigArtistEntry));
+ gtk_widget_show(GTK_WIDGET(OrigArtistMButton));
+ gtk_widget_show(GTK_WIDGET(CopyrightLabel));
+ gtk_widget_show(GTK_WIDGET(CopyrightEntry));
+ gtk_widget_show(GTK_WIDGET(CopyrightMButton));
+ gtk_widget_show(GTK_WIDGET(URLLabel));
+ gtk_widget_show(GTK_WIDGET(URLEntry));
+ gtk_widget_show(GTK_WIDGET(URLMButton));
+ gtk_widget_show(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_show(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_show(GTK_WIDGET(EncodedByMButton));
+ gtk_widget_show(GTK_WIDGET(PictureLabel));
+ gtk_widget_show(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_show(GTK_WIDGET(PictureMButton));
+ gtk_widget_show(GTK_WIDGET(PictureClearButton));
+ gtk_widget_show(GTK_WIDGET(PictureAddButton));
+ gtk_widget_show(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_show(GTK_WIDGET(PicturePropertiesButton));
+ }
+ break;
+
+#ifdef ENABLE_OGG
+ case OGG_TAG:
+ gtk_widget_show(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_show(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_show(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_show(GTK_WIDGET(ComposerLabel));
+ gtk_widget_show(GTK_WIDGET(ComposerEntry));
+ gtk_widget_show(GTK_WIDGET(ComposerMButton));
+ gtk_widget_show(GTK_WIDGET(OrigArtistLabel));
+ gtk_widget_show(GTK_WIDGET(OrigArtistEntry));
+ gtk_widget_show(GTK_WIDGET(OrigArtistMButton));
+ gtk_widget_show(GTK_WIDGET(CopyrightLabel));
+ gtk_widget_show(GTK_WIDGET(CopyrightEntry));
+ gtk_widget_show(GTK_WIDGET(CopyrightMButton));
+ gtk_widget_show(GTK_WIDGET(URLLabel));
+ gtk_widget_show(GTK_WIDGET(URLEntry));
+ gtk_widget_show(GTK_WIDGET(URLMButton));
+ gtk_widget_show(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_show(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_show(GTK_WIDGET(EncodedByMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureLabel));
+ gtk_widget_hide(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_hide(GTK_WIDGET(PictureMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureClearButton));
+ gtk_widget_hide(GTK_WIDGET(PictureAddButton));
+ gtk_widget_hide(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_hide(GTK_WIDGET(PicturePropertiesButton));
+ break;
+#endif
+
+#ifdef ENABLE_FLAC
+ case FLAC_TAG:
+ gtk_widget_show(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_show(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_show(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_show(GTK_WIDGET(ComposerLabel));
+ gtk_widget_show(GTK_WIDGET(ComposerEntry));
+ gtk_widget_show(GTK_WIDGET(ComposerMButton));
+ gtk_widget_show(GTK_WIDGET(OrigArtistLabel));
+ gtk_widget_show(GTK_WIDGET(OrigArtistEntry));
+ gtk_widget_show(GTK_WIDGET(OrigArtistMButton));
+ gtk_widget_show(GTK_WIDGET(CopyrightLabel));
+ gtk_widget_show(GTK_WIDGET(CopyrightEntry));
+ gtk_widget_show(GTK_WIDGET(CopyrightMButton));
+ gtk_widget_show(GTK_WIDGET(URLLabel));
+ gtk_widget_show(GTK_WIDGET(URLEntry));
+ gtk_widget_show(GTK_WIDGET(URLMButton));
+ gtk_widget_show(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_show(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_show(GTK_WIDGET(EncodedByMButton));
+ if (WRITE_ID3_TAGS_IN_FLAC_FILE)
+ {
+ gtk_widget_show(GTK_WIDGET(PictureLabel));
+ gtk_widget_show(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_show(GTK_WIDGET(PictureMButton));
+ gtk_widget_show(GTK_WIDGET(PictureClearButton));
+ gtk_widget_show(GTK_WIDGET(PictureAddButton));
+ gtk_widget_show(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_show(GTK_WIDGET(PicturePropertiesButton));
+ }else
+ {
+ gtk_widget_hide(GTK_WIDGET(PictureLabel));
+ gtk_widget_hide(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_hide(GTK_WIDGET(PictureMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureClearButton));
+ gtk_widget_hide(GTK_WIDGET(PictureAddButton));
+ gtk_widget_hide(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_hide(GTK_WIDGET(PicturePropertiesButton));
+ }
+ break;
+#endif
+
+ case APE_TAG:
+ gtk_widget_show(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_show(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_show(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_show(GTK_WIDGET(ComposerLabel));
+ gtk_widget_show(GTK_WIDGET(ComposerEntry));
+ gtk_widget_show(GTK_WIDGET(ComposerMButton));
+ gtk_widget_show(GTK_WIDGET(OrigArtistLabel));
+ gtk_widget_show(GTK_WIDGET(OrigArtistEntry));
+ gtk_widget_show(GTK_WIDGET(OrigArtistMButton));
+ gtk_widget_show(GTK_WIDGET(CopyrightLabel));
+ gtk_widget_show(GTK_WIDGET(CopyrightEntry));
+ gtk_widget_show(GTK_WIDGET(CopyrightMButton));
+ gtk_widget_show(GTK_WIDGET(URLLabel));
+ gtk_widget_show(GTK_WIDGET(URLEntry));
+ gtk_widget_show(GTK_WIDGET(URLMButton));
+ gtk_widget_show(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_show(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_show(GTK_WIDGET(EncodedByMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureLabel));
+ gtk_widget_hide(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_hide(GTK_WIDGET(PictureMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureClearButton));
+ gtk_widget_hide(GTK_WIDGET(PictureAddButton));
+ gtk_widget_hide(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_hide(GTK_WIDGET(PicturePropertiesButton));
+ break;
+
+#ifdef ENABLE_MP4
+ case MP4_TAG:
+ gtk_widget_show(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_show(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_show(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_show(GTK_WIDGET(ComposerLabel));
+ gtk_widget_show(GTK_WIDGET(ComposerEntry));
+ gtk_widget_show(GTK_WIDGET(ComposerMButton));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistLabel));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistEntry));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistMButton));
+ gtk_widget_hide(GTK_WIDGET(CopyrightLabel));
+ gtk_widget_hide(GTK_WIDGET(CopyrightEntry));
+ gtk_widget_hide(GTK_WIDGET(CopyrightMButton));
+ gtk_widget_hide(GTK_WIDGET(URLLabel));
+ gtk_widget_hide(GTK_WIDGET(URLEntry));
+ gtk_widget_hide(GTK_WIDGET(URLMButton));
+ gtk_widget_show(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_show(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_show(GTK_WIDGET(EncodedByMButton));
+ gtk_widget_show(GTK_WIDGET(PictureLabel));
+ gtk_widget_show(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_show(GTK_WIDGET(PictureMButton));
+ gtk_widget_show(GTK_WIDGET(PictureClearButton));
+ gtk_widget_show(GTK_WIDGET(PictureAddButton));
+ gtk_widget_show(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_show(GTK_WIDGET(PicturePropertiesButton));
+ break;
+#endif
+
+#ifdef ENABLE_WAVPACK
+ case WAVPACK_TAG:
+ gtk_widget_show(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_show(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_show(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_show(GTK_WIDGET(ComposerLabel));
+ gtk_widget_show(GTK_WIDGET(ComposerEntry));
+ gtk_widget_show(GTK_WIDGET(ComposerMButton));
+ gtk_widget_show(GTK_WIDGET(OrigArtistLabel));
+ gtk_widget_show(GTK_WIDGET(OrigArtistEntry));
+ gtk_widget_show(GTK_WIDGET(OrigArtistMButton));
+ gtk_widget_show(GTK_WIDGET(CopyrightLabel));
+ gtk_widget_show(GTK_WIDGET(CopyrightEntry));
+ gtk_widget_show(GTK_WIDGET(CopyrightMButton));
+ gtk_widget_show(GTK_WIDGET(URLLabel));
+ gtk_widget_show(GTK_WIDGET(URLEntry));
+ gtk_widget_show(GTK_WIDGET(URLMButton));
+ gtk_widget_show(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_show(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_show(GTK_WIDGET(EncodedByMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureLabel));
+ gtk_widget_hide(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_hide(GTK_WIDGET(PictureMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureClearButton));
+ gtk_widget_hide(GTK_WIDGET(PictureAddButton));
+ gtk_widget_hide(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_hide(GTK_WIDGET(PicturePropertiesButton));
+ break;
+#endif /* ENABLE_WAVPACK */
+
+ case UNKNOWN_TAG:
+ default:
+ gtk_widget_hide(GTK_WIDGET(DiscNumberLabel));
+ gtk_widget_hide(GTK_WIDGET(DiscNumberEntry));
+ gtk_widget_hide(GTK_WIDGET(DiscNumberMButton));
+ gtk_widget_hide(GTK_WIDGET(ComposerLabel));
+ gtk_widget_hide(GTK_WIDGET(ComposerEntry));
+ gtk_widget_hide(GTK_WIDGET(ComposerMButton));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistLabel));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistEntry));
+ gtk_widget_hide(GTK_WIDGET(OrigArtistMButton));
+ gtk_widget_hide(GTK_WIDGET(CopyrightLabel));
+ gtk_widget_hide(GTK_WIDGET(CopyrightEntry));
+ gtk_widget_hide(GTK_WIDGET(CopyrightMButton));
+ gtk_widget_hide(GTK_WIDGET(URLLabel));
+ gtk_widget_hide(GTK_WIDGET(URLEntry));
+ gtk_widget_hide(GTK_WIDGET(URLMButton));
+ gtk_widget_hide(GTK_WIDGET(EncodedByLabel));
+ gtk_widget_hide(GTK_WIDGET(EncodedByEntry));
+ gtk_widget_hide(GTK_WIDGET(EncodedByMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureLabel));
+ gtk_widget_hide(GTK_WIDGET(PictureScrollWindow));
+ gtk_widget_hide(GTK_WIDGET(PictureMButton));
+ gtk_widget_hide(GTK_WIDGET(PictureClearButton));
+ gtk_widget_hide(GTK_WIDGET(PictureAddButton));
+ gtk_widget_hide(GTK_WIDGET(PictureSaveButton));
+ gtk_widget_hide(GTK_WIDGET(PicturePropertiesButton));
+ break;
+ }
+}
+
+
+/*
+ * Clear the entries of tag area
+ */
+void Clear_Tag_Entry_Fields (void)
+{
+ //GtkTextBuffer *textbuffer;
+
+ if (!TitleEntry) return;
+
+ gtk_entry_set_text(GTK_ENTRY(TitleEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(ArtistEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(AlbumEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(DiscNumberEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(YearEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child), "");
+ gtk_entry_set_text(GTK_ENTRY(TrackTotalEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(GenreCombo)->child), "");
+ gtk_entry_set_text(GTK_ENTRY(CommentEntry), "");
+ //textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(CommentView));
+ //gtk_text_buffer_set_text(GTK_TEXT_BUFFER(textbuffer), "", -1);
+ gtk_entry_set_text(GTK_ENTRY(ComposerEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(OrigArtistEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(CopyrightEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(URLEntry), "");
+ gtk_entry_set_text(GTK_ENTRY(EncodedByEntry), "");
+ PictureEntry_Clear();
+}
+
+
+/*
+ * Clear the entry of file area
+ */
+void Clear_File_Entry_Field (void)
+{
+ if (!FileEntry) return;
+
+ gtk_entry_set_text(GTK_ENTRY(FileEntry),"");
+}
+
+
+/*
+ * Clear the header informations
+ */
+void Clear_Header_Fields (void)
+{
+ if (!VersionValueLabel) return;
+
+ /* Default values are MPs data */
+ gtk_label_set_text(GTK_LABEL(VersionLabel), _("MPEG"));
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel), _("?, Layer ?"));
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel), _("? kb/s"));
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),_("? Hz"));
+ gtk_label_set_text(GTK_LABEL(ModeLabel), _("Mode:"));
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel), _("?"));
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel), _("?"));
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel), _("?"));
+}
+
+
+
+
+/*
+ * Load the default directory when the user interface is completely displayed
+ * to avoid bad visualization effect at startup.
+ */
+void Init_Load_Default_Dir (void)
+{
+ //ETCore->ETFileList = (GList *)NULL;
+ ET_Core_Free();
+ ET_Core_Initialize();
+
+ // Open the scanner window
+ if (OPEN_SCANNER_WINDOW_ON_STARTUP)
+ Open_ScannerWindow(SCANNER_TYPE); // Open the last selected scanner
+
+ Statusbar_Message(_("Select a directory to browse!"),FALSE);
+ if (INIT_DIRECTORY)
+ {
+ Browser_Tree_Select_Dir(INIT_DIRECTORY);
+ }else
+ {
+ Browser_Load_Default_Directory();
+ }
+
+ // To set sensivity of buttons in the case if the default directory is invalid
+ Update_Command_Buttons_Sensivity();
+
+ g_source_remove(idle_handler_id);
+}
+
+
+
+void Convert_P20_And_Undescore_Into_Spaces (GtkWidget *entry)
+{
+ gchar *string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ Scan_Convert_Underscore_Into_Space(string);
+ Scan_Convert_P20_Into_Space(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+void Convert_Space_Into_Undescore (GtkWidget *entry)
+{
+ gchar *string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ Scan_Convert_Space_Into_Undescore(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+void Convert_All_Uppercase (GtkWidget *entry)
+{
+ gchar *string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ Scan_Process_Fields_All_Uppercase(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+void Convert_All_Downcase (GtkWidget *entry)
+{
+ gchar *string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ Scan_Process_Fields_All_Downcase(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+void Convert_Letter_Uppercase (GtkWidget *entry)
+{
+ gchar *string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ Scan_Process_Fields_Letter_Uppercase(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+void Convert_First_Letters_Uppercase (GtkWidget *entry)
+{
+ gchar *string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ Scan_Process_Fields_First_Letters_Uppercase(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+void Convert_Remove_Space (GtkWidget *entry)
+{
+ gchar *string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ Scan_Process_Fields_Remove_Space(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+void Convert_Insert_Space (GtkWidget *entry)
+{
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ guint string_length = 2 * strlen(gtk_entry_get_text(GTK_ENTRY(entry)));
+ gchar *string = g_malloc(string_length+1);
+ strncpy(string,gtk_entry_get_text(GTK_ENTRY(entry)),string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Insert_Space(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+void Convert_Only_One_Space (GtkWidget *entry)
+{
+ gchar *string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+
+ Scan_Process_Fields_Keep_One_Space(string);
+ gtk_entry_set_text(GTK_ENTRY(entry),string);
+ g_free(string);
+}
+
+/*
+ * Entry_Popup_Menu_Handler: show the popup menu when the third mouse button is pressed.
+ */
+gboolean Entry_Popup_Menu_Handler (GtkMenu *menu, GdkEventButton *event)
+{
+ if (event && (event->type==GDK_BUTTON_PRESS) && (event->button==3))
+ {
+ /* FIX ME : this is not very clean, but if we use 'event->button' (contains value of
+ * the 3rd button) instead of '1', we need to click two times the left mouse button
+ * to activate an item of the opened popup menu (when menu is attached to an entry). */
+ //gtk_menu_popup(menu,NULL,NULL,NULL,NULL,event->button,event->time);
+ gtk_menu_popup(menu,NULL,NULL,NULL,NULL,1,event->time);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*
+ * Popup menu attached to all entries of tag + filename + rename combobox.
+ * Displayed when pressing the right mouse button and contains functions to process ths strings.
+ */
+void Attach_Popup_Menu_To_Tag_Entries (GtkEntry *entry)
+{
+ GtkWidget *PopupMenu;
+ GtkWidget *Image;
+ GtkWidget *MenuItem;
+
+
+ PopupMenu = gtk_menu_new();
+ g_signal_connect_swapped(G_OBJECT(entry),"button_press_event",
+ G_CALLBACK(Entry_Popup_Menu_Handler),G_OBJECT(PopupMenu));
+
+ /* Menu items */
+ MenuItem = gtk_image_menu_item_new_with_label(_("Tag selected files with this field"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Menu_Mini_Button_Clicked),G_OBJECT(entry));
+
+ /* Separator */
+ MenuItem = gtk_menu_item_new();
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Convert '_' and '%20' to spaces"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_CONVERT,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_P20_And_Undescore_Into_Spaces),G_OBJECT(entry));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Convert ' ' to '_'"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_CONVERT,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_Space_Into_Undescore),G_OBJECT(entry));
+
+ /* Separator */
+ MenuItem = gtk_menu_item_new();
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("All uppercase"));
+ Image = gtk_image_new_from_stock("easytag-all-uppercase",GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_All_Uppercase),G_OBJECT(entry));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("All downcase"));
+ Image = gtk_image_new_from_stock("easytag-all-downcase",GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_All_Downcase),G_OBJECT(entry));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("First letter uppercase"));
+ Image = gtk_image_new_from_stock("easytag-first-letter-uppercase",GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_Letter_Uppercase),G_OBJECT(entry));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("First letter uppercase of each word"));
+ Image = gtk_image_new_from_stock("easytag-first-letter-uppercase-word",GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_First_Letters_Uppercase),G_OBJECT(entry));
+
+ /* Separator */
+ MenuItem = gtk_menu_item_new();
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Remove spaces"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_Remove_Space),G_OBJECT(entry));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Insert space before uppercase letter"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_Insert_Space),G_OBJECT(entry));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Remove duplicate spaces or underscores"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(PopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate",
+ G_CALLBACK(Convert_Only_One_Space),G_OBJECT(entry));
+
+ gtk_widget_show_all(PopupMenu);
+}
+
+
+
+/*
+ * Function to manage the received signals (specially for segfaults)
+ * Handle crashs
+ */
+void Handle_Crash (gint signal_id)
+{
+ //gchar commmand[256];
+
+ Log_Print(_("EasyTAG %s: Abnormal exit! (PId: %d)."),VERSION,getpid());
+ Log_Print(_("Received signal %s (%d)\a"),signal_to_string(signal_id),signal_id);
+
+ Log_Print(_("You have probably found a bug in EasyTAG. Please, send a bug "
+ "report with a gdb backtrace ('gdb easytag core' then 'bt' and "
+ "'l') and informations to reproduce it to easytag@gmail.com"));
+
+ // To send messages to the console...
+ g_print(_("EasyTAG %s: Abnormal exit! (PId: %d)."),VERSION,getpid());
+ g_print("\n");
+ g_print(_("Received signal %s (%d)\a"),signal_to_string(signal_id),signal_id);
+ g_print("\n");
+ g_print(_("You have probably found a bug in EasyTAG. Please, send a bug "
+ "report with a gdb backtrace ('gdb easytag core' then 'bt' and "
+ "'l') and informations to reproduce it to easytag@gmail.com"));
+ g_print("\n");
+
+ signal(signal_id,SIG_DFL); // Let the OS handle recursive seg faults
+ //signal(SIGTSTP, exit);
+ //snprintf(commmand,sizeof(commmand),"gdb -x /root/core.txt easytag %d", getpid());
+ //system(commmand);
+}
+
+gchar *signal_to_string (gint signal)
+{
+#ifdef SIGHUP
+ if (signal == SIGHUP) return ("SIGHUP");
+#endif
+#ifdef SIGINT
+ if (signal == SIGINT) return ("SIGINT");
+#endif
+#ifdef SIGQUIT
+ if (signal == SIGQUIT) return ("SIGQUIT");
+#endif
+#ifdef SIGILL
+ if (signal == SIGILL) return ("SIGILL");
+#endif
+#ifdef SIGTRAP
+ if (signal == SIGTRAP) return ("SIGTRAP");
+#endif
+#ifdef SIGABRT
+ if (signal == SIGABRT) return ("SIGABRT");
+#endif
+#ifdef SIGIOT
+ if (signal == SIGIOT) return ("SIGIOT");
+#endif
+#ifdef SIGEMT
+ if (signal == SIGEMT) return ("SIGEMT");
+#endif
+#ifdef SIGFPE
+ if (signal == SIGFPE) return ("SIGFPE");
+#endif
+#ifdef SIGKILL
+ if (signal == SIGKILL) return ("SIGKILL");
+#endif
+#ifdef SIGBUS
+ if (signal == SIGBUS) return ("SIGBUS");
+#endif
+#ifdef SIGSEGV
+ if (signal == SIGSEGV) return ("SIGSEGV");
+#endif
+#ifdef SIGSYS
+ if (signal == SIGSYS) return ("SIGSYS");
+#endif
+#ifdef SIGPIPE
+ if (signal == SIGPIPE) return ("SIGPIPE");
+#endif
+#ifdef SIGALRM
+ if (signal == SIGALRM) return ("SIGALRM");
+#endif
+#ifdef SIGTERM
+ if (signal == SIGTERM) return ("SIGTERM");
+#endif
+#ifdef SIGUSR1
+ if (signal == SIGUSR1) return ("SIGUSR1");
+#endif
+#ifdef SIGUSR2
+ if (signal == SIGUSR2) return ("SIGUSR2");
+#endif
+#ifdef SIGCHLD
+ if (signal == SIGCHLD) return ("SIGCHLD");
+#endif
+#ifdef SIGCLD
+ if (signal == SIGCLD) return ("SIGCLD");
+#endif
+#ifdef SIGPWR
+ if (signal == SIGPWR) return ("SIGPWR");
+#endif
+#ifdef SIGVTALRM
+ if (signal == SIGVTALRM) return ("SIGVTALRM");
+#endif
+#ifdef SIGPROF
+ if (signal == SIGPROF) return ("SIGPROF");
+#endif
+#ifdef SIGIO
+ if (signal == SIGIO) return ("SIGIO");
+#endif
+#ifdef SIGPOLL
+ if (signal == SIGPOLL) return ("SIGPOLL");
+#endif
+#ifdef SIGWINCH
+ if (signal == SIGWINCH) return ("SIGWINCH");
+#endif
+#ifdef SIGWINDOW
+ if (signal == SIGWINDOW) return ("SIGWINDOW");
+#endif
+#ifdef SIGSTOP
+ if (signal == SIGSTOP) return ("SIGSTOP");
+#endif
+#ifdef SIGTSTP
+ if (signal == SIGTSTP) return ("SIGTSTP");
+#endif
+#ifdef SIGCONT
+ if (signal == SIGCONT) return ("SIGCONT");
+#endif
+#ifdef SIGTTIN
+ if (signal == SIGTTIN) return ("SIGTTIN");
+#endif
+#ifdef SIGTTOU
+ if (signal == SIGTTOU) return ("SIGTTOU");
+#endif
+#ifdef SIGURG
+ if (signal == SIGURG) return ("SIGURG");
+#endif
+#ifdef SIGLOST
+ if (signal == SIGLOST) return ("SIGLOST");
+#endif
+#ifdef SIGRESERVE
+ if (signal == SIGRESERVE) return ("SIGRESERVE");
+#endif
+#ifdef SIGDIL
+ if (signal == SIGDIL) return ("SIGDIL");
+#endif
+#ifdef SIGXCPU
+ if (signal == SIGXCPU) return ("SIGXCPU");
+#endif
+#ifdef SIGXFSZ
+ if (signal == SIGXFSZ) return ("SIGXFSZ");
+#endif
+ return (_("Unknown signal"));
+}
+
+
+/*
+ * Display usage informations
+ */
+void Display_Usage (void)
+{
+ g_print(_("\nUsage: easytag [option] "
+ "\n or: easytag [directory]\n"
+ "\n"
+ "Option:\n"
+ "-------\n"
+ "-h, --help Display this text and exit.\n"
+ "-v, --version Print basic informations and exit.\n"
+ "\n"
+ "Directory:\n"
+ "----------\n"
+#ifdef WIN32
+ "c:/path_to/files Use an absolute path to load,\n"
+#else
+ "/path_to/files Use an absolute path to load,\n"
+#endif
+ "path_to/files Use a relative path.\n"
+ "\n"));
+ exit(0);
+}
+
+
+
+/*
+ * Exit the program
+ */
+void EasyTAG_Exit (void)
+{
+ ET_Core_Destroy();
+ Charset_Insert_Locales_Destroy();
+ Log_Print(_("EasyTAG: Normal exit."));
+ gtk_main_quit();
+#ifdef WIN32
+ ET_Win32_Cleanup();
+#endif
+ exit(0);
+}
+
+void Quit_MainWindow_Confirmed (void)
+{
+ // Save the configuration when exiting...
+ Save_Changes_Of_UI();
+
+ // Quit EasyTAG
+ EasyTAG_Exit();
+}
+
+void Quit_MainWindow_Save_And_Quit (void)
+{
+ /* Save modified tags */
+ if (Save_All_Files_With_Answer(FALSE) == -1)
+ return;
+ Quit_MainWindow_Confirmed();
+}
+
+void Quit_MainWindow (void)
+{
+ GtkWidget *msgbox;
+ gint button;
+
+ /* If you change the displayed data and quit immediately */
+ if (ETCore->ETFileList)
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed); // To detect change before exiting
+
+ /* Save combobox history list before exit */
+ Save_Path_Entry_List(BrowserEntryModel, MISC_COMBO_TEXT);
+
+ /* Exit ? */
+ if (CONFIRM_BEFORE_EXIT)
+ {
+ if (ET_Check_If_All_Files_Are_Saved() != TRUE)
+ {
+ /* Some files haven't been saved */
+ msgbox = msg_box_new(_("Confirm..."),_("Some files have been modified but not "
+ "saved...\nDo you want to save them before exiting the program?"),
+ GTK_STOCK_DIALOG_QUESTION,BUTTON_CANCEL,BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ button = msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ switch(button)
+ {
+ case BUTTON_YES:
+ Quit_MainWindow_Save_And_Quit();
+ break;
+ case BUTTON_NO:
+ Quit_MainWindow_Confirmed();
+ break;
+ case BUTTON_CANCEL:
+ case -1:
+ return;
+ }
+ } else
+ {
+ msgbox = msg_box_new(_("Confirm..."),_(" Do you really want to exit the program? "),
+ GTK_STOCK_DIALOG_QUESTION,BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ button = msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ switch(button)
+ {
+ case BUTTON_YES:
+ Quit_MainWindow_Confirmed();
+ break;
+ case BUTTON_NO:
+ case -1:
+ return;
+ break;
+ }
+ }
+ }else if (ET_Check_If_All_Files_Are_Saved() != TRUE)
+ {
+ /* Some files aren't saved */
+ msgbox = msg_box_new(_("Confirm..."),_("Some files have been modified but not "
+ "saved...\nDo you want to save them before exiting the program?"),
+ GTK_STOCK_DIALOG_QUESTION,BUTTON_CANCEL,BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ button = msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ switch(button)
+ {
+ case BUTTON_YES:
+ Quit_MainWindow_Save_And_Quit();
+ break;
+ case BUTTON_NO:
+ Quit_MainWindow_Confirmed();
+ break;
+ case BUTTON_CANCEL:
+ case -1:
+ return;
+ }
+ }else
+ {
+ Quit_MainWindow_Confirmed();
+ }
+}
+
+/*
+ * For the configuration file...
+ */
+void MainWindow_Apply_Changes (void)
+{
+ if ( MainWindow && MainWindow->window && gdk_window_is_visible(MainWindow->window)
+ && gdk_window_get_state(MainWindow->window)!=GDK_WINDOW_STATE_MAXIMIZED )
+ {
+ gint x, y, width, height;
+
+ // Position and Origin of the window
+ gdk_window_get_root_origin(MainWindow->window,&x,&y);
+ MAIN_WINDOW_X = x;
+ MAIN_WINDOW_Y = y;
+ gdk_window_get_size(MainWindow->window,&width,&height);
+ MAIN_WINDOW_WIDTH = width;
+ MAIN_WINDOW_HEIGHT = height;
+
+ // Handle panes position
+ PANE_HANDLE_POSITION1 = GTK_PANED(MainWindowHPaned)->child1_size;
+ PANE_HANDLE_POSITION2 = GTK_PANED(BrowserHPaned)->child1_size;
+ PANE_HANDLE_POSITION3 = GTK_PANED(ArtistAlbumVPaned)->child1_size;
+ PANE_HANDLE_POSITION4 = GTK_PANED(MainWindowVPaned)->child1_size;
+ }
+
+}
diff --git a/src/easytag.h b/src/easytag.h
new file mode 100755
index 0000000..1b4fdd1
--- /dev/null
+++ b/src/easytag.h
@@ -0,0 +1,206 @@
+/* easytag.h - 2000/04/28 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __EASYTAG_H__
+#define __EASYTAG_H__
+
+
+/* 'include' and 'define' created by autoconf/automake */
+#include "../config.h"
+
+#include "et_core.h"
+
+
+#define APPNAME "EasyTAG"
+#define AUTHOR "Jerome Couderc" // Note: do not use accents
+#define EMAIL "easytag@gmail.com"
+#define WEBPAGE "http://easytag.sourceforge.net"
+/*#define VERSION "0.15.1" //Now version is defined in ../configure.h.in */
+
+#define MAX_STRING_LEN 1024
+
+#if defined(__GNUC__) && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define ATTRIBUTE_UNUSED __attribute__((__unused__))
+#else
+# define ATTRIBUTE_UNUSED
+#endif
+
+
+/***************
+ * Declaration *
+ ***************/
+
+/* Variable to force to quit recursive functions (reading dirs) or stop saving files */
+gboolean Main_Stop_Button_Pressed;
+
+GtkWidget *MainWindow;
+GtkWidget *MenuArea;
+GtkWidget *ToolArea;
+GtkWidget *BrowseArea;
+GtkWidget *FileArea;
+GtkWidget *TagArea;
+GtkWidget *StatusArea;
+GtkWidget *ProgressArea;
+GtkWidget *LogArea;
+GtkWidget *ReadOnlyStatusIconBox;
+GtkWidget *BrokenStatusIconBox;
+GtkWidget *MainWindowHPaned;
+GtkWidget *MainWindowVPaned;
+
+/* File Area */
+GtkWidget *FileFrame;
+GtkWidget *FileIndex;
+GtkWidget *FileEntry;
+GtkWidget *HeaderInfosTable; /* declarated here to show/hide file header infos */
+GtkWidget *VersionLabel;
+GtkWidget *VersionValueLabel;
+GtkWidget *BitrateLabel;
+GtkWidget *BitrateValueLabel;
+GtkWidget *SampleRateLabel;
+GtkWidget *SampleRateValueLabel;
+GtkWidget *ModeLabel;
+GtkWidget *ModeValueLabel;
+GtkWidget *SizeLabel;
+GtkWidget *SizeValueLabel;
+GtkWidget *DurationLabel;
+GtkWidget *DurationValueLabel;
+
+/* TAG Area */
+GtkWidget *TagFrame;
+GtkWidget *TagNoteBook;
+GtkWidget *TitleEntry;
+GtkWidget *ArtistEntry;
+GtkWidget *AlbumEntry;
+GtkWidget *DiscNumberEntry;
+GtkWidget *YearEntry;
+GtkWidget *TrackEntryCombo;
+GtkListStore *TrackEntryComboModel;
+GtkWidget *TrackTotalEntry;
+GtkWidget *GenreCombo;
+GtkListStore *GenreComboModel;
+GtkWidget *CommentEntry;
+//GtkWidget *CommentView;
+GtkWidget *ComposerEntry;
+GtkWidget *OrigArtistEntry;
+GtkWidget *CopyrightEntry;
+GtkWidget *URLEntry;
+GtkWidget *EncodedByEntry;
+GtkWidget *PictureEntryView;
+GtkListStore *PictureEntryModel;
+// Labels
+GtkWidget *TitleLabel;
+GtkWidget *ArtistLabel;
+GtkWidget *AlbumLabel;
+GtkWidget *DiscNumberLabel;
+GtkWidget *YearLabel;
+GtkWidget *TrackLabel;
+GtkWidget *GenreLabel;
+GtkWidget *CommentLabel;
+GtkWidget *ComposerLabel;
+GtkWidget *OrigArtistLabel;
+GtkWidget *CopyrightLabel;
+GtkWidget *URLLabel;
+GtkWidget *EncodedByLabel;
+GtkWidget *PictureLabel;
+// Mini buttons
+GtkWidget *TitleMButton;
+GtkWidget *ArtistMButton;
+GtkWidget *AlbumMButton;
+GtkWidget *DiscNumberMButton;
+GtkWidget *YearMButton;
+GtkWidget *TrackMButton;
+GtkWidget *TrackMButtonSequence;
+GtkWidget *TrackMButtonNbrFiles;
+GtkWidget *GenreMButton;
+GtkWidget *CommentMButton;
+GtkWidget *ComposerMButton;
+GtkWidget *OrigArtistMButton;
+GtkWidget *CopyrightMButton;
+GtkWidget *URLMButton;
+GtkWidget *EncodedByMButton;
+GtkWidget *PictureMButton;
+
+// Other for picture
+GtkWidget *PictureClearButton;
+GtkWidget *PictureAddButton;
+GtkWidget *PictureSaveButton;
+GtkWidget *PicturePropertiesButton;
+GtkWidget *PictureScrollWindow;
+
+GdkCursor *MouseCursor;
+
+gchar *HOME_VARIABLE;
+gchar *INIT_DIRECTORY;
+
+#ifndef errno
+extern int errno;
+#endif
+
+/* A flag to start/avoid a new reading while an other one is running */
+gboolean ReadingDirectory;
+
+
+/**************
+ * Prototypes *
+ **************/
+void Action_Select_All_Files (void);
+void Action_Unselect_All_Files (void);
+void Action_Invert_Files_Selection (void);
+void Action_Select_Prev_File (void);
+void Action_Select_Next_File (void);
+void Action_Select_First_File (void);
+void Action_Select_Last_File (void);
+void Action_Select_Nth_File_By_Position (gulong num_item);
+void Action_Select_Nth_File_By_Etfile (ET_File *ETFile);
+
+void Action_Scan_Selected_Files (void);
+void Action_Remove_Selected_Tags (void);
+gint Action_Undo_Selected_Files (void);
+gint Action_Redo_Selected_File (void);
+void Action_Undo_All_Files (void);
+void Action_Redo_All_Files (void);
+void Action_Save_Selected_Files (void);
+void Action_Force_Saving_Selected_Files (void);
+void Action_Undo_From_History_List (void);
+void Action_Redo_From_History_List (void);
+void Action_Delete_Selected_Files (void);
+gint Save_All_Files_With_Answer (gboolean force_saving_files);
+gint Save_Selected_Files_With_Answer (gboolean force_saving_files);
+
+void Action_Main_Stop_Button_Pressed (void);
+void Action_Select_Browser_Style (void);
+
+void File_Area_Set_Sensitive (gboolean activate);
+void Tag_Area_Set_Sensitive (gboolean activate);
+void Tag_Area_Display_Controls (ET_File *ETFile);
+
+void Read_Directory (gchar *path);
+void Quit_MainWindow (void);
+void MainWindow_Apply_Changes (void);
+void Update_Command_Buttons_Sensivity (void);
+void Attach_Popup_Menu_To_Tag_Entries (GtkEntry *entry);
+
+void Clear_File_Entry_Field (void);
+void Clear_Tag_Entry_Fields (void);
+void Clear_Header_Fields (void);
+
+
+#endif /* __EASYTAG_H__ */
diff --git a/src/et_core.c b/src/et_core.c
new file mode 100755
index 0000000..3e608f3
--- /dev/null
+++ b/src/et_core.c
@@ -0,0 +1,4835 @@
+/* et_core.c - 2001/10/21 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <utime.h>
+#include <ctype.h>
+#include "errno.h"
+
+#include "easytag.h"
+#include "et_core.h"
+#include "mpeg_header.h"
+#include "monkeyaudio_header.h"
+#include "musepack_header.h"
+#ifdef ENABLE_MP3
+# include "id3_tag.h"
+#endif
+#include "picture.h"
+#include "ape_tag.h"
+#ifdef ENABLE_OGG
+# include "ogg_header.h"
+# include "ogg_tag.h"
+#endif
+#ifdef ENABLE_FLAC
+# include "flac_header.h"
+# include "flac_tag.h"
+#endif
+#ifdef ENABLE_MP4
+# include "mp4_header.h"
+# include "mp4_tag.h"
+#endif
+#ifdef ENABLE_WAVPACK
+# include "wavpack_header.h"
+# include "wavpack_tag.h"
+#endif
+#include "bar.h"
+#include "browser.h"
+#include "log.h"
+#include "misc.h"
+#include "setting.h"
+#include "msgbox.h"
+#include "charset.h"
+
+#ifdef WIN32
+# include "win32/win32dep.h"
+#endif
+
+
+/***************
+ * Declaration *
+ ***************/
+
+ET_Core *ETCore = NULL;
+
+/*
+ * Colors Used
+ */
+GdkColor LIGHT_BLUE = {0, 0xddd1, 0xeeec, 0xffff};
+GdkColor RED = {0, 0xffff, 0x0000, 0x0000};
+GdkColor LIGHT_RED = {0, 0xffff, 0x8888, 0x8888};
+GdkColor GREY = {0, 0xaa00, 0xaa00, 0xaa00};
+GdkColor LIGHT_GREY = {0, 0xd2d2, 0xd2d2, 0xd2d2};
+GdkColor YELLOW = {0, 0xffff, 0xffff, 0xcccc};
+GdkColor BLACK = {0, 0x0000, 0x0000, 0x0000};
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void ET_Core_Create (void);
+void ET_Core_Initialize (void);
+void ET_Core_Free (void);
+void ET_Core_Destroy (void);
+
+//gboolean ET_File_Is_Supported (gchar *filename);
+gchar *ET_Get_File_Extension (gchar *filename);
+ET_File_Description *ET_Get_File_Description (gchar *filename);
+ET_File_Description *ET_Get_File_Description_From_Extension (gchar *extension);
+
+gboolean ET_Free_File_List (void);
+gboolean ET_Free_File_List_Item (ET_File *ETFile);
+gboolean ET_Free_File_Name_List (GList *FileNameList);
+gboolean ET_Free_File_Tag_List (GList *FileTagList);
+gboolean ET_Free_File_Name_Item (File_Name *FileName);
+gboolean ET_Free_File_Tag_Item (File_Tag *FileTag);
+gboolean ET_Free_File_Tag_Item_Other_Field (File_Tag *FileTag);
+gboolean ET_Free_File_Info_Item (ET_File_Info *ETFileInfo);
+gboolean ET_Free_History_File_List (void);
+gboolean ET_Free_Displayed_File_List (void);
+gboolean ET_Free_Artist_Album_File_List (void);
+
+void ET_Initialize_File_Item (ET_File *ETFile);
+void ET_Initialize_File_Tag_Item (File_Tag *FileTag);
+void ET_Initialize_File_Name_Item (File_Name *FileName);
+void ET_Initialize_File_Info_Item (ET_File_Info *ETFileInfo);
+
+//gboolean ET_Copy_File_Tag_Item (ET_File *ETFile, File_Tag *FileTag);
+gboolean ET_Copy_File_Tag_Item_Other_Field (ET_File *ETFile, File_Tag *FileTag);
+//gboolean ET_Set_Field_File_Name_Item (gint *FileNameField, gchar *value);
+//gboolean ET_Set_Field_File_Name_Item (gchar **FileNameField, gchar *value);
+//gboolean ET_Set_Field_File_Tag_Item (gint *FileTagField, gchar *value);
+//gboolean ET_Set_Field_File_Tag_Picture (gchar **FileTagField, Picture *pic);
+
+guint ET_File_Key_New (void);
+guint ET_Undo_Key_New (void);
+
+GList *ET_File_List_Remove (GList *item_to_remove);
+
+gboolean ET_Remove_File_From_File_List (ET_File *ETFile);
+gboolean ET_Remove_File_From_Artist_Album_List (ET_File *ETFile);
+
+void ET_Display_File_And_List_Status_To_UI (ET_File *ETFile);
+void ET_Display_Filename_To_UI (ET_File *ETFile);
+gboolean ET_Display_File_Tag_To_UI (ET_File *ETFile);
+gboolean ET_Display_File_Info_To_UI (ET_File_Info *ETFileInfo);
+
+gboolean ET_Save_File_Name_From_UI (ET_File *ETFile, File_Name *FileName);
+gboolean ET_Save_File_Name_Internal (ET_File *ETFile, File_Name *FileName);
+gboolean ET_Save_File_Tag_From_UI (File_Tag *FileTag);
+gboolean ET_Save_File_Tag_Internal (ET_File *ETFile, File_Tag *FileTag);
+
+void ET_Mark_File_Tag_As_Saved (ET_File *ETFile);
+void ET_Mark_File_Name_As_Saved (ET_File *ETFile);
+
+gboolean ET_Manage_Changes_Of_File_Data (ET_File *ETFile, File_Name *FileName, File_Tag *FileTag);
+gboolean ET_Detect_Changes_Of_File_Name (File_Name *FileName1, File_Name *FileName2);
+gboolean ET_Detect_Changes_Of_File_Tag (File_Tag *FileTag1, File_Tag *FileTag2);
+gboolean ET_Add_File_Name_To_List (ET_File *ETFile, File_Name *FileName);
+gboolean ET_Add_File_Tag_To_List (ET_File *ETFile, File_Tag *FileTag);
+gboolean ET_Add_File_To_History_List (ET_File *ETFile);
+gboolean ET_Add_File_To_Artist_Album_File_List (ET_File *ETFile);
+
+GList *ET_Displayed_File_List_First (void);
+GList *ET_Displayed_File_List_Previous (void);
+GList *ET_Displayed_File_List_Next (void);
+GList *ET_Displayed_File_List_Last (void);
+GList *ET_Displayed_File_List_By_Etfile (ET_File *ETFile);
+GList *ET_Displayed_File_List_By_Position (gulong pos_in_list);
+guint ET_Displayed_File_List_Get_Length (void);
+void ET_Displayed_File_List_Number (void);
+
+gboolean ET_Set_Displayed_File_List (GList *ETFileList);
+
+gboolean ET_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo);
+//gboolean ET_File_Name_Convert_Character (gchar *filename_utf8);
+void ET_File_Name_Check_Length (ET_File *ETFile, gchar *filename_utf8);
+
+gint ET_Comp_Func_Sort_File_By_Ascending_Index_Key (ET_File *ETFile1, ET_File *ETFile2);
+
+gint ET_Comp_Func_Sort_Artist_Item_By_Ascending_Artist (GList *AlbumList1, GList *AlbumList2);
+gint ET_Comp_Func_Sort_Album_Item_By_Ascending_Album (GList *etfilelist1, GList *etfilelist2);
+gint ET_Comp_Func_Sort_Etfile_Item_By_Ascending_Filename (ET_File *ETFile1, ET_File *ETFile2);
+
+
+/*******************
+ * Basic functions *
+ *******************/
+
+/*
+ * Returns the extension of the file
+ */
+gchar *ET_Get_File_Extension (gchar *filename)
+{
+ if (filename)
+ return strrchr(filename, '.');
+ else
+ return NULL;
+}
+
+
+/*
+ * Determine description of file using his extension.
+ * If extension is NULL or not found into the tab, it returns the last entry for UNKNOWN_FILE.
+ */
+ET_File_Description *ET_Get_File_Description_From_Extension (gchar *extension)
+{
+ guint i;
+
+ if (!extension) // Unknown file
+ return (ET_File_Description*) &ETFileDescription[ET_FILE_DESCRIPTION_SIZE];
+
+ for (i=0; i<ET_FILE_DESCRIPTION_SIZE; i++) // Use of '<' instead of '<=' to avoid to test for Unknown file
+ if ( strcasecmp(extension,ETFileDescription[i].Extension)==0 )
+ return (ET_File_Description*) &ETFileDescription[i];
+
+ // If not found in the list
+ return (ET_File_Description*) &ETFileDescription[ET_FILE_DESCRIPTION_SIZE];
+}
+
+
+/*
+ * Determines description of file.
+ * Determines first the extension. If extension is NULL or not found into the tab,
+ * it returns the last entry for UNKNOWN_FILE.
+ */
+ET_File_Description *ET_Get_File_Description (gchar *filename)
+{
+ return ET_Get_File_Description_From_Extension(ET_Get_File_Extension(filename));
+}
+
+
+/*
+ * Returns TRUE if the file is supported, else returns FALSE
+ */
+gboolean ET_File_Is_Supported (gchar *filename)
+{
+ if (ET_Get_File_Description(filename)->FileType != UNKNOWN_FILE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+
+
+
+/*****************************************************************************
+ * Manipulation of ET_Core functions (main functions needed for the program) *
+ *****************************************************************************/
+void ET_Core_Create (void)
+{
+ // Allocate
+ if (ETCore == NULL)
+ ETCore = g_malloc0(sizeof(ET_Core));
+
+ // Initialize
+ ET_Core_Initialize();
+}
+
+void ET_Core_Initialize (void)
+{
+ ETCore->ETFileList = NULL;
+ ETCore->ETFileDisplayedList = NULL;
+ ETCore->ETFileDisplayedListPtr = NULL;
+ ETCore->ETFileDisplayedList_Length = 0;
+ ETCore->ETFileDisplayedList_TotalSize = 0;
+ ETCore->ETFileDisplayedList_TotalDuration = 0;
+ ETCore->ETFileDisplayed = NULL;
+ ETCore->ETHistoryFileList = NULL;
+ ETCore->ETArtistAlbumFileList = NULL;
+}
+
+void ET_Core_Free (void)
+{
+ // Frees first lists, then initialize
+ if (ETCore->ETFileList)
+ ET_Free_File_List();
+
+ if (ETCore->ETFileDisplayedList)
+ ET_Free_Displayed_File_List();
+
+ if (ETCore->ETHistoryFileList)
+ ET_Free_History_File_List();
+
+ if (ETCore->ETArtistAlbumFileList)
+ ET_Free_Artist_Album_File_List();
+
+ // Initialize by security
+ ET_Core_Initialize();
+}
+
+void ET_Core_Destroy (void)
+{
+ // Free attached data
+ ET_Core_Free();
+
+ // Unallocate
+ g_free(ETCore);
+ ETCore = NULL;
+}
+
+
+
+/**************************
+ * Initializing functions *
+ **************************/
+
+/*
+ * Create a new File_Name structure
+ */
+File_Name *ET_File_Name_Item_New (void)
+{
+ File_Name *FileName;
+
+ FileName = g_malloc0(sizeof(File_Name));
+ ET_Initialize_File_Name_Item(FileName);
+
+ return FileName;
+}
+
+
+/*
+ * Create a new File_Tag structure
+ */
+File_Tag *ET_File_Tag_Item_New (void)
+{
+ File_Tag *FileTag;
+
+ FileTag = g_malloc0(sizeof(File_Tag));
+ ET_Initialize_File_Tag_Item(FileTag);
+
+ return FileTag;
+}
+
+
+/*
+ * Create a new File_Info structure
+ */
+ET_File_Info *ET_File_Info_Item_New (void)
+{
+ ET_File_Info *ETFileInfo;
+
+ ETFileInfo = g_malloc0(sizeof(ET_File_Info));
+ ET_Initialize_File_Info_Item(ETFileInfo);
+
+ return ETFileInfo;
+}
+
+
+/*
+ * Create a new ET_File structure
+ */
+ET_File *ET_File_Item_New (void)
+{
+ ET_File *ETFile;
+
+ ETFile = g_malloc0(sizeof(ET_File));
+ ET_Initialize_File_Item(ETFile);
+
+ return ETFile;
+}
+
+
+void ET_Initialize_File_Name_Item (File_Name *FileName)
+{
+ if (FileName)
+ {
+ FileName->key = ET_Undo_Key_New();
+ FileName->saved = FALSE;
+ FileName->value = NULL;
+ FileName->value_utf8 = NULL;
+ FileName->value_ck = NULL;
+ }
+}
+
+
+void ET_Initialize_File_Tag_Item (File_Tag *FileTag)
+{
+ if (FileTag)
+ {
+ FileTag->key = ET_Undo_Key_New();
+ FileTag->saved = FALSE;
+ FileTag->title = NULL;
+ FileTag->artist = NULL;
+ FileTag->album = NULL;
+ FileTag->disc_number = NULL;
+ FileTag->track = NULL;
+ FileTag->track_total = NULL;
+ FileTag->year = NULL;
+ FileTag->genre = NULL;
+ FileTag->comment = NULL;
+ FileTag->composer = NULL;
+ FileTag->orig_artist = NULL;
+ FileTag->copyright = NULL;
+ FileTag->url = NULL;
+ FileTag->encoded_by = NULL;
+ FileTag->picture = NULL;
+ FileTag->other = NULL;
+ }
+}
+
+
+void ET_Initialize_File_Info_Item (ET_File_Info *ETFileInfo)
+{
+ if (ETFileInfo)
+ {
+ ETFileInfo->mpc_profile = NULL;
+ ETFileInfo->mpc_version = NULL;
+ }
+}
+
+
+void ET_Initialize_File_Item (ET_File *ETFile)
+{
+ if (ETFile)
+ {
+ ETFile->IndexKey = 0;
+ ETFile->ETFileKey = 0;
+ ETFile->ETFileDescription = NULL;
+ ETFile->ETFileInfo = NULL;
+ ETFile->FileNameCur = NULL;
+ ETFile->FileNameNew = NULL;
+ ETFile->FileNameList = NULL;
+ ETFile->FileNameListBak = NULL;
+ ETFile->FileTag = NULL;
+ ETFile->FileTagList = NULL;
+ ETFile->FileTagListBak = NULL;
+ }
+}
+
+
+/* Key for each item of ETFileList */
+guint ET_File_Key_New (void)
+{
+ static guint ETFileKey = 0;
+ return ++ETFileKey;
+}
+
+/* Key for Undo */
+guint ET_Undo_Key_New (void)
+{
+ static guint ETUndoKey = 0;
+ return ++ETUndoKey;
+}
+
+
+
+
+/**********************************
+ * File adding/removing functions *
+ **********************************/
+
+/*
+ * ET_Add_File_To_File_List: Add a file to the "main" list. And get all informations of the file.
+ * The filename passed in should be in raw format, only convert it to UTF8 when displaying it.
+ */
+GList *ET_Add_File_To_File_List (gchar *filename)
+{
+ ET_File_Description *ETFileDescription;
+ ET_File *ETFile;
+ File_Name *FileName;
+ File_Tag *FileTag;
+ ET_File_Info *ETFileInfo;
+ gchar *ETFileExtension;
+ guint ETFileKey;
+ guint undo_key;
+ gchar *filename_utf8 = filename_to_display(filename);
+
+ if (!filename)
+ return ETCore->ETFileList;
+
+ /* Primary Key for this file */
+ ETFileKey = ET_File_Key_New();
+
+ /* Get description of the file */
+ ETFileDescription = ET_Get_File_Description(filename);
+
+ /* Get real extension of the file (keeping the case) */
+ ETFileExtension = g_strdup(ET_Get_File_Extension(filename));
+
+ /* Fill the File_Name structure for FileNameList */
+ FileName = ET_File_Name_Item_New();
+ FileName->saved = TRUE; /* The file hasn't been changed, so it's saved */
+ FileName->value = filename;
+ FileName->value_utf8 = filename_utf8;
+ FileName->value_ck = g_utf8_collate_key_for_filename(filename_utf8, -1);
+
+ /* Fill the File_Tag structure for FileTagList */
+ FileTag = ET_File_Tag_Item_New();
+ FileTag->saved = TRUE; /* The file hasn't been changed, so it's saved */
+
+ switch (ETFileDescription->TagType)
+ {
+#ifdef ENABLE_MP3
+ case ID3_TAG:
+ Id3tag_Read_File_Tag(filename,FileTag);
+ break;
+#endif
+#ifdef ENABLE_OGG
+ case OGG_TAG:
+ Ogg_Tag_Read_File_Tag(filename,FileTag);
+ break;
+#endif
+#ifdef ENABLE_FLAC
+ case FLAC_TAG:
+ Flac_Tag_Read_File_Tag(filename,FileTag);
+ break;
+#endif
+ case APE_TAG:
+ Ape_Tag_Read_File_Tag(filename,FileTag);
+ break;
+#ifdef ENABLE_MP4
+ case MP4_TAG:
+ Mp4tag_Read_File_Tag(filename,FileTag);
+ break;
+#endif
+#ifdef ENABLE_WAVPACK
+ case WAVPACK_TAG:
+ Wavpack_Tag_Read_File_Tag(filename, FileTag);
+ break;
+#endif
+ case UNKNOWN_TAG:
+ default:
+ Log_Print("FileTag: Undefined tag type (%d) for file %s",ETFileDescription->TagType,filename_utf8);
+ break;
+ }
+
+ /* Fill the ET_File_Info structure */
+ ETFileInfo = ET_File_Info_Item_New ();
+
+ switch (ETFileDescription->FileType)
+ {
+#ifdef ENABLE_MP3
+ case MP3_FILE:
+ case MP2_FILE:
+ Mpeg_Header_Read_File_Info(filename,ETFileInfo);
+ break;
+#endif
+#ifdef ENABLE_OGG
+ case OGG_FILE:
+ Ogg_Header_Read_File_Info(filename,ETFileInfo);
+ break;
+#endif
+#ifdef ENABLE_SPEEX
+ case SPEEX_FILE:
+ Speex_Header_Read_File_Info(filename,ETFileInfo);
+ break;
+#endif
+#ifdef ENABLE_FLAC
+ case FLAC_FILE:
+ Flac_Header_Read_File_Info(filename,ETFileInfo);
+ break;
+#endif
+ case MPC_FILE:
+ Mpc_Header_Read_File_Info(filename,ETFileInfo);
+ break;
+ case MAC_FILE:
+ Mac_Header_Read_File_Info(filename,ETFileInfo);
+ break;
+#ifdef ENABLE_WAVPACK
+ case WAVPACK_FILE:
+ Wavpack_Header_Read_File_Info(filename, ETFileInfo);
+ break;
+#endif
+#ifdef ENABLE_MP4
+ case MP4_FILE:
+ Mp4_Header_Read_File_Info(filename,ETFileInfo);
+ break;
+#endif
+ case UNKNOWN_FILE:
+ default:
+ Log_Print("ETFileInfo: Undefined file type (%d) for file %s",ETFileDescription->FileType,filename_utf8);
+ ET_Read_File_Info(filename,ETFileInfo); // To get at least the file size
+ break;
+ }
+
+ /* Attach all data defined above to this ETFile item */
+ ETFile = ET_File_Item_New();
+ ETFile->IndexKey = 0; // Will be renumered after...
+ ETFile->ETFileKey = ETFileKey;
+ ETFile->ETFileDescription = ETFileDescription;
+ ETFile->ETFileExtension = ETFileExtension;
+ ETFile->FileNameList = g_list_append(NULL,FileName);
+ ETFile->FileNameCur = ETFile->FileNameList;
+ ETFile->FileNameNew = ETFile->FileNameList;
+ ETFile->FileTagList = g_list_append(NULL,FileTag);
+ ETFile->FileTag = ETFile->FileTagList;
+ ETFile->ETFileInfo = ETFileInfo;
+
+ /* Add the item to the "main list" */
+ ETCore->ETFileList = g_list_append(ETCore->ETFileList,ETFile);
+
+
+ /*
+ * Process the filename and tag to generate undo if needed...
+ * The undo key must be the same for FileName and FileTag => changed in the same time
+ */
+ undo_key = ET_Undo_Key_New();
+
+ FileName = ET_File_Name_Item_New();
+ FileName->key = undo_key;
+ ET_Save_File_Name_Internal(ETFile,FileName);
+
+ FileTag = ET_File_Tag_Item_New();
+ FileTag->key = undo_key;
+ ET_Save_File_Tag_Internal(ETFile,FileTag);
+
+ /*
+ * Generate undo for the file and the main undo list.
+ * If no changes detected, FileName and FileTag item are deleted.
+ */
+ ET_Manage_Changes_Of_File_Data(ETFile,FileName,FileTag);
+
+ /* Add the item to the ArtistAlbum list (placed here to take advantage of previous changes) */
+ //ET_Add_File_To_Artist_Album_File_List(ETFile);
+
+ //ET_Debug_Print_File_List(ETCore->ETFileList,__FILE__,__LINE__,__FUNCTION__);
+ return ETCore->ETFileList;
+}
+
+gboolean ET_Create_Artist_Album_File_List (void)
+{
+ GList *ETFileList;
+
+ if (ETCore->ETArtistAlbumFileList)
+ ET_Free_Artist_Album_File_List();
+
+ ETFileList = g_list_first(ETCore->ETFileList);
+ while (ETFileList)
+ {
+ ET_File *ETFile = (ET_File *)ETFileList->data;
+ ET_Add_File_To_Artist_Album_File_List(ETFile);
+ ETFileList = ETFileList->next;
+ }
+ //ET_Debug_Print_Artist_Album_List(__FILE__,__LINE__,__FUNCTION__);
+ return TRUE;
+}
+/*
+ * The ETArtistAlbumFileList contains 3 levels of lists to sort the ETFile by artist then by album :
+ * - "ETArtistAlbumFileList" list is a list of "ArtistList" items,
+ * - "ArtistList" list is a list of "AlbumList" items,
+ * - "AlbumList" list is a list of ETFile items.
+ * Note : use the function ET_Debug_Print_Artist_Album_List(...) to understand how it works, it needed...
+ */
+gboolean ET_Add_File_To_Artist_Album_File_List (ET_File *ETFile)
+{
+ if (ETFile)
+ {
+ gchar *ETFile_Artist = ((File_Tag *)ETFile->FileTag->data)->artist; // Artist value of the ETFile passed in parameter
+ gchar *ETFile_Album = ((File_Tag *)ETFile->FileTag->data)->album; // Album value of the ETFile passed in parameter
+ gchar *etfile_artist = NULL;
+ gchar *etfile_album = NULL;
+ GList *ArtistList = NULL;
+ GList *AlbumList = NULL;
+ GList *etfilelist = NULL;
+ ET_File *etfile = NULL;
+
+
+ ArtistList = ETCore->ETArtistAlbumFileList;
+ while (ArtistList)
+ {
+ AlbumList = (GList *)ArtistList->data; /* Take the first item */
+ if (AlbumList
+ && (etfilelist = (GList *)AlbumList->data) /* Take the first item */
+ && (etfile = (ET_File *)etfilelist->data) /* Take the first etfile item */
+ && ((File_Tag *)etfile->FileTag->data) != NULL )
+ {
+ etfile_artist = ((File_Tag *)etfile->FileTag->data)->artist;
+ }else
+ {
+ etfile_artist = NULL;
+ }
+
+ if ( (etfile_artist && ETFile_Artist && strcmp(etfile_artist,ETFile_Artist)==0)
+ || (!etfile_artist && !ETFile_Artist) ) // The "artist" values correspond?
+ {
+ // The "ArtistList" item was found!
+ while (AlbumList)
+ {
+ if ( (etfilelist = (GList *)AlbumList->data)
+ && (etfile = (ET_File *)etfilelist->data)
+ && ((File_Tag *)etfile->FileTag->data) != NULL )
+ {
+ etfile_album = ((File_Tag *)etfile->FileTag->data)->album;
+ }else
+ {
+ etfile_album = NULL;
+ }
+
+ if ( (etfile_album && ETFile_Album && strcmp(etfile_album,ETFile_Album)==0)
+ || (!etfile_album && !ETFile_Album) ) // The "album" values correspond?
+ {
+ // The "AlbumList" item was found!
+ // Add the ETFile to this AlbumList item
+ //g_print(">>> add to etfile list (%s)\n",g_path_get_basename(((File_Name *)ETFile->FileNameCur->data)->value));
+ AlbumList->data = (gpointer) g_list_append((GList *)AlbumList->data,ETFile);
+ AlbumList->data = (gpointer) g_list_sort((GList *)AlbumList->data,(GCompareFunc)ET_Comp_Func_Sort_Etfile_Item_By_Ascending_Filename);
+ return TRUE;
+ }
+ AlbumList = AlbumList->next;
+ }
+ // The "AlbumList" item was NOT found! => Add a new "AlbumList" item (+...) item to the "ArtistList" list
+ etfilelist = g_list_append(NULL,ETFile);
+ //g_print(">>> add new album (%s)\n",g_path_get_basename(((File_Name *)ETFile->FileNameCur->data)->value));
+ ArtistList->data = (gpointer) g_list_append((GList *)ArtistList->data,etfilelist);
+ ArtistList->data = (gpointer) g_list_sort((GList *)ArtistList->data,(GCompareFunc)ET_Comp_Func_Sort_Album_Item_By_Ascending_Album);
+ return TRUE;
+ }
+ ArtistList = ArtistList->next;
+ }
+ // The "ArtistList" item was NOT found! => Add a new "ArtistList" to the main list (=ETArtistAlbumFileList)
+ etfilelist = g_list_append(NULL,ETFile);
+ AlbumList = g_list_append(NULL,etfilelist);
+ //g_print(">>> add new artist (%s)(etfile:%x AlbumList:%x)\n",g_path_get_basename(((File_Name *)ETFile->FileNameCur->data)->value),etfilelist,AlbumList);
+ ETCore->ETArtistAlbumFileList = g_list_append(ETCore->ETArtistAlbumFileList,AlbumList);
+ // Sort the list by ascending Artist
+ ETCore->ETArtistAlbumFileList = g_list_sort(ETCore->ETArtistAlbumFileList,(GCompareFunc)ET_Comp_Func_Sort_Artist_Item_By_Ascending_Artist);
+
+ return TRUE;
+ }else
+ {
+ return FALSE;
+ }
+}
+
+
+
+/*
+ * Delete the corresponding file and free the allocated data. Return TRUE if deleted.
+ */
+gboolean ET_Remove_File_From_File_List (ET_File *ETFile)
+{
+ GList *ETFileList = NULL; // Item containing the ETFile to delete... (in ETCore->ETFileList)
+ GList *ETFileDisplayedList = NULL; // Item containing the ETFile to delete... (in ETCore->ETFileDisplayedList)
+
+ // Remove infos of the file
+ ETCore->ETFileDisplayedList_TotalSize -= ((ET_File_Info *)ETFile->ETFileInfo)->size;
+ ETCore->ETFileDisplayedList_TotalDuration -= ((ET_File_Info *)ETFile->ETFileInfo)->duration;
+
+ // Find the ETFileList containing the ETFile item
+ ETFileDisplayedList = g_list_find(g_list_first(ETCore->ETFileDisplayedList),ETFile);
+ ETFileList = g_list_find(g_list_first(ETCore->ETFileList),ETFile);
+
+ // Note : this ETFileList must be used only for ETCore->ETFileDisplayedList, and not ETCore->ETFileDisplayed
+ if (ETCore->ETFileDisplayedList == ETFileDisplayedList)
+ {
+ if (ETFileList->next)
+ ETCore->ETFileDisplayedList = ETFileDisplayedList->next;
+ else if (ETFileList->prev)
+ ETCore->ETFileDisplayedList = ETFileDisplayedList->prev;
+ else
+ ETCore->ETFileDisplayedList = NULL;
+ }
+ // If the current displayed file is just removing, it will be unable to display it again!
+ if (ETCore->ETFileDisplayed == ETFile)
+ {
+ if (ETCore->ETFileDisplayedList)
+ ETCore->ETFileDisplayed = (ET_File *)ETCore->ETFileDisplayedList->data;
+ else
+ ETCore->ETFileDisplayed = (ET_File *)NULL;
+ }
+
+ // Remove the file from the ETFileList list
+ ETCore->ETFileList = g_list_first(g_list_remove_link(g_list_first(ETCore->ETFileList),ETFileList));
+
+ // Remove the file from the ETArtistAlbumList list
+ ET_Remove_File_From_Artist_Album_List(ETFile);
+ //ET_Debug_Print_Artist_Album_List(__FILE__,__LINE__,__FUNCTION__);
+
+ // Remove the file from the ETFileDisplayedList list (if not already done)
+ if ( (ETFileDisplayedList = g_list_find(ETCore->ETFileDisplayedList,ETFile)) )
+ {
+ ETCore->ETFileDisplayedList = g_list_first(g_list_remove_link(g_list_first(ETCore->ETFileDisplayedList),ETFileDisplayedList));
+ }
+
+ // Free data of the file
+ ET_Free_File_List_Item(ETFile);
+ if (ETFileList)
+ g_list_free(ETFileList);
+ if (ETFileDisplayedList)
+ g_list_free(ETFileDisplayedList);
+
+ // Recalculate length of ETFileDisplayedList list
+ ET_Displayed_File_List_Get_Length();
+
+ // To number the ETFile in the list
+ ET_Displayed_File_List_Number();
+
+ // Displaying...
+ if (ETCore->ETFileDisplayedList)
+ {
+ if (ETCore->ETFileDisplayed)
+ {
+ ET_Displayed_File_List_By_Etfile(ETCore->ETFileDisplayed);
+ }else if (ETCore->ETFileDisplayedList->data)
+ {
+ // Select the new file (synchronize index,...)
+ ET_Displayed_File_List_By_Etfile((ET_File *)ETCore->ETFileDisplayedList->data);
+ }
+ }else
+ {
+ // Reinit the tag and file area
+ Clear_File_Entry_Field();
+ Clear_Header_Fields();
+ Clear_Tag_Entry_Fields();
+ gtk_label_set_text(GTK_LABEL(FileIndex),"0/0:");
+ Update_Command_Buttons_Sensivity();
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Delete the corresponding file (allocated data was previously freed!). Return TRUE if deleted.
+ */
+gboolean ET_Remove_File_From_Artist_Album_List (ET_File *ETFile)
+{
+ GList *ArtistList;
+ GList *AlbumList;
+ GList *etfilelist;
+ ET_File *etfile;
+
+
+ // Search the ETFile in the list...
+ ArtistList = ETCore->ETArtistAlbumFileList;
+ while (ArtistList && ETFile)
+ {
+ AlbumList = g_list_first((GList *)ArtistList->data);
+ while (AlbumList)
+ {
+ etfilelist = g_list_first((GList *)AlbumList->data);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ if (ETFile == etfile) // The ETFile to delete was found!
+ {
+ etfilelist = g_list_remove(etfilelist,ETFile);
+ if (etfilelist) // Delete from AlbumList
+ {
+ AlbumList->data = (gpointer) g_list_first(etfilelist);
+ }else
+ {
+ AlbumList = g_list_remove(AlbumList,AlbumList->data);
+ if (AlbumList) // Delete from ArtistList
+ {
+ ArtistList->data = (gpointer) g_list_first(AlbumList);
+ }else
+ {
+ ETCore->ETArtistAlbumFileList = g_list_remove(ArtistList,ArtistList->data); // Delete from the main list
+ if (ETCore->ETArtistAlbumFileList)
+ ETCore->ETArtistAlbumFileList = g_list_first(ETCore->ETArtistAlbumFileList);
+ return TRUE;
+ }
+ return TRUE;
+ }
+ return TRUE;
+ }
+ etfilelist = etfilelist->next;
+ }
+ AlbumList = AlbumList->next;
+ }
+ ArtistList = ArtistList->next;
+ }
+ //ET_Debug_Print_Artist_Album_List(__FILE__,__LINE__,__FUNCTION__);
+ return FALSE; // ETFile is NUL, or not found in the list
+}
+
+
+
+/**************************
+ * File sorting functions *
+ **************************/
+
+/*
+ * Sort the 'ETFileDisplayedList' following the 'Sorting_Type'
+ * Note : Add also new sorting in 'Browser_List_Sort_Func'
+ */
+void ET_Sort_Displayed_File_List (ET_Sorting_Type Sorting_Type)
+{
+ ETCore->ETFileDisplayedList = ET_Sort_File_List(ETCore->ETFileDisplayedList,Sorting_Type);
+}
+/*
+ * Sort an 'ETFileList'
+ */
+GList *ET_Sort_File_List (GList *ETFileList, ET_Sorting_Type Sorting_Type)
+{
+ // Important to rewind before
+ GList *etfilelist = g_list_first(ETFileList);
+
+ // Save sorting mode (note: needed when called from UI)
+ SORTING_FILE_MODE = Sorting_Type;
+
+ // Sort...
+ switch (Sorting_Type)
+ {
+ case SORTING_UNKNOWN:
+ case SORTING_BY_ASCENDING_FILENAME:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Filename);
+ break;
+ case SORTING_BY_DESCENDING_FILENAME:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Filename);
+ break;
+ case SORTING_BY_ASCENDING_TRACK_NUMBER:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Track_Number);
+ break;
+ case SORTING_BY_DESCENDING_TRACK_NUMBER:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Track_Number);
+ break;
+ case SORTING_BY_ASCENDING_CREATION_DATE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Creation_Date);
+ break;
+ case SORTING_BY_DESCENDING_CREATION_DATE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Creation_Date);
+ break;
+ case SORTING_BY_ASCENDING_TITLE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Title);
+ break;
+ case SORTING_BY_DESCENDING_TITLE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Title);
+ break;
+ case SORTING_BY_ASCENDING_ARTIST:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Artist);
+ break;
+ case SORTING_BY_DESCENDING_ARTIST:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Artist);
+ break;
+ case SORTING_BY_ASCENDING_ALBUM:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Album);
+ break;
+ case SORTING_BY_DESCENDING_ALBUM:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Album);
+ break;
+ case SORTING_BY_ASCENDING_YEAR:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Year);
+ break;
+ case SORTING_BY_DESCENDING_YEAR:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Year);
+ break;
+ case SORTING_BY_ASCENDING_GENRE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Genre);
+ break;
+ case SORTING_BY_DESCENDING_GENRE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Genre);
+ break;
+ case SORTING_BY_ASCENDING_COMMENT:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Comment);
+ break;
+ case SORTING_BY_DESCENDING_COMMENT:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Comment);
+ break;
+ case SORTING_BY_ASCENDING_COMPOSER:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Composer);
+ break;
+ case SORTING_BY_DESCENDING_COMPOSER:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Composer);
+ break;
+ case SORTING_BY_ASCENDING_ORIG_ARTIST:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Orig_Artist);
+ break;
+ case SORTING_BY_DESCENDING_ORIG_ARTIST:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Orig_Artist);
+ break;
+ case SORTING_BY_ASCENDING_COPYRIGHT:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Copyright);
+ break;
+ case SORTING_BY_DESCENDING_COPYRIGHT:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Copyright);
+ break;
+ case SORTING_BY_ASCENDING_URL:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Url);
+ break;
+ case SORTING_BY_DESCENDING_URL:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Url);
+ break;
+ case SORTING_BY_ASCENDING_ENCODED_BY:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_Encoded_By);
+ break;
+ case SORTING_BY_DESCENDING_ENCODED_BY:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_Encoded_By);
+ break;
+ case SORTING_BY_ASCENDING_FILE_TYPE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_File_Type);
+ break;
+ case SORTING_BY_DESCENDING_FILE_TYPE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_File_Type);
+ break;
+ case SORTING_BY_ASCENDING_FILE_SIZE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_File_Size);
+ break;
+ case SORTING_BY_DESCENDING_FILE_SIZE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_File_Size);
+ break;
+ case SORTING_BY_ASCENDING_FILE_DURATION:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_File_Duration);
+ break;
+ case SORTING_BY_DESCENDING_FILE_DURATION:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_File_Duration);
+ break;
+ case SORTING_BY_ASCENDING_FILE_BITRATE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_File_Bitrate);
+ break;
+ case SORTING_BY_DESCENDING_FILE_BITRATE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_File_Bitrate);
+ break;
+ case SORTING_BY_ASCENDING_FILE_SAMPLERATE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Ascending_File_Samplerate);
+ break;
+ case SORTING_BY_DESCENDING_FILE_SAMPLERATE:
+ etfilelist = g_list_sort(etfilelist,(GCompareFunc)ET_Comp_Func_Sort_File_By_Descending_File_Samplerate);
+ break;
+ }
+ //ETFileList = g_list_first(etfilelist);
+ return g_list_first(etfilelist);
+}
+
+
+/*
+ * Sort the list of files following the 'Sorting_Type' value. The new sorting is displayed in the UI.
+ */
+void ET_Sort_Displayed_File_List_And_Update_UI (ET_Sorting_Type Sorting_Type)
+{
+ if (!ETCore->ETFileList) return;
+
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ /* Sort the list */
+ ET_Sort_Displayed_File_List(Sorting_Type);
+
+ /* To number the ETFile in the list */
+ ET_Displayed_File_List_Number();
+
+ /* Reload files in browser list */
+ ET_Displayed_File_List_By_Etfile(ETCore->ETFileDisplayed); // Just to update 'ETFileDisplayedList'
+ Browser_List_Select_File_By_Etfile(ETCore->ETFileDisplayed,TRUE);
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+
+ Browser_List_Refresh_Sort();
+ Update_Command_Buttons_Sensivity();
+}
+
+
+/*
+ * Comparison function for sorting by ascending file name.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Filename (ET_File *ETFile1, ET_File *ETFile2)
+{
+ gchar *file1_ck = ((File_Name *)((GList *)ETFile1->FileNameCur)->data)->value_ck;
+ gchar *file2_ck = ((File_Name *)((GList *)ETFile2->FileNameCur)->data)->value_ck;
+ // !!!! : Must be the same rules as "Cddb_Track_List_Sort_Func" to be
+ // able to sort in the same order files in cddb and in the file list.
+ return SORTING_FILE_CASE_SENSITIVE ? strcmp(file1_ck,file2_ck) : strcasecmp(file1_ck,file2_ck);
+}
+
+/*
+ * Comparison function for sorting by descending file name.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Filename (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending track number.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Track_Number (ET_File *ETFile1, ET_File *ETFile2)
+{
+ gint track1, track2;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->track )
+ track1 = 0;
+ else
+ track1 = atoi( ((File_Tag *)ETFile1->FileTag->data)->track );
+
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->track )
+ track2 = 0;
+ else
+ track2 = atoi( ((File_Tag *)ETFile2->FileTag->data)->track );
+
+ // Second criterion
+ if (track1 == track2)
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+
+ // First criterion
+ return (track1 - track2);
+}
+
+/*
+ * Comparison function for sorting by descending track number.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Track_Number (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Track_Number(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending creation date.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Creation_Date (ET_File *ETFile1, ET_File *ETFile2)
+{
+ struct stat statbuf1;
+ struct stat statbuf2;
+ gchar *filename1 = ((File_Name *)ETFile1->FileNameCur->data)->value;
+ gchar *filename2 = ((File_Name *)ETFile2->FileNameCur->data)->value;
+
+ lstat(filename1, &statbuf1);
+ lstat(filename2, &statbuf2);
+
+ // Second criterion
+ if (statbuf1.st_ctime == statbuf2.st_ctime)
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+
+ // First criterion
+ return (statbuf1.st_ctime - statbuf2.st_ctime); // Creation date
+ //return (statbuf1.st_mtime - statbuf2.st_mtime); // Modification date
+}
+
+/*
+ * Comparison function for sorting by descending creation date.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Creation_Date (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Creation_Date(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending title.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Title (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->title == ((File_Tag *)ETFile2->FileTag->data)->title))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->title )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->title )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->title,((File_Tag *)ETFile2->FileTag->data)->title) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->title,((File_Tag *)ETFile2->FileTag->data)->title);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->title,((File_Tag *)ETFile2->FileTag->data)->title) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->title,((File_Tag *)ETFile2->FileTag->data)->title);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending title.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Title (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Title(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending artist.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Artist (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->artist == ((File_Tag *)ETFile2->FileTag->data)->artist))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->artist )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->artist )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->artist,((File_Tag *)ETFile2->FileTag->data)->artist) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->artist,((File_Tag *)ETFile2->FileTag->data)->artist);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->artist,((File_Tag *)ETFile2->FileTag->data)->artist) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->artist,((File_Tag *)ETFile2->FileTag->data)->artist);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending artist.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Artist (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Album(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending album.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Album (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->album == ((File_Tag *)ETFile2->FileTag->data)->album))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->album )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->album )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->album,((File_Tag *)ETFile2->FileTag->data)->album) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->album,((File_Tag *)ETFile2->FileTag->data)->album);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->album,((File_Tag *)ETFile2->FileTag->data)->album) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->album,((File_Tag *)ETFile2->FileTag->data)->album);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending album.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Album (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Album(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending year.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Year (ET_File *ETFile1, ET_File *ETFile2)
+{
+ gint year1, year2;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->year )
+ year1 = 0;
+ else
+ year1 = atoi( ((File_Tag *)ETFile1->FileTag->data)->year );
+
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->year )
+ year2 = 0;
+ else
+ year2 = atoi( ((File_Tag *)ETFile2->FileTag->data)->year );
+
+ // Second criterion
+ if (year1 == year2)
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+
+ // First criterion
+ return (year1 - year2);
+}
+
+/*
+ * Comparison function for sorting by descending year.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Year (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Year(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending genre.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Genre (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->genre == ((File_Tag *)ETFile2->FileTag->data)->genre))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->genre ) return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->genre ) return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->genre,((File_Tag *)ETFile2->FileTag->data)->genre) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->genre,((File_Tag *)ETFile2->FileTag->data)->genre);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->genre,((File_Tag *)ETFile2->FileTag->data)->genre) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->genre,((File_Tag *)ETFile2->FileTag->data)->genre);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending genre.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Genre (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Genre(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending comment.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Comment (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->comment == ((File_Tag *)ETFile2->FileTag->data)->comment))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->comment )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->comment )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->comment,((File_Tag *)ETFile2->FileTag->data)->comment) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->comment,((File_Tag *)ETFile2->FileTag->data)->comment);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->comment,((File_Tag *)ETFile2->FileTag->data)->comment) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->comment,((File_Tag *)ETFile2->FileTag->data)->comment);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending comment.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Comment (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Comment(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending composer.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Composer (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->composer == ((File_Tag *)ETFile2->FileTag->data)->composer))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->composer )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->composer )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->composer,((File_Tag *)ETFile2->FileTag->data)->composer) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->composer,((File_Tag *)ETFile2->FileTag->data)->composer);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->composer,((File_Tag *)ETFile2->FileTag->data)->composer) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->composer,((File_Tag *)ETFile2->FileTag->data)->composer);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending composer.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Composer (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Composer(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending original artist.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Orig_Artist (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->orig_artist == ((File_Tag *)ETFile2->FileTag->data)->orig_artist))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->orig_artist )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->orig_artist )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->orig_artist,((File_Tag *)ETFile2->FileTag->data)->orig_artist) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->orig_artist,((File_Tag *)ETFile2->FileTag->data)->orig_artist);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->orig_artist,((File_Tag *)ETFile2->FileTag->data)->orig_artist) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->orig_artist,((File_Tag *)ETFile2->FileTag->data)->orig_artist);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending original artist.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Orig_Artist (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Orig_Artist(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending copyright.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Copyright (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->copyright == ((File_Tag *)ETFile2->FileTag->data)->copyright))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->copyright )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->copyright )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->copyright,((File_Tag *)ETFile2->FileTag->data)->copyright) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->copyright,((File_Tag *)ETFile2->FileTag->data)->copyright);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->copyright,((File_Tag *)ETFile2->FileTag->data)->copyright) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->copyright,((File_Tag *)ETFile2->FileTag->data)->copyright);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending copyright.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Copyright (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Copyright(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending URL.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Url (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->url == ((File_Tag *)ETFile2->FileTag->data)->url))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->url )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->url )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->url,((File_Tag *)ETFile2->FileTag->data)->url) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->url,((File_Tag *)ETFile2->FileTag->data)->url);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->url,((File_Tag *)ETFile2->FileTag->data)->url) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->url,((File_Tag *)ETFile2->FileTag->data)->url);
+ }
+}
+
+/*
+ * Comparison function for sorting by descending URL.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Url (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Url(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending encoded by.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Encoded_By (ET_File *ETFile1, ET_File *ETFile2)
+{
+ // Compare pointers just in case they are the same (e.g. both are NULL)
+ if ((ETFile1->FileTag->data == ETFile2->FileTag->data)
+ || (((File_Tag *)ETFile1->FileTag->data)->encoded_by == ((File_Tag *)ETFile2->FileTag->data)->encoded_by))
+ return 0;
+
+ if ( !ETFile1->FileTag->data || !((File_Tag *)ETFile1->FileTag->data)->encoded_by )
+ return -1;
+ if ( !ETFile2->FileTag->data || !((File_Tag *)ETFile2->FileTag->data)->encoded_by )
+ return 1;
+
+ if (SORTING_FILE_CASE_SENSITIVE)
+ {
+ if ( strcmp(((File_Tag *)ETFile1->FileTag->data)->encoded_by,((File_Tag *)ETFile2->FileTag->data)->encoded_by) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcmp(((File_Tag *)ETFile1->FileTag->data)->encoded_by,((File_Tag *)ETFile2->FileTag->data)->encoded_by);
+ }else
+ {
+ if ( strcasecmp(((File_Tag *)ETFile1->FileTag->data)->encoded_by,((File_Tag *)ETFile2->FileTag->data)->encoded_by) == 0 )
+ // Second criterion
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+ else
+ // First criterion
+ return strcasecmp(((File_Tag *)ETFile1->FileTag->data)->encoded_by,((File_Tag *)ETFile2->FileTag->data)->encoded_by);
+ }
+}
+
+/*
+ * Comparison function for sorting by descendingencoded by.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_Encoded_By (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_Encoded_By(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending file type (mp3, ogg, ...).
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Type (ET_File *ETFile1, ET_File *ETFile2)
+{
+ if ( !ETFile1->ETFileDescription ) return -1;
+ if ( !ETFile2->ETFileDescription ) return 1;
+
+ // Second criterion
+ if (ETFile1->ETFileDescription->FileType == ETFile2->ETFileDescription->FileType)
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+
+ // First criterion
+ return (ETFile1->ETFileDescription->FileType - ETFile2->ETFileDescription->FileType);
+}
+
+/*
+ * Comparison function for sorting by descending file type (mp3, ogg, ...).
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_File_Type (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_File_Type(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending file size.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Size (ET_File *ETFile1, ET_File *ETFile2)
+{
+ if ( !ETFile1->ETFileInfo ) return -1;
+ if ( !ETFile2->ETFileInfo ) return 1;
+
+ // Second criterion
+ if (ETFile1->ETFileInfo->size == ETFile2->ETFileInfo->size)
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+
+ // First criterion
+ return (ETFile1->ETFileInfo->size - ETFile2->ETFileInfo->size);
+}
+
+/*
+ * Comparison function for sorting by descending file size.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_File_Size (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_File_Size(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending file duration.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Duration (ET_File *ETFile1, ET_File *ETFile2)
+{
+ if ( !ETFile1->ETFileInfo ) return -1;
+ if ( !ETFile2->ETFileInfo ) return 1;
+
+ // Second criterion
+ if (ETFile1->ETFileInfo->duration == ETFile2->ETFileInfo->duration)
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+
+ // First criterion
+ return (ETFile1->ETFileInfo->duration - ETFile2->ETFileInfo->duration);
+}
+
+/*
+ * Comparison function for sorting by descending file duration.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_File_Duration (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_File_Duration(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending file bitrate.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Bitrate (ET_File *ETFile1, ET_File *ETFile2)
+{
+ if ( !ETFile1->ETFileInfo ) return -1;
+ if ( !ETFile2->ETFileInfo ) return 1;
+
+ // Second criterion
+ if (ETFile1->ETFileInfo->bitrate == ETFile2->ETFileInfo->bitrate)
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+
+ // First criterion
+ return (ETFile1->ETFileInfo->bitrate - ETFile2->ETFileInfo->bitrate);
+}
+
+/*
+ * Comparison function for sorting by descending file bitrate.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_File_Bitrate (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_File_Bitrate(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending file samplerate.
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Samplerate (ET_File *ETFile1, ET_File *ETFile2)
+{
+ if ( !ETFile1->ETFileInfo ) return -1;
+ if ( !ETFile2->ETFileInfo ) return 1;
+
+ // Second criterion
+ if (ETFile1->ETFileInfo->samplerate == ETFile2->ETFileInfo->samplerate)
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+
+ // First criterion
+ return (ETFile1->ETFileInfo->samplerate - ETFile2->ETFileInfo->samplerate);
+}
+
+/*
+ * Comparison function for sorting by descending file samplerate.
+ */
+gint ET_Comp_Func_Sort_File_By_Descending_File_Samplerate (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return ET_Comp_Func_Sort_File_By_Ascending_File_Samplerate(ETFile2,ETFile1);
+}
+
+
+/*
+ * Comparison function for sorting by ascending IndexKey (used mainly to have the ETFileSelectionList already sorted.)
+ */
+gint ET_Comp_Func_Sort_File_By_Ascending_Index_Key (ET_File *ETFile1, ET_File *ETFile2)
+{
+ return (ETFile1->IndexKey - ETFile2->IndexKey);
+}
+
+
+/*
+ * Comparison function for sorting by ascending artist in the ArtistAlbumList.
+ */
+gint ET_Comp_Func_Sort_Artist_Item_By_Ascending_Artist (GList *AlbumList1, GList *AlbumList2)
+{
+ GList *etfilelist1 = NULL, *etfilelist2 = NULL;
+ ET_File *etfile1 = NULL, *etfile2 = NULL;
+ gchar *etfile1_artist, *etfile2_artist;
+
+ if (!AlbumList1
+ || !(etfilelist1 = (GList *)AlbumList1->data)
+ || !(etfile1 = (ET_File *)etfilelist1->data)
+ || !(etfile1_artist = ((File_Tag *)etfile1->FileTag->data)->artist) )
+ return -1;
+
+ if (!AlbumList2
+ || !(etfilelist2 = (GList *)AlbumList2->data)
+ || !(etfile2 = (ET_File *)etfilelist2->data)
+ || !(etfile2_artist = ((File_Tag *)etfile2->FileTag->data)->artist) )
+ return 1;
+
+ //if (SORTING_FILE_CASE_SENSITIVE)
+ // return strcmp(etfile1_artist,etfile2_artist);
+ //else
+ return strcasecmp(etfile1_artist,etfile2_artist);
+}
+
+/*
+ * Comparison function for sorting by ascending album in the ArtistAlbumList.
+ */
+gint ET_Comp_Func_Sort_Album_Item_By_Ascending_Album (GList *etfilelist1, GList *etfilelist2)
+{
+ ET_File *etfile1, *etfile2;
+ gchar *etfile1_album, *etfile2_album;
+
+ if (!etfilelist1
+ || !(etfile1 = (ET_File *)etfilelist1->data)
+ || !(etfile1_album = ((File_Tag *)etfile1->FileTag->data)->album) )
+ return -1;
+
+ if (!etfilelist2
+ || !(etfile2 = (ET_File *)etfilelist2->data)
+ || !(etfile2_album = ((File_Tag *)etfile2->FileTag->data)->album) )
+ return 1;
+
+ //if (SORTING_FILE_CASE_SENSITIVE)
+ // return strcmp(etfile1_album,etfile2_album);
+ //else
+ return strcasecmp(etfile1_album,etfile2_album);
+}
+
+/*
+ * Comparison function for sorting etfile in the ArtistAlbumList.
+ * FIX ME : should use the default sorting!
+ */
+gint ET_Comp_Func_Sort_Etfile_Item_By_Ascending_Filename (ET_File *ETFile1, ET_File *ETFile2)
+{
+
+ if (!ETFile1) return -1;
+ if (!ETFile2) return 1;
+
+ return ET_Comp_Func_Sort_File_By_Ascending_Filename(ETFile1,ETFile2);
+}
+
+
+
+
+/***************************
+ * List handling functions *
+ ***************************/
+
+/*
+ * Returns the first item of the "displayed list"
+ */
+GList *ET_Displayed_File_List_First (void)
+{
+ ETCore->ETFileDisplayedList = g_list_first(ETCore->ETFileDisplayedList);
+ return ETCore->ETFileDisplayedList;
+}
+
+/*
+ * Returns the previous item of the "displayed list". When no more item, it returns NULL.
+ */
+GList *ET_Displayed_File_List_Previous (void)
+{
+ if (ETCore->ETFileDisplayedList && ETCore->ETFileDisplayedList->prev)
+ return ETCore->ETFileDisplayedList = ETCore->ETFileDisplayedList->prev;
+ else
+ return NULL;
+}
+
+/*
+ * Returns the next item of the "displayed list".
+ * When no more item, it returns NULL to don't "overwrite" the list.
+ */
+GList *ET_Displayed_File_List_Next (void)
+{
+ if (ETCore->ETFileDisplayedList && ETCore->ETFileDisplayedList->next)
+ return ETCore->ETFileDisplayedList = ETCore->ETFileDisplayedList->next;
+ else
+ return NULL;
+}
+
+/*
+ * Returns the last item of the "displayed list"
+ */
+GList *ET_Displayed_File_List_Last (void)
+{
+ ETCore->ETFileDisplayedList = g_list_last(ETCore->ETFileDisplayedList);
+ return ETCore->ETFileDisplayedList;
+}
+
+/*
+ * Returns the item of the "displayed list" which correspond to the given 'ETFile' (used into browser list).
+ */
+GList *ET_Displayed_File_List_By_Etfile (ET_File *ETFile)
+{
+ GList *etfilelist;
+
+ etfilelist = ET_Displayed_File_List_First();
+ while (ETFile && etfilelist)
+ {
+ if ( ETFile == (ET_File *)etfilelist->data )
+ break;
+ etfilelist = ET_Displayed_File_List_Next();
+ }
+ ETCore->ETFileDisplayedList = etfilelist; // To "save" the position like in ET_File_List_Next... (not very good - FIX ME)
+ return etfilelist;
+}
+
+/*
+ * Returns the item of the "displayed list" which have the position 'pos_in_list' in the list (used into CDDB result list).
+ * Range for 'pos_in_list' is 1 to ETFileDisplayedList_Length.
+ */
+GList *ET_Displayed_File_List_By_Position (gulong pos_in_list)
+{
+ GList *etfilelist;
+ guint i = 1;
+
+ etfilelist = ET_Displayed_File_List_First();
+ while (etfilelist)
+ {
+ if (i == pos_in_list)
+ break;
+ etfilelist = ET_Displayed_File_List_Next();
+ i++;
+ }
+ ETCore->ETFileDisplayedList = etfilelist; // To "save" the position like in ET_Displayed_File_List_Next... (not very good - FIX ME)
+ return etfilelist;
+}
+
+/*
+ * Just returns the current item of the "main list"
+ */
+/*GList *ET_Displayed_File_List_Current (void)
+{
+ return ETCore->ETFileDisplayedList;
+ //return ETCore->ETFileDisplayedListPtr;
+}*/
+
+/*
+ * Renumber the list of displayed files (IndexKey) from 1 to n
+ */
+void ET_Displayed_File_List_Number (void)
+{
+ GList *list = NULL;
+ guint i = 1;
+
+ list = g_list_first(ETCore->ETFileDisplayedList);
+ while (list)
+ {
+ ((ET_File *)list->data)->IndexKey = i++;
+ list = list->next;
+ }
+}
+
+/*
+ * Returns the length of the list of displayed files
+ */
+guint ET_Displayed_File_List_Get_Length (void)
+{
+ GList *list = NULL;
+
+ list = g_list_first(ETCore->ETFileDisplayedList);
+ ETCore->ETFileDisplayedList_Length = g_list_length(list);
+ return ETCore->ETFileDisplayedList_Length;
+}
+
+/*
+ * Load the list of displayed files (calculate length, size, ...)
+ * It contains part (filtrated : view by artists and albums) or full ETCore->ETFileList list
+ */
+gboolean ET_Set_Displayed_File_List (GList *ETFileList)
+{
+ GList *list = NULL;
+
+ ETCore->ETFileDisplayedList = g_list_first(ETFileList);
+
+ //ETCore->ETFileDisplayedListPtr = ETCore->ETFileDisplayedList;
+ ETCore->ETFileDisplayedList_Length = ET_Displayed_File_List_Get_Length();
+ ETCore->ETFileDisplayedList_TotalSize = 0;
+ ETCore->ETFileDisplayedList_TotalDuration = 0;
+
+ // Get size and duration of files in the list
+ list = ETCore->ETFileDisplayedList;
+ while (list)
+ {
+ ETCore->ETFileDisplayedList_TotalSize += ((ET_File_Info *)((ET_File *)list->data)->ETFileInfo)->size;
+ ETCore->ETFileDisplayedList_TotalDuration += ((ET_File_Info *)((ET_File *)list->data)->ETFileInfo)->duration;
+ list = list->next;
+ }
+
+ // Sort the file list
+ ET_Sort_Displayed_File_List(SORTING_FILE_MODE);
+
+ // Should renums ETCore->ETFileDisplayedList only!
+ ET_Displayed_File_List_Number();
+
+ return TRUE;
+}
+
+
+
+/*********************
+ * Freeing functions *
+ *********************/
+
+/*
+ * Frees the full main list of files: GList *ETFileList and reinitialize it.
+ */
+gboolean ET_Free_File_List (void)
+{
+ GList *list = NULL;
+
+ if (!ETCore || !ETCore->ETFileList) return FALSE;
+
+ list = g_list_last(ETCore->ETFileList);
+ while (list)
+ {
+ ET_Free_File_List_Item((ET_File *)list->data);
+ if (!list->prev) break;
+ list = list->prev;
+ }
+
+ g_list_free(list);
+ ETCore->ETFileList = (GList *)NULL;
+ return TRUE;
+}
+
+
+/*
+ * Frees one item of the full main list of files.
+ */
+gboolean ET_Free_File_List_Item (ET_File *ETFile)
+{
+ if (ETFile)
+ {
+ /* Frees the lists */
+ ET_Free_File_Name_List(ETFile->FileNameList);
+ ET_Free_File_Name_List(ETFile->FileNameListBak);
+ ET_Free_File_Tag_List (ETFile->FileTagList);
+ ET_Free_File_Tag_List (ETFile->FileTagListBak);
+ /* Frees infos of ETFileInfo */
+ ET_Free_File_Info_Item (ETFile->ETFileInfo);
+ g_free(ETFile->ETFileExtension);
+ g_free(ETFile);
+ ETFile = NULL;
+ }
+ return TRUE;
+}
+
+
+/*
+ * Frees the full list: GList *FileNameList.
+ */
+gboolean ET_Free_File_Name_List (GList *FileNameList)
+{
+ GList *list;
+
+ if (!FileNameList) return FALSE;
+
+ list = g_list_last(FileNameList);
+ while (list)
+ {
+ if ( (File_Name *)list->data )
+ ET_Free_File_Name_Item( (File_Name *)list->data );
+
+ if (!list->prev) break;
+ list = list->prev;
+ }
+ g_list_free(list);
+ FileNameList = (GList *)NULL;
+ return TRUE;
+}
+
+
+/*
+ * Frees a File_Name item.
+ */
+gboolean ET_Free_File_Name_Item (File_Name *FileName)
+{
+ if (!FileName) return FALSE;
+
+ g_free(FileName->value);
+ g_free(FileName->value_utf8);
+ g_free(FileName->value_ck);
+ g_free(FileName);
+ FileName = (File_Name *)NULL;
+ return TRUE;
+}
+
+
+/*
+ * Frees the full list: GList *TagList.
+ */
+gboolean ET_Free_File_Tag_List (GList *FileTagList)
+{
+ GList *list;
+
+ if (!FileTagList) return FALSE;
+
+ list = g_list_last(FileTagList);
+ while (list)
+ {
+ if ( (File_Tag *)list->data )
+ ET_Free_File_Tag_Item( (File_Tag *)list->data );
+
+ if (!list->prev) break;
+ list = list->prev;
+ }
+ g_list_free(list);
+ FileTagList = (GList *)NULL;
+ return TRUE;
+}
+
+
+/*
+ * Frees the list of 'other' field in a File_Tag item (contains attached gchar data).
+ */
+gboolean ET_Free_File_Tag_Item_Other_Field (File_Tag *FileTag)
+{
+ GList *other = FileTag->other;
+
+ while (other)
+ {
+ g_free(other->data);
+
+ if (!other->next) break;
+ other = other->next;
+ }
+ g_list_free(FileTag->other);
+
+ return TRUE;
+}
+
+
+/*
+ * Frees a File_Tag item.
+ */
+gboolean ET_Free_File_Tag_Item (File_Tag *FileTag)
+{
+ if (!FileTag) return FALSE;
+
+ g_free(FileTag->title);
+ g_free(FileTag->artist);
+ g_free(FileTag->album);
+ g_free(FileTag->disc_number);
+ g_free(FileTag->year);
+ g_free(FileTag->track);
+ g_free(FileTag->track_total);
+ g_free(FileTag->genre);
+ g_free(FileTag->comment);
+ g_free(FileTag->composer);
+ g_free(FileTag->orig_artist);
+ g_free(FileTag->copyright);
+ g_free(FileTag->url);
+ g_free(FileTag->encoded_by);
+ Picture_Free(FileTag->picture);
+ // Free list of other fields
+ ET_Free_File_Tag_Item_Other_Field(FileTag);
+
+ g_free(FileTag);
+ FileTag = (File_Tag *)NULL;
+ return TRUE;
+}
+
+
+/*
+ * Frees a File_Info item.
+ */
+gboolean ET_Free_File_Info_Item (ET_File_Info *ETFileInfo)
+{
+ if (!ETFileInfo) return FALSE;
+
+ g_free(ETFileInfo->mpc_profile);
+ g_free(ETFileInfo->mpc_version);
+
+ g_free(ETFileInfo);
+ ETFileInfo = (ET_File_Info *)NULL;
+ return TRUE;
+}
+
+
+/*
+ * History list contains only pointers, so no data to free except the history structure.
+ */
+gboolean ET_Free_History_File_List (void)
+{
+ GList *list;
+
+ if (!ETCore || !ETCore->ETHistoryFileList) return FALSE;
+
+ ETCore->ETHistoryFileList = g_list_first(ETCore->ETHistoryFileList);
+ list = ETCore->ETHistoryFileList;
+ while (list)
+ {
+ g_free( (ET_History_File *)list->data );
+
+ if (!list->next) break;
+ list = list->next;
+ }
+ g_list_free(ETCore->ETHistoryFileList);
+ ETCore->ETHistoryFileList = (GList *)NULL;
+ return TRUE;
+}
+
+/*
+ * "Display" list contains only pointers, so NOTHING to free
+ */
+gboolean ET_Free_Displayed_File_List (void)
+{
+ if (!ETCore || !ETCore->ETFileDisplayedList) return FALSE;
+
+ ETCore->ETFileDisplayedList = g_list_first(ETCore->ETFileDisplayedList);
+ ETCore->ETFileDisplayedList = (GList *)NULL;
+
+ return TRUE;
+}
+
+
+/*
+ * ArtistAlbum list contains 3 levels of lists
+ */
+gboolean ET_Free_Artist_Album_File_List (void)
+{
+ GList *ArtistList;
+ GList *AlbumList;
+ GList *etfilelist;
+
+ if (!ETCore || !ETCore->ETArtistAlbumFileList) return FALSE;
+
+ ArtistList = ETCore->ETArtistAlbumFileList;
+ while (ArtistList)
+ {
+ AlbumList = (GList *)ArtistList->data;
+ while (AlbumList)
+ {
+ etfilelist = (GList *)AlbumList->data;
+ if (etfilelist)
+ g_list_free(etfilelist);
+ AlbumList = AlbumList->next;
+ }
+ if (ArtistList->data) // Free AlbumList list
+ g_list_free((GList *)ArtistList->data);
+
+ ArtistList = ArtistList->next;
+ }
+ if (ETCore->ETArtistAlbumFileList)
+ g_list_free(ETCore->ETArtistAlbumFileList);
+
+ ETCore->ETArtistAlbumFileList = (GList *)NULL;
+
+ return TRUE;
+}
+
+
+
+
+/*********************
+ * Copying functions *
+ *********************/
+
+/*
+ * Duplicate the 'other' list
+ */
+gboolean ET_Copy_File_Tag_Item_Other_Field (ET_File *ETFile, File_Tag *FileTag)
+{
+ File_Tag *FileTagCur;
+ GList *list = NULL;
+
+ FileTagCur = (File_Tag *)(ETFile->FileTag)->data;
+ list = FileTagCur->other;
+ while (list)
+ {
+ FileTag->other = g_list_append(FileTag->other,g_strdup((gchar *)list->data));
+ list = list->next;
+ }
+ return TRUE;
+}
+
+
+/*
+ * Copy data of the File_Tag structure (of ETFile) to the FileTag item.
+ * Reallocate data if not null.
+ */
+gboolean ET_Copy_File_Tag_Item (ET_File *ETFile, File_Tag *FileTag)
+{
+ File_Tag *FileTagCur;
+
+ if (!ETFile || !ETFile->FileTag || !(File_Tag *)(ETFile->FileTag)->data || !FileTag)
+ return FALSE;
+
+ /* The data to duplicate to FileTag */
+ FileTagCur = (File_Tag *)(ETFile->FileTag)->data;
+ // Key for the item, may be overwritten
+ FileTag->key = ET_Undo_Key_New();
+
+ if (FileTagCur->title)
+ {
+ FileTag->title = g_strdup(FileTagCur->title);
+ }else
+ {
+ g_free(FileTag->title);
+ FileTag->title = NULL;
+ }
+
+ if (FileTagCur->artist)
+ {
+ FileTag->artist = g_strdup(FileTagCur->artist);
+ }else
+ {
+ g_free(FileTag->artist);
+ FileTag->artist = NULL;
+ }
+
+ if (FileTagCur->album)
+ {
+ FileTag->album = g_strdup(FileTagCur->album);
+ }else
+ {
+ g_free(FileTag->album);
+ FileTag->album = NULL;
+ }
+
+ if (FileTagCur->disc_number)
+ {
+ FileTag->disc_number = g_strdup(FileTagCur->disc_number);
+ }else
+ {
+ g_free(FileTag->disc_number);
+ FileTag->disc_number = NULL;
+ }
+
+ if (FileTagCur->year)
+ {
+ FileTag->year = g_strdup(FileTagCur->year);
+ }else
+ {
+ g_free(FileTag->year);
+ FileTag->year = NULL;
+ }
+
+ if (FileTagCur->track)
+ {
+ FileTag->track = g_strdup(FileTagCur->track);
+ }else
+ {
+ g_free(FileTag->track);
+ FileTag->track = NULL;
+ }
+
+ if (FileTagCur->track_total)
+ {
+ FileTag->track_total = g_strdup(FileTagCur->track_total);
+ }else
+ {
+ g_free(FileTag->track_total);
+ FileTag->track_total = NULL;
+ }
+
+ if (FileTagCur->genre)
+ {
+ FileTag->genre = g_strdup(FileTagCur->genre);
+ }else
+ {
+ g_free(FileTag->genre);
+ FileTag->genre = NULL;
+ }
+
+ if (FileTagCur->comment)
+ {
+ FileTag->comment = g_strdup(FileTagCur->comment);
+ }else
+ {
+ g_free(FileTag->comment);
+ FileTag->comment = NULL;
+ }
+
+ if (FileTagCur->composer)
+ {
+ FileTag->composer = g_strdup(FileTagCur->composer);
+ }else
+ {
+ g_free(FileTag->composer);
+ FileTag->composer = NULL;
+ }
+
+ if (FileTagCur->orig_artist)
+ {
+ FileTag->orig_artist = g_strdup(FileTagCur->orig_artist);
+ }else
+ {
+ g_free(FileTag->orig_artist);
+ FileTag->orig_artist = NULL;
+ }
+
+ if (FileTagCur->copyright)
+ {
+ FileTag->copyright = g_strdup(FileTagCur->copyright);
+ }else
+ {
+ g_free(FileTag->copyright);
+ FileTag->copyright = NULL;
+ }
+
+ if (FileTagCur->url)
+ {
+ FileTag->url = g_strdup(FileTagCur->url);
+ }else
+ {
+ g_free(FileTag->url);
+ FileTag->url = NULL;
+ }
+
+ if (FileTagCur->encoded_by)
+ {
+ FileTag->encoded_by = g_strdup(FileTagCur->encoded_by);
+ }else
+ {
+ g_free(FileTag->encoded_by);
+ FileTag->encoded_by = NULL;
+ }
+
+ if (FileTagCur->picture)
+ {
+ if (FileTag->picture)
+ Picture_Free(FileTag->picture);
+ FileTag->picture = Picture_Copy(FileTagCur->picture);
+ }else if (FileTag->picture)
+ {
+ Picture_Free(FileTag->picture);
+ FileTag->picture = NULL;
+ }
+
+ if (FileTagCur->other)
+ {
+ ET_Copy_File_Tag_Item_Other_Field(ETFile,FileTag);
+ }else
+ {
+ ET_Free_File_Tag_Item_Other_Field (FileTag);
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Set the value of a field of a FileName item (for ex, value of FileName->value)
+ * Must be used only for the 'gchar *' components (Only used for the filename)
+ */
+gboolean ET_Set_Field_File_Name_Item (gchar **FileNameField, gchar *value)
+{
+ return ET_Set_Field_File_Tag_Item(FileNameField,value);
+}
+
+
+/*
+ * Fill content of a FileName item according to the filename passed in argument (UTF-8 filename or not)
+ * Calculate also the collate key.
+ */
+gboolean ET_Set_Filename_File_Name_Item (File_Name *FileName, gchar *filename_utf8, gchar *filename)
+{
+ if (!FileName)
+ return FALSE;
+
+ if (filename_utf8 && filename)
+ {
+ FileName->value_utf8 = g_strdup(filename_utf8);
+ FileName->value = g_strdup(filename);
+ FileName->value_ck = g_utf8_collate_key_for_filename(FileName->value_utf8, -1);
+ }else if (filename_utf8)
+ {
+ FileName->value_utf8 = g_strdup(filename_utf8);
+ FileName->value = filename_from_display(filename_utf8);
+ FileName->value_ck = g_utf8_collate_key_for_filename(FileName->value_utf8, -1);
+ }else if (filename)
+ {
+ FileName->value_utf8 = filename_to_display(filename);;
+ FileName->value = g_strdup(filename);
+ FileName->value_ck = g_utf8_collate_key_for_filename(FileName->value_utf8, -1);
+ }else
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Set the value of a field of a FileTag item (for ex, value of FileTag->title)
+ * Must be used only for the 'gchar *' components
+ */
+gboolean ET_Set_Field_File_Tag_Item (gchar **FileTagField, gchar *value)
+{
+ if (!FileTagField) return FALSE;
+
+ if (*FileTagField != NULL)
+ {
+ g_free(*FileTagField);
+ *FileTagField = NULL;
+ }
+
+ if (value != NULL)
+ {
+ if (g_utf8_strlen(value, -1) > 0)
+ *FileTagField = g_strdup(value);
+ else
+ *FileTagField = NULL;
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Set the value of a field of a FileTag Picture item.
+ */
+gboolean ET_Set_Field_File_Tag_Picture (Picture **FileTagField, Picture *pic)
+{
+ if (!FileTagField) return FALSE;
+
+ if (*FileTagField != NULL)
+ {
+ Picture_Free((Picture *)*FileTagField);
+ *FileTagField = NULL;
+ }
+
+ if (pic)
+ *FileTagField = Picture_Copy(pic);
+
+ return TRUE;
+}
+
+
+/************************
+ * Displaying functions *
+ ************************/
+
+/*
+ * Display informations of the file (Position + Header + Tag) to the user interface.
+ * Before doing it, it saves data of the file currently displayed
+ */
+void ET_Display_File_Data_To_UI (ET_File *ETFile)
+{
+ ET_File_Description *ETFileDescription;
+ gchar *cur_filename;
+ gchar *cur_filename_utf8;
+ gchar *msg;
+
+ if (!ETFile) return;
+
+ cur_filename = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value;
+ cur_filename_utf8 = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value_utf8;
+ ETFileDescription = ETFile->ETFileDescription;
+
+ /* Save the current displayed file */
+ ETCore->ETFileDisplayed = ETFile;
+
+ /* Display position in list + show/hide icon if file writable/read_only (cur_filename) */
+ ET_Display_File_And_List_Status_To_UI(ETFile);
+
+ /* Display filename (and his path) (value in FileNameNew) */
+ ET_Display_Filename_To_UI(ETFile);
+
+ /* Display tag data */
+ switch (ETFileDescription->TagType)
+ {
+#ifdef ENABLE_MP3
+ case ID3_TAG:
+ gtk_frame_set_label(GTK_FRAME(TagFrame),_("ID3 Tag"));
+ ET_Display_File_Tag_To_UI(ETFile);
+ break;
+#endif
+#ifdef ENABLE_OGG
+ case OGG_TAG:
+ gtk_frame_set_label(GTK_FRAME(TagFrame),_("Ogg Vorbis Tag"));
+ ET_Display_File_Tag_To_UI(ETFile);
+ break;
+#endif
+#ifdef ENABLE_FLAC
+ case FLAC_TAG:
+ gtk_frame_set_label(GTK_FRAME(TagFrame),_("FLAC Vorbis Tag"));
+ ET_Display_File_Tag_To_UI(ETFile);
+ break;
+#endif
+ case APE_TAG:
+ gtk_frame_set_label(GTK_FRAME(TagFrame),_("APE Tag"));
+ ET_Display_File_Tag_To_UI(ETFile);
+ break;
+#ifdef ENABLE_MP4
+ case MP4_TAG:
+ gtk_frame_set_label(GTK_FRAME(TagFrame),_("MP4/M4A/AAC Tag"));
+ ET_Display_File_Tag_To_UI(ETFile);
+ break;
+#endif
+#ifdef ENABLE_WAVPACK
+ case WAVPACK_TAG:
+ gtk_frame_set_label(GTK_FRAME(TagFrame),_("Wavpack Tag"));
+ ET_Display_File_Tag_To_UI(ETFile);
+ break;
+#endif
+ case UNKNOWN_TAG:
+ default:
+ gtk_frame_set_label(GTK_FRAME(TagFrame),_("Tag"));
+ ET_Display_File_Tag_To_UI(ETFile); // To reinit screen
+ Log_Print("FileTag: Undefined tag type %d for file %s.",ETFileDescription->TagType,cur_filename_utf8);
+ break;
+ }
+
+ /* Display controls in tag area */
+ Tag_Area_Display_Controls(ETFile);
+
+ /* Display file data, header data and file type */
+ switch (ETFileDescription->FileType)
+ {
+#ifdef ENABLE_MP3
+ case MP3_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("MP3 File"));
+ Mpeg_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+ case MP2_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("MP2 File"));
+ Mpeg_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+#endif
+#ifdef ENABLE_OGG
+ case OGG_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("Ogg Vorbis File"));
+ Ogg_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+#endif
+#ifdef ENABLE_SPEEX
+ case SPEEX_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("Speex File"));
+ Ogg_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+#endif
+#ifdef ENABLE_FLAC
+ case FLAC_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("FLAC File"));
+ Flac_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+#endif
+ case MPC_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("MusePack File"));
+ Mpc_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+ case MAC_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("Monkey's Audio File"));
+ Mac_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+#ifdef ENABLE_MP4
+ case MP4_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("MP4/AAC File"));
+ Mp4_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+#endif
+#ifdef ENABLE_WAVPACK
+ case WAVPACK_FILE:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("Wavpack File"));
+ Wavpack_Header_Display_File_Info_To_UI(cur_filename,ETFile->ETFileInfo);
+ break;
+#endif
+ case UNKNOWN_FILE:
+ default:
+ gtk_frame_set_label(GTK_FRAME(FileFrame),_("File"));
+ // Default displaying
+ ET_Display_File_Info_To_UI(ETFile->ETFileInfo);
+ Log_Print("ETFileInfo: Undefined file type %d for file %s.",ETFileDescription->FileType,cur_filename_utf8);
+ break;
+ }
+
+ msg = g_strdup_printf(_("File: '%s'"), cur_filename_utf8);
+ Statusbar_Message(msg,FALSE);
+ g_free(msg);
+}
+
+
+/*
+ * Toggle visibility of the small status icon if filename is read-only or not found.
+ * Show the position of the current file in the list, by using the index and list length.
+ */
+void ET_Display_File_And_List_Status_To_UI (ET_File *ETFile)
+{
+ FILE *file;
+ gchar *text;
+ gchar *cur_filename;
+
+ if (!ETFile) return;
+
+ cur_filename = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value;
+
+ /* Show/hide 'AccessStatusIcon' */
+ if ( (file=fopen(cur_filename,"r+b"))!=NULL )
+ {
+ gtk_widget_hide(ReadOnlyStatusIconBox);
+ gtk_widget_hide(BrokenStatusIconBox);
+ fclose(file);
+ }else
+ {
+ switch(errno)
+ {
+ case EACCES: /* Permission denied */
+ case EROFS: /* Read-only file system */
+ /* Read only file */
+ gtk_widget_show_all(ReadOnlyStatusIconBox);
+ gtk_widget_hide(BrokenStatusIconBox);
+ break;
+ case ENOENT: /* No such file or directory */
+ default:
+ /* File not found */
+ gtk_widget_show_all(BrokenStatusIconBox);
+ gtk_widget_hide(ReadOnlyStatusIconBox);
+ }
+ }
+
+ /* Show position of current file in list */
+ text = g_strdup_printf("%d/%d:",ETFile->IndexKey,ETCore->ETFileDisplayedList_Length);
+ gtk_label_set_text(GTK_LABEL(FileIndex),text);
+ g_free(text);
+}
+
+void ET_Display_Filename_To_UI (ET_File *ETFile)
+{
+ gchar *pos;
+ gchar *new_filename_utf8;
+ gchar *basename_utf8;
+ gchar *dirname_utf8;
+ gchar *text;
+
+ if (!ETFile) return;
+
+ new_filename_utf8 = ((File_Name *)((GList *)ETFile->FileNameNew)->data)->value_utf8;
+
+ /*
+ * Set filename into FileEntry
+ */
+ basename_utf8 = g_path_get_basename(new_filename_utf8);
+
+ // Remove the extension
+ if ((pos=g_utf8_strrchr(basename_utf8, -1, '.'))!=NULL)
+ *pos = 0;
+ gtk_entry_set_text(GTK_ENTRY(FileEntry),basename_utf8);
+ /*FIX ME : gchar *tmp = ET_Utf8_Validate_Full_String(basename_utf8);
+ g_free(tmp);*/
+ g_free(basename_utf8);
+ // Justify to the left text into FileEntry
+ gtk_editable_set_position(GTK_EDITABLE(FileEntry),0);
+
+ /*
+ * Set the path to the file into BrowserEntry (dirbrowser)
+ */
+ dirname_utf8 = g_path_get_dirname(new_filename_utf8);
+ Browser_Entry_Set_Text(dirname_utf8);
+
+ // And refresh the number of files in this directory
+ text = g_strdup_printf(_("%u file(s)"),ET_Get_Number_Of_Files_In_Directory(dirname_utf8));
+ Browser_Label_Set_Text(text);
+ g_free(dirname_utf8);
+ g_free(text);
+}
+
+
+/*
+ * Display all tag infos (tags fields) into entry boxes of the user interface.
+ * These data have the same structure for all files.
+ */
+gboolean ET_Display_File_Tag_To_UI (ET_File *ETFile)
+{
+ File_Tag *FileTag = NULL;
+ //GtkTextBuffer *textbuffer;
+
+ if (!ETFile || !ETFile->FileTag)
+ {
+ // Reset all tag entries
+ Clear_Tag_Entry_Fields();
+ //Tag_Area_Set_Sensitive(FALSE);
+ return FALSE;
+ }
+
+ //Tag_Area_Set_Sensitive(TRUE); // Causes displaying problem when saving files
+
+ FileTag = (File_Tag *)(ETFile->FileTag->data);
+
+ /* Show title */
+ if (FileTag && FileTag->title)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->title);
+ gtk_entry_set_text(GTK_ENTRY(TitleEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(TitleEntry),"");
+
+ /* Show artist */
+ if (FileTag && FileTag->artist)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->artist);
+ gtk_entry_set_text(GTK_ENTRY(ArtistEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(ArtistEntry),"");
+
+ /* Show album */
+ if (FileTag && FileTag->album)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->album);
+ gtk_entry_set_text(GTK_ENTRY(AlbumEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(AlbumEntry),"");
+
+ /* Show disc_number */
+ if (FileTag && FileTag->disc_number)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->disc_number);
+ gtk_entry_set_text(GTK_ENTRY(DiscNumberEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(DiscNumberEntry),"");
+
+ /* Show year */
+ if (FileTag && FileTag->year)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->year);
+ gtk_entry_set_text(GTK_ENTRY(YearEntry),tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(YearEntry),"");
+
+ /* Show track */
+ if (FileTag && FileTag->track)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->track);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child),tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child),"");
+
+ /* Show number of tracks on the album */
+ if (FileTag && FileTag->track_total)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->track_total);
+ gtk_entry_set_text(GTK_ENTRY(TrackTotalEntry),tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(TrackTotalEntry),"");
+
+ /* Show genre */
+ if (FileTag && FileTag->genre)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->genre);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(GenreCombo)->child), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(GenreCombo)->child),"");
+
+ /* Show comment */
+ //textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(CommentView));
+ if (FileTag && FileTag->comment)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->comment);
+ //gtk_text_buffer_set_text(GTK_TEXT_BUFFER(textbuffer), FileTag->comment, -1);
+ gtk_entry_set_text(GTK_ENTRY(CommentEntry), tmp);
+ g_free(tmp);
+ }else
+ //gtk_text_buffer_set_text(GTK_TEXT_BUFFER(textbuffer), "", -1);
+ gtk_entry_set_text(GTK_ENTRY(CommentEntry),"");
+
+ /* Show composer */
+ if (FileTag && FileTag->composer)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->composer);
+ gtk_entry_set_text(GTK_ENTRY(ComposerEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(ComposerEntry),"");
+
+ /* Show original artist */
+ if (FileTag && FileTag->orig_artist)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->orig_artist);
+ gtk_entry_set_text(GTK_ENTRY(OrigArtistEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(OrigArtistEntry),"");
+
+ /* Show copyright */
+ if (FileTag && FileTag->copyright)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->copyright);
+ gtk_entry_set_text(GTK_ENTRY(CopyrightEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(CopyrightEntry),"");
+
+ /* Show URL */
+ if (FileTag && FileTag->url)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->url);
+ gtk_entry_set_text(GTK_ENTRY(URLEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(URLEntry),"");
+
+ /* Show Encoded by */
+ if (FileTag && FileTag->encoded_by)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(FileTag->encoded_by);
+ gtk_entry_set_text(GTK_ENTRY(EncodedByEntry), tmp);
+ g_free(tmp);
+ }else
+ gtk_entry_set_text(GTK_ENTRY(EncodedByEntry),"");
+
+ /* Show picture */
+ PictureEntry_Clear();
+ if (FileTag && FileTag->picture)
+ {
+ Picture *pic = FileTag->picture;
+ guint nbr_pic = 0;
+ GtkWidget *page;
+ gchar *string;
+
+ PictureEntry_Update(FileTag->picture, 0);
+
+ // Count the number of items
+ while (pic)
+ {
+ nbr_pic++;
+ pic = pic->next;
+ }
+
+ // Get page "Pictures" of the notebook
+ page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(TagNoteBook),1);
+ string = g_strdup_printf(_("Pictures (%d)"),nbr_pic);
+ // Update the notebook tab
+ gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(TagNoteBook),page,string);
+ // Update the notebook menu
+ gtk_notebook_set_menu_label_text(GTK_NOTEBOOK(TagNoteBook),page,string);
+ g_free(string);
+
+ }else
+ {
+ GtkWidget *page;
+ // Get page "Pictures" of the notebook
+ page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(TagNoteBook),1);
+ // Update the notebook tab
+ gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(TagNoteBook),page,"Pictures");
+ // Update the notebook menu
+ gtk_notebook_set_menu_label_text(GTK_NOTEBOOK(TagNoteBook),page,"Pictures");
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * "Default" way to display File Info to the user interface.
+ */
+gboolean ET_Display_File_Info_To_UI(ET_File_Info *ETFileInfo)
+{
+ gchar *text;
+ gchar *time = NULL;
+ gchar *time1 = NULL;
+ gchar *size = NULL;
+ gchar *size1 = NULL;
+
+ /* MPEG, Layer versions */
+ text = g_strdup_printf("%d, Layer %d",ETFileInfo->version,ETFileInfo->layer);
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),text);
+ g_free(text);
+
+ /* Bitrate */
+ text = g_strdup_printf(_("%d kb/s"),ETFileInfo->bitrate);
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel),text);
+ g_free(text);
+
+ /* Samplerate */
+ text = g_strdup_printf(_("%d Hz"),ETFileInfo->samplerate);
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),text);
+ g_free(text);
+
+ /* Mode */
+ text = g_strdup_printf("%d",ETFileInfo->mode);
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel),text);
+ g_free(text);
+
+ /* Size */
+ size = Convert_Size(ETFileInfo->size);
+ size1 = Convert_Size(ETCore->ETFileDisplayedList_TotalSize);
+ text = g_strdup_printf("%s (%s)",size,size1);
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel),text);
+ g_free(size);
+ g_free(size1);
+ g_free(text);
+
+ /* Duration */
+ time = Convert_Duration(ETFileInfo->duration);
+ time1 = Convert_Duration(ETCore->ETFileDisplayedList_TotalDuration);
+ text = g_strdup_printf("%s (%s)",time,time1);
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel),text);
+ g_free(time);
+ g_free(time1);
+ g_free(text);
+
+ return TRUE;
+}
+
+
+
+
+/********************
+ * Saving functions *
+ ********************/
+
+/*
+ * Save informations of the file, contained into the entries of the user interface, in the list.
+ * An undo key is generated to be used for filename and tag if there are changed is the same time.
+ * Filename and Tag.
+ */
+void ET_Save_File_Data_From_UI (ET_File *ETFile)
+{
+ ET_File_Description *ETFileDescription;
+ File_Name *FileName;
+ File_Tag *FileTag;
+ guint undo_key;
+ gchar *cur_filename_utf8;
+
+ if (!ETFile ||
+ !ETFile->FileNameCur ||
+ !ETFile->FileNameCur->data)
+ return;
+
+ cur_filename_utf8 = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value_utf8;
+ ETFileDescription = ETFile->ETFileDescription;
+ undo_key = ET_Undo_Key_New();
+
+
+ /*
+ * Save filename and generate undo for filename
+ */
+ FileName = g_malloc0(sizeof(File_Name));
+ ET_Initialize_File_Name_Item(FileName);
+ FileName->key = undo_key;
+ ET_Save_File_Name_From_UI(ETFile,FileName); // Used for all files!
+
+ /*
+ * Save tag data and generate undo for tag
+ */
+ FileTag = g_malloc0(sizeof(File_Tag));
+ ET_Initialize_File_Tag_Item(FileTag);
+ FileTag->key = undo_key;
+
+ switch (ETFileDescription->TagType)
+ {
+#ifdef ENABLE_MP3
+ case ID3_TAG:
+#endif
+#ifdef ENABLE_OGG
+ case OGG_TAG:
+#endif
+#ifdef ENABLE_FLAC
+ case FLAC_TAG:
+#endif
+#ifdef ENABLE_MP4
+ case MP4_TAG:
+#endif
+#ifdef ENABLE_WAVPACK
+ case WAVPACK_TAG:
+#endif
+ case APE_TAG:
+ ET_Save_File_Tag_From_UI(FileTag);
+ ET_Copy_File_Tag_Item_Other_Field(ETFile,FileTag);
+ break;
+ case UNKNOWN_TAG:
+ default:
+ Log_Print("FileTag: Undefined tag type %d for file %s.",ETFileDescription->TagType,cur_filename_utf8);
+ break;
+ }
+
+ /*
+ * Generate undo for the file and the main undo list.
+ * If no changes detected, FileName and FileTag item are deleted.
+ */
+ ET_Manage_Changes_Of_File_Data(ETFile,FileName,FileTag);
+
+ /* Refresh file into browser list */
+ Browser_List_Refresh_File_In_List(ETFile);
+}
+
+
+/*
+ * Save displayed filename into list if it had been changed. Generates also an history list for undo/redo.
+ * - ETFile : the current etfile that we want to save,
+ * - FileName : where is 'temporary' saved the new filename.
+ *
+ * Note : it builds new filename (with path) from strings encoded into file system
+ * encoding, not UTF-8 (it preserves file system encoding of parent directories).
+ */
+gboolean ET_Save_File_Name_From_UI (ET_File *ETFile, File_Name *FileName)
+{
+ gchar *filename_new = NULL;
+ gchar *dirname = NULL;
+ gchar *filename;
+ gchar *filename_utf8;
+ gchar *extension;
+
+ if (!ETFile || !FileName)
+ return FALSE;
+
+ filename_utf8 = (gchar *)gtk_entry_get_text(GTK_ENTRY(FileEntry));
+ filename = filename_from_display(filename_utf8);
+ if (!filename)
+ {
+ // If translation fails...
+ GtkWidget *msgbox;
+ gchar *msg;
+ gchar *filename_escaped_utf8 = g_strescape(filename_utf8, NULL);
+ msg = g_strdup_printf(_("Could not convert filename : '%s'\n"
+ "into system filename encoding\n"
+ "(Try setting the environment variable G_FILENAME_ENCODING)."), filename_escaped_utf8);
+ msgbox = msg_box_new(_("Filename translation"),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+ g_free(filename);
+ g_free(filename_escaped_utf8);
+ return FALSE;
+ }
+
+ // Get the current path to the file
+ dirname = g_path_get_dirname( ((File_Name *)ETFile->FileNameNew->data)->value );
+
+ // Convert filename extension (lower or upper)
+ extension = ET_File_Name_Format_Extension(ETFile);
+
+ // Check length of filename (limit ~255 characters)
+ //ET_File_Name_Check_Length(ETFile,filename);
+
+ // Filename (in file system encoding!)
+ if (filename && strlen(filename)>0)
+ {
+ // Regenerate the new filename (without path)
+ filename_new = g_strconcat(filename,extension,NULL);
+ }else
+ {
+ // Keep the 'last' filename (if a 'blank' filename was entered in the fileentry for ex)...
+ filename_new = g_path_get_basename( ((File_Name *)ETFile->FileNameNew->data)->value );
+ }
+ g_free(extension);
+ g_free(filename);
+
+ // Check if new filename seems to be correct
+ if ( !filename_new || strlen(filename_new) <= strlen(ETFile->ETFileDescription->Extension) )
+ {
+ FileName->value = NULL;
+ FileName->value_utf8 = NULL;
+ FileName->value_ck = NULL;
+
+ g_free(filename_new);
+ g_free(dirname);
+ return FALSE;
+ }
+
+ // Convert the illegal characters
+ ET_File_Name_Convert_Character(filename_new); // FIX ME : should be in UTF8?
+
+ // Set the new file name (in file system encoding)
+ FileName->value = g_strconcat(dirname,G_DIR_SEPARATOR_S,filename_new,NULL);
+ // Set the new file name (in UTF-8 encoding)
+ FileName->value_utf8 = filename_to_display(FileName->value);
+ // Calculates collate key
+ FileName->value_ck = g_utf8_collate_key_for_filename(FileName->value_utf8, -1);
+
+ g_free(filename_new);
+ g_free(dirname);
+ return TRUE;
+}
+
+
+/*
+ * Do the same thing of ET_Save_File_Name_From_UI, but without getting the
+ * data from the UI.
+ */
+gboolean ET_Save_File_Name_Internal (ET_File *ETFile, File_Name *FileName)
+{
+ gchar *filename_new = NULL;
+ gchar *dirname = NULL;
+ gchar *filename;
+ gchar *extension;
+ gchar *pos;
+
+
+ if (!ETFile || !FileName)
+ return FALSE;
+
+ // Get the current path to the file
+ dirname = g_path_get_dirname( ((File_Name *)ETFile->FileNameNew->data)->value );
+
+ // Get the name of file (and rebuild it with extension with a 'correct' case)
+ filename = g_path_get_basename( ((File_Name *)ETFile->FileNameNew->data)->value );
+
+ // Remove the extension
+ if ((pos=strrchr(filename, '.'))!=NULL)
+ *pos = 0;
+
+ // Convert filename extension (lower/upper)
+ extension = ET_File_Name_Format_Extension(ETFile);
+
+ // Check length of filename
+ //ET_File_Name_Check_Length(ETFile,filename);
+
+ // Regenerate the new filename (without path)
+ filename_new = g_strconcat(filename,extension,NULL);
+ g_free(extension);
+ g_free(filename);
+
+ // Check if new filename seems to be correct
+ if (filename_new)
+ {
+ // Convert the illegal characters
+ ET_File_Name_Convert_Character(filename_new);
+
+ // Set the new file name (in file system encoding)
+ FileName->value = g_strconcat(dirname,G_DIR_SEPARATOR_S,filename_new,NULL);
+ // Set the new file name (in UTF-8 encoding)
+ FileName->value_utf8 = filename_to_display(FileName->value);
+ // Calculate collate key
+ FileName->value_ck = g_utf8_collate_key_for_filename(FileName->value_utf8, -1);
+
+ g_free(filename_new);
+ g_free(dirname);
+ return TRUE;
+ }else
+ {
+ FileName->value = NULL;
+ FileName->value_utf8 = NULL;
+ FileName->value_ck = NULL;
+
+ g_free(filename_new);
+ g_free(dirname);
+ return FALSE;
+ }
+}
+
+
+/*
+ * Load values, entered into entries of the UI, into a File_Tag structure which had been newly created.
+ */
+gboolean ET_Save_File_Tag_From_UI (File_Tag *FileTag)
+{
+ gchar *buffer = NULL;
+ //GtkTextBuffer *textbuffer;
+ //GtkTextIter start_iter;
+ //GtkTextIter end_iter;
+
+ if (!FileTag)
+ return FALSE;
+
+ /* Title */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(TitleEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->title = buffer;
+ else
+ {
+ FileTag->title = NULL;
+ g_free(buffer);
+ }
+
+ /* Artist */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(ArtistEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->artist = buffer;
+ else
+ {
+ FileTag->artist = NULL;
+ g_free(buffer);
+ }
+
+ /* Album */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(AlbumEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->album = buffer;
+ else
+ {
+ FileTag->album = NULL;
+ g_free(buffer);
+ }
+
+ /* Disc Number */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(DiscNumberEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->disc_number = buffer;
+ else
+ {
+ FileTag->disc_number = NULL;
+ g_free(buffer);
+ }
+
+ /* Year */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(YearEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->year = buffer;
+ else
+ {
+ FileTag->year = NULL;
+ g_free(buffer);
+ }
+
+ /* Track */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(TrackEntryCombo)->child)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ {
+ if (NUMBER_TRACK_FORMATED) {
+ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(buffer));
+ g_free(buffer);
+ } else
+ FileTag->track = buffer;
+ } else
+ {
+ FileTag->track = NULL;
+ g_free(buffer);
+ }
+
+ /* Track Total */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(TrackTotalEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ {
+ if (NUMBER_TRACK_FORMATED)
+ {
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(buffer));
+ g_free(buffer);
+ } else
+ FileTag->track_total = buffer;
+ } else
+ {
+ FileTag->track_total = NULL;
+ g_free(buffer);
+ }
+
+ /* Genre */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(GenreCombo)->child)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->genre = buffer;
+ else
+ {
+ FileTag->genre = NULL;
+ g_free(buffer);
+ }
+
+ /* Comment */
+ //textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(CommentView));
+ //gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(textbuffer),&start_iter,&end_iter);
+ //buffer = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(textbuffer),&start_iter,&end_iter,TRUE);
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(CommentEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->comment = buffer;
+ else
+ {
+ FileTag->comment = NULL;
+ g_free(buffer);
+ }
+
+ /* Composer */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(ComposerEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->composer = buffer;
+ else
+ {
+ FileTag->composer = NULL;
+ g_free(buffer);
+ }
+
+ /* Original Artist */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(OrigArtistEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->orig_artist = buffer;
+ else
+ {
+ FileTag->orig_artist = NULL;
+ g_free(buffer);
+ }
+
+ /* Copyright */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(CopyrightEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->copyright = buffer;
+ else
+ {
+ FileTag->copyright = NULL;
+ g_free(buffer);
+ }
+
+ /* URL */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(URLEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->url = buffer;
+ else
+ {
+ FileTag->url = NULL;
+ g_free(buffer);
+ }
+
+ /* Encoded by */
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(EncodedByEntry)));
+ Strip_String(buffer);
+
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ FileTag->encoded_by = buffer;
+ else
+ {
+ FileTag->encoded_by = NULL;
+ g_free(buffer);
+ }
+
+ /* Picture */
+ {
+ Picture *pic, *prev_pic = NULL;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ if (FileTag->picture)
+ {
+ Picture_Free(FileTag->picture);
+ FileTag->picture = NULL;
+ }
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(PictureEntryView));
+ if (gtk_tree_model_get_iter_first(model, &iter))
+ {
+ do
+ {
+ gtk_tree_model_get(model, &iter, PICTURE_COLUMN_DATA, &pic,-1);
+ pic = Picture_Copy_One(pic);
+ if (!FileTag->picture)
+ FileTag->picture = pic;
+ else
+ prev_pic->next = pic;
+ prev_pic = pic;
+ } while (gtk_tree_model_iter_next(model, &iter));
+ }
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Do the same thing of ET_Save_File_Tag_From_UI without getting the data from the UI.
+ */
+gboolean ET_Save_File_Tag_Internal (ET_File *ETFile, File_Tag *FileTag)
+{
+ File_Tag *FileTagCur;
+
+
+ if (!ETFile || !ETFile->FileTag || !FileTag)
+ return FALSE;
+
+ FileTagCur = (File_Tag *)ETFile->FileTag->data;
+
+ /* Title */
+ if ( FileTagCur->title && g_utf8_strlen(FileTagCur->title, -1)>0 )
+ {
+ FileTag->title = g_strdup(FileTagCur->title);
+ Strip_String(FileTag->title);
+ } else
+ {
+ FileTag->title = NULL;
+ }
+
+ /* Artist */
+ if ( FileTagCur->artist && g_utf8_strlen(FileTagCur->artist, -1)>0 )
+ {
+ FileTag->artist = g_strdup(FileTagCur->artist);
+ Strip_String(FileTag->artist);
+ } else
+ {
+ FileTag->artist = NULL;
+ }
+
+
+ /* Album */
+ if ( FileTagCur->album && g_utf8_strlen(FileTagCur->album, -1)>0 )
+ {
+ FileTag->album = g_strdup(FileTagCur->album);
+ Strip_String(FileTag->album);
+ } else
+ {
+ FileTag->album = NULL;
+ }
+
+
+ /* Disc Number */
+ if ( FileTagCur->disc_number && g_utf8_strlen(FileTagCur->disc_number, -1)>0 )
+ {
+ FileTag->disc_number = g_strdup(FileTagCur->disc_number);
+ Strip_String(FileTag->disc_number);
+ } else
+ {
+ FileTag->disc_number = NULL;
+ }
+
+
+ /* Year */
+ if ( FileTagCur->year && g_utf8_strlen(FileTagCur->year, -1)>0 )
+ {
+ FileTag->year = g_strdup(FileTagCur->year);
+ Strip_String(FileTag->year);
+ } else
+ {
+ FileTag->year = NULL;
+ }
+
+
+ /* Track */
+ if ( FileTagCur->track && g_utf8_strlen(FileTagCur->track, -1)>0 )
+ {
+ gchar *tmp_str;
+
+ if (NUMBER_TRACK_FORMATED)
+ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(FileTagCur->track));
+ else
+ FileTag->track = g_strdup(FileTagCur->track);
+ // This field must contain only digits
+ tmp_str = FileTag->track;
+ while (isdigit((guchar)*tmp_str)) tmp_str++;
+ *tmp_str = 0;
+ Strip_String(FileTag->track);
+ } else
+ {
+ FileTag->track = NULL;
+ }
+
+
+ /* Track Total */
+ if ( FileTagCur->track_total && g_utf8_strlen(FileTagCur->track_total, -1)>0 )
+ {
+ if (NUMBER_TRACK_FORMATED)
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(FileTagCur->track_total));
+ else
+ FileTag->track_total = g_strdup(FileTagCur->track_total);
+ Strip_String(FileTag->track_total);
+ } else
+ {
+ FileTag->track_total = NULL;
+ }
+
+
+ /* Genre */
+ if ( FileTagCur->genre && g_utf8_strlen(FileTagCur->genre, -1)>0 )
+ {
+ FileTag->genre = g_strdup(FileTagCur->genre);
+ Strip_String(FileTag->genre);
+ } else
+ {
+ FileTag->genre = NULL;
+ }
+
+
+ /* Comment */
+ if ( FileTagCur->comment && g_utf8_strlen(FileTagCur->comment, -1)>0 )
+ {
+ FileTag->comment = g_strdup(FileTagCur->comment);
+ Strip_String(FileTag->comment);
+ } else
+ {
+ FileTag->comment = NULL;
+ }
+
+
+ /* Composer */
+ if ( FileTagCur->composer && g_utf8_strlen(FileTagCur->composer, -1)>0 )
+ {
+ FileTag->composer = g_strdup(FileTagCur->composer);
+ Strip_String(FileTag->composer);
+ } else
+ {
+ FileTag->composer = NULL;
+ }
+
+
+ /* Original Artist */
+ if ( FileTagCur->orig_artist && g_utf8_strlen(FileTagCur->orig_artist, -1)>0 )
+ {
+ FileTag->orig_artist = g_strdup(FileTagCur->orig_artist);
+ Strip_String(FileTag->orig_artist);
+ } else
+ {
+ FileTag->orig_artist = NULL;
+ }
+
+
+ /* Copyright */
+ if ( FileTagCur->copyright && g_utf8_strlen(FileTagCur->copyright, -1)>0 )
+ {
+ FileTag->copyright = g_strdup(FileTagCur->copyright);
+ Strip_String(FileTag->copyright);
+ } else
+ {
+ FileTag->copyright = NULL;
+ }
+
+
+ /* URL */
+ if ( FileTagCur->url && g_utf8_strlen(FileTagCur->url, -1)>0 )
+ {
+ FileTag->url = g_strdup(FileTagCur->url);
+ Strip_String(FileTag->url);
+ } else
+ {
+ FileTag->url = NULL;
+ }
+
+
+ /* Encoded by */
+ if ( FileTagCur->encoded_by && g_utf8_strlen(FileTagCur->encoded_by, -1)>0 )
+ {
+ FileTag->encoded_by = g_strdup(FileTagCur->encoded_by);
+ Strip_String(FileTag->encoded_by);
+ } else
+ {
+ FileTag->encoded_by = NULL;
+ }
+
+
+ /* Picture */
+ if(FileTagCur->picture)
+ {
+ if (FileTag->picture)
+ Picture_Free(FileTag->picture);
+ FileTag->picture = Picture_Copy(FileTagCur->picture);
+ }else if (FileTag->picture)
+ {
+ Picture_Free(FileTag->picture);
+ FileTag->picture = NULL;
+ }
+
+ return TRUE;
+}
+
+
+/*
+ * Save data contained into File_Tag structure to the file on hard disk.
+ */
+gboolean ET_Save_File_Tag_To_HD (ET_File *ETFile)
+{
+ ET_File_Description *ETFileDescription;
+ gchar *cur_filename;
+ gchar *cur_filename_utf8;
+ gboolean state;
+ struct stat statbuf;
+ struct utimbuf utimbufbuf;
+ gboolean file_set_properties;
+
+ if (!ETFile) return FALSE;
+
+ cur_filename = ((File_Name *)(ETFile->FileNameCur)->data)->value;
+ cur_filename_utf8 = ((File_Name *)(ETFile->FileNameCur)->data)->value_utf8;
+
+ ETFileDescription = ETFile->ETFileDescription;
+
+ // Save permissions of the file (cause they may change with files on NFS)
+ if ( stat(cur_filename,&statbuf)!=-1 )
+ file_set_properties = TRUE;
+ else
+ file_set_properties = FALSE;
+
+ switch (ETFileDescription->TagType)
+ {
+#ifdef ENABLE_MP3
+ case ID3_TAG:
+ state = Id3tag_Write_File_Tag(ETFile);
+ break;
+#endif
+#ifdef ENABLE_OGG
+ case OGG_TAG:
+ state = Ogg_Tag_Write_File_Tag(ETFile);
+ break;
+#endif
+#ifdef ENABLE_FLAC
+ case FLAC_TAG:
+ state = Flac_Tag_Write_File_Tag(ETFile);
+ break;
+#endif
+ case APE_TAG:
+ state = Ape_Tag_Write_File_Tag(ETFile);
+ break;
+#ifdef ENABLE_MP4
+ case MP4_TAG:
+ state = Mp4tag_Write_File_Tag(ETFile);
+ break;
+#endif
+#ifdef ENABLE_WAVPACK
+ case WAVPACK_TAG:
+ state = Wavpack_Tag_Write_File_Tag(ETFile);
+ break;
+#endif
+ case UNKNOWN_TAG:
+ default:
+ Log_Print("Saving to HD: Undefined function for tag type '%d' (file %s).",
+ ETFileDescription->TagType,cur_filename_utf8);
+ state = FALSE;
+ break;
+ }
+
+ // Update properties for the file
+ if ( file_set_properties == TRUE )
+ {
+#ifndef WIN32
+ chmod(cur_filename,statbuf.st_mode & (S_IRWXU|S_IRWXG|S_IRWXO));
+ chown(cur_filename,statbuf.st_uid,statbuf.st_gid);
+#endif
+ if (PRESERVE_MODIFICATION_TIME)
+ {
+ utimbufbuf.actime = statbuf.st_atime; // Last access time
+ utimbufbuf.modtime = statbuf.st_mtime; // Last modification time
+ utime(cur_filename,&utimbufbuf);
+ }
+ }
+
+ if (state==TRUE)
+ {
+ ET_Mark_File_Tag_As_Saved(ETFile);
+ return TRUE;
+ }else
+ {
+ return FALSE;
+ }
+}
+
+/*
+ * Function used to update path of filenames into list after renaming a parent directory
+ * (for ex: "/mp3/old_path/file.mp3" to "/mp3/new_path/file.mp3"
+ */
+void ET_Update_Directory_Name_Into_File_List (gchar* last_path, gchar *new_path)
+{
+ GList *filelist;
+ ET_File *file;
+ GList *filenamelist;
+ gchar *filename;
+ gchar *last_path_tmp;
+
+ if (!ETCore->ETFileList || !last_path || !new_path ||
+ strlen(last_path) < 1 || strlen(new_path) < 1 )
+ return;
+
+ // Add '/' to end of path to avoid ambiguity between a directory and a filename...
+ if (last_path[strlen(last_path)-1]==G_DIR_SEPARATOR)
+ last_path_tmp = g_strdup(last_path);
+ else
+ last_path_tmp = g_strconcat(last_path,G_DIR_SEPARATOR_S,NULL);
+
+ filelist = g_list_first(ETCore->ETFileList);
+ while (filelist)
+ {
+ if ( (file=filelist->data) && (filenamelist=file->FileNameList) )
+ {
+ while (filenamelist)
+ {
+ File_Name *FileName = (File_Name *)filenamelist->data;
+
+ if ( FileName && (filename=FileName->value) )
+ {
+ // Replace path of filename
+ if ( strncmp(filename,last_path_tmp,strlen(last_path_tmp))==0 )
+ {
+ gchar *filename_tmp;
+
+ // Create the new filename
+ filename_tmp = g_strconcat(new_path,
+ (new_path[strlen(new_path)-1]==G_DIR_SEPARATOR) ? "" : G_DIR_SEPARATOR_S,
+ &filename[strlen(last_path_tmp)],NULL);
+
+ // Replace the file name (in file system encoding)
+ g_free(FileName->value);
+ FileName->value = filename_tmp;
+ // Replace the file name (in file system encoding)
+ g_free(FileName->value_utf8);
+ FileName->value_utf8 = filename_to_display(FileName->value);
+ // Recalculate the collate key
+ g_free(FileName->value_ck);
+ FileName->value_ck = g_utf8_collate_key_for_filename(FileName->value_utf8, -1);
+ }
+ }
+ filenamelist = g_list_next(filenamelist);
+ }
+ }
+ filelist = g_list_next(filelist);
+ }
+
+ g_free(last_path_tmp);
+}
+
+
+
+/***********************
+ * Undo/Redo functions *
+ ***********************/
+
+/*
+ * Check if 'FileName' and 'FileTag' differ with those of 'ETFile'.
+ * Manage undo feature for the ETFile and the main undo list.
+ */
+gboolean ET_Manage_Changes_Of_File_Data (ET_File *ETFile, File_Name *FileName, File_Tag *FileTag)
+{
+ gboolean undo_added = FALSE;
+
+ if (!ETFile) return FALSE;
+
+ /*
+ * Detect changes of filename and generate the filename undo list
+ */
+ if (FileName)
+ {
+ if ( ETFile->FileNameNew && ET_Detect_Changes_Of_File_Name( (File_Name *)(ETFile->FileNameNew)->data,FileName )==TRUE )
+ {
+ ET_Add_File_Name_To_List(ETFile,FileName);
+ undo_added |= TRUE;
+ }else
+ {
+ ET_Free_File_Name_Item(FileName);
+ }
+ }
+
+ /*
+ * Detect changes in tag data and generate the tag undo list
+ */
+ if (FileTag)
+ {
+ if ( ETFile->FileTag && ET_Detect_Changes_Of_File_Tag( (File_Tag *)(ETFile->FileTag)->data,FileTag )==TRUE )
+ {
+ ET_Add_File_Tag_To_List(ETFile,FileTag);
+ undo_added |= TRUE;
+ }else
+ {
+ ET_Free_File_Tag_Item(FileTag);
+ }
+ }
+
+ /*
+ * Generate main undo (file history of modifications)
+ */
+ if (undo_added)
+ ET_Add_File_To_History_List(ETFile);
+
+ return TRUE; //undo_added;
+}
+
+
+/*
+ * Compares two File_Name items :
+ * - returns TRUE if there aren't the same
+ * - else returns FALSE
+ */
+gboolean ET_Detect_Changes_Of_File_Name (File_Name *FileName1, File_Name *FileName2)
+{
+ gchar *filename1_ck;
+ gchar *filename2_ck;
+
+ if ( (!FileName1 && !FileName2)
+ || (!FileName1->value && !FileName2->value) )
+ return FALSE;
+
+ if ( ( FileName1 && !FileName2)
+ || (!FileName1 && FileName2)
+ || ( FileName1->value && !FileName2->value)
+ || (!FileName1->value && FileName2->value) )
+ return TRUE;
+
+ // Compare collate keys (with FileName->value converted to UTF-8 as it contains raw data)
+ filename1_ck = FileName1->value_ck;
+ filename2_ck = FileName2->value_ck;
+
+ // Filename changed ? (we check path + file)
+ if ( strcmp(filename1_ck,filename2_ck) != 0 )
+ {
+ return TRUE;
+ }else
+ {
+ // No changes
+ return FALSE;
+ }
+}
+
+/*
+ * Compares two File_Tag items and returns TRUE if there aren't the same.
+ * Notes:
+ * - if field is '' or NULL => will be removed
+ */
+gboolean ET_Detect_Changes_Of_File_Tag (File_Tag *FileTag1, File_Tag *FileTag2)
+{
+ Picture *pic1;
+ Picture *pic2;
+
+ if ( !FileTag1 && !FileTag2 )
+ return FALSE;
+
+ if ( ( FileTag1 && !FileTag2)
+ || (!FileTag1 && FileTag2) )
+ return TRUE;
+
+ /* Title */
+ if ( FileTag1->title && !FileTag2->title && g_utf8_strlen(FileTag1->title, -1)>0 ) return TRUE;
+ if (!FileTag1->title && FileTag2->title && g_utf8_strlen(FileTag2->title, -1)>0 ) return TRUE;
+ if ( FileTag1->title && FileTag2->title && g_utf8_collate(FileTag1->title,FileTag2->title)!=0 ) return TRUE;
+
+ /* Artist */
+ if ( FileTag1->artist && !FileTag2->artist && g_utf8_strlen(FileTag1->artist, -1)>0 ) return TRUE;
+ if (!FileTag1->artist && FileTag2->artist && g_utf8_strlen(FileTag2->artist, -1)>0 ) return TRUE;
+ if ( FileTag1->artist && FileTag2->artist && g_utf8_collate(FileTag1->artist,FileTag2->artist)!=0 ) return TRUE;
+
+ /* Album */
+ if ( FileTag1->album && !FileTag2->album && g_utf8_strlen(FileTag1->album, -1)>0 ) return TRUE;
+ if (!FileTag1->album && FileTag2->album && g_utf8_strlen(FileTag2->album, -1)>0 ) return TRUE;
+ if ( FileTag1->album && FileTag2->album && g_utf8_collate(FileTag1->album,FileTag2->album)!=0 ) return TRUE;
+
+ /* Disc Number */
+ if ( FileTag1->disc_number && !FileTag2->disc_number && g_utf8_strlen(FileTag1->disc_number, -1)>0 ) return TRUE;
+ if (!FileTag1->disc_number && FileTag2->disc_number && g_utf8_strlen(FileTag2->disc_number, -1)>0 ) return TRUE;
+ if ( FileTag1->disc_number && FileTag2->disc_number && g_utf8_collate(FileTag1->disc_number,FileTag2->disc_number)!=0 ) return TRUE;
+
+ /* Year */
+ if ( FileTag1->year && !FileTag2->year && g_utf8_strlen(FileTag1->year, -1)>0 ) return TRUE;
+ if (!FileTag1->year && FileTag2->year && g_utf8_strlen(FileTag2->year, -1)>0 ) return TRUE;
+ if ( FileTag1->year && FileTag2->year && g_utf8_collate(FileTag1->year,FileTag2->year)!=0 ) return TRUE;
+
+ /* Track */
+ if ( FileTag1->track && !FileTag2->track && g_utf8_strlen(FileTag1->track, -1)>0 ) return TRUE;
+ if (!FileTag1->track && FileTag2->track && g_utf8_strlen(FileTag2->track, -1)>0 ) return TRUE;
+ if ( FileTag1->track && FileTag2->track && g_utf8_collate(FileTag1->track,FileTag2->track)!=0 ) return TRUE;
+
+ /* Track Total */
+ if ( FileTag1->track_total && !FileTag2->track_total && g_utf8_strlen(FileTag1->track_total, -1)>0 ) return TRUE;
+ if (!FileTag1->track_total && FileTag2->track_total && g_utf8_strlen(FileTag2->track_total, -1)>0 ) return TRUE;
+ if ( FileTag1->track_total && FileTag2->track_total && g_utf8_collate(FileTag1->track_total,FileTag2->track_total)!=0 ) return TRUE;
+
+ /* Genre */
+ if ( FileTag1->genre && !FileTag2->genre && g_utf8_strlen(FileTag1->genre, -1)>0 ) return TRUE;
+ if (!FileTag1->genre && FileTag2->genre && g_utf8_strlen(FileTag2->genre, -1)>0 ) return TRUE;
+ if ( FileTag1->genre && FileTag2->genre && g_utf8_collate(FileTag1->genre,FileTag2->genre)!=0 ) return TRUE;
+
+ /* Comment */
+ if ( FileTag1->comment && !FileTag2->comment && g_utf8_strlen(FileTag1->comment, -1)>0 ) return TRUE;
+ if (!FileTag1->comment && FileTag2->comment && g_utf8_strlen(FileTag2->comment, -1)>0 ) return TRUE;
+ if ( FileTag1->comment && FileTag2->comment && g_utf8_collate(FileTag1->comment,FileTag2->comment)!=0 ) return TRUE;
+
+ /* Composer */
+ if ( FileTag1->composer && !FileTag2->composer && g_utf8_strlen(FileTag1->composer, -1)>0 ) return TRUE;
+ if (!FileTag1->composer && FileTag2->composer && g_utf8_strlen(FileTag2->composer, -1)>0 ) return TRUE;
+ if ( FileTag1->composer && FileTag2->composer && g_utf8_collate(FileTag1->composer,FileTag2->composer)!=0 ) return TRUE;
+
+ /* Original artist */
+ if ( FileTag1->orig_artist && !FileTag2->orig_artist && g_utf8_strlen(FileTag1->orig_artist, -1)>0 ) return TRUE;
+ if (!FileTag1->orig_artist && FileTag2->orig_artist && g_utf8_strlen(FileTag2->orig_artist, -1)>0 ) return TRUE;
+ if ( FileTag1->orig_artist && FileTag2->orig_artist && g_utf8_collate(FileTag1->orig_artist,FileTag2->orig_artist)!=0 ) return TRUE;
+
+ /* Copyright */
+ if ( FileTag1->copyright && !FileTag2->copyright && g_utf8_strlen(FileTag1->copyright, -1)>0 ) return TRUE;
+ if (!FileTag1->copyright && FileTag2->copyright && g_utf8_strlen(FileTag2->copyright, -1)>0 ) return TRUE;
+ if ( FileTag1->copyright && FileTag2->copyright && g_utf8_collate(FileTag1->copyright,FileTag2->copyright)!=0 ) return TRUE;
+
+ /* URL */
+ if ( FileTag1->url && !FileTag2->url && g_utf8_strlen(FileTag1->url, -1)>0 ) return TRUE;
+ if (!FileTag1->url && FileTag2->url && g_utf8_strlen(FileTag2->url, -1)>0 ) return TRUE;
+ if ( FileTag1->url && FileTag2->url && g_utf8_collate(FileTag1->url,FileTag2->url)!=0 ) return TRUE;
+
+ /* Encoded by */
+ if ( FileTag1->encoded_by && !FileTag2->encoded_by && g_utf8_strlen(FileTag1->encoded_by, -1)>0 ) return TRUE;
+ if (!FileTag1->encoded_by && FileTag2->encoded_by && g_utf8_strlen(FileTag2->encoded_by, -1)>0 ) return TRUE;
+ if ( FileTag1->encoded_by && FileTag2->encoded_by && g_utf8_collate(FileTag1->encoded_by,FileTag2->encoded_by)!=0 ) return TRUE;
+
+ /* Picture */
+ pic1 = FileTag1->picture;
+ pic2 = FileTag2->picture;
+
+ for(;;)
+ {
+ if( (pic1 && !pic2) || (!pic1 && pic2) )
+ return TRUE;
+ if (!pic1 || !pic2)
+ break; // => no changes
+ //if (!pic1->data || !pic2->data)
+ // break; // => no changes
+
+ if (pic1->data && !pic2->data)
+ return TRUE;
+ if (!pic1->data && pic2->data)
+ return TRUE;
+ if (pic1->size != pic2->size
+ || memcmp(pic1->data, pic2->data, pic1->size))
+ return TRUE;
+ if (pic1->type != pic2->type)
+ return TRUE;
+ if (pic1->description && !pic2->description
+ && g_utf8_strlen(pic1->description, -1)>0 )
+ return TRUE;
+ if (!pic1->description && pic2->description
+ && g_utf8_strlen(pic2->description, -1)>0 )
+ return TRUE;
+ if (pic1->description && pic2->description
+ && g_utf8_collate(pic1->description, pic2->description)!=0 )
+ return TRUE;
+
+ pic1 = pic1->next;
+ pic2 = pic2->next;
+ }
+
+ return FALSE; /* No changes */
+}
+
+
+/*
+ * Add a FileName item to the history list of ETFile
+ */
+gboolean ET_Add_File_Name_To_List (ET_File *ETFile, File_Name *FileName)
+{
+ GList *cut_list = NULL;
+
+ if (!ETFile || !FileName)
+ return FALSE;
+
+ /* How it works : Cut the FileNameList list after the current item,
+ * and appends it to the FileNameListBak list for saving the data.
+ * Then appends the new item to the FileNameList list */
+ if (ETFile->FileNameList)
+ {
+ cut_list = ETFile->FileNameNew->next; // Cut after the current item...
+ ETFile->FileNameNew->next = NULL;
+ }
+ if (cut_list)
+ cut_list->prev = NULL;
+
+ /* Add the new item to the list */
+ ETFile->FileNameList = g_list_append(ETFile->FileNameList,FileName);
+ /* Set the current item to use */
+ ETFile->FileNameNew = g_list_last(ETFile->FileNameList);
+ /* Backup list */
+ /* FIX ME! Keep only the saved item */
+ ETFile->FileNameListBak = g_list_concat(ETFile->FileNameListBak,cut_list);
+
+ return TRUE;
+}
+
+/*
+ * Add a FileTag item to the history list of ETFile
+ */
+gboolean ET_Add_File_Tag_To_List (ET_File *ETFile, File_Tag *FileTag)
+{
+ GList *cut_list = NULL;
+
+ if (!ETFile || !FileTag)
+ return FALSE;
+
+ if (ETFile->FileTag)
+ {
+ cut_list = ETFile->FileTag->next; // Cut after the current item...
+ ETFile->FileTag->next = NULL;
+ }
+ if (cut_list)
+ cut_list->prev = NULL;
+
+ /* Add the new item to the list */
+ ETFile->FileTagList = g_list_append(ETFile->FileTagList,FileTag);
+ /* Set the current item to use */
+ ETFile->FileTag = g_list_last(ETFile->FileTagList);
+ /* Backup list */
+ ETFile->FileTagListBak = g_list_concat(ETFile->FileTagListBak,cut_list);
+
+ return TRUE;
+}
+
+/*
+ * Add a ETFile item to the main undo list of files
+ */
+gboolean ET_Add_File_To_History_List (ET_File *ETFile)
+{
+ ET_History_File *ETHistoryFile;
+
+ if (!ETFile) return FALSE;
+
+ ETHistoryFile = g_malloc0(sizeof(ET_History_File));
+ ETHistoryFile->ETFile = ETFile;
+
+ /* The undo list must contains one item before the 'first undo' data */
+ if (!ETCore->ETHistoryFileList)
+ ETCore->ETHistoryFileList = g_list_append(ETCore->ETHistoryFileList,g_malloc0(sizeof(ET_History_File)));
+
+ /* Add the item to the list (cut end of list from the current element) */
+ ETCore->ETHistoryFileList = g_list_append(ETCore->ETHistoryFileList,ETHistoryFile);
+ ETCore->ETHistoryFileList = g_list_last(ETCore->ETHistoryFileList);
+
+ return TRUE;
+}
+
+
+/*
+ * Applies one undo to the ETFile data (to reload the previous data).
+ * Returns TRUE if an undo had been applied.
+ */
+gboolean ET_Undo_File_Data (ET_File *ETFile)
+{
+ gboolean has_filename_undo_data = FALSE;
+ gboolean has_filetag_undo_data = FALSE;
+ guint filename_key, filetag_key, undo_key;
+
+ if (!ETFile)
+ return FALSE;
+
+ /* Find the valid key */
+ if (ETFile->FileNameNew->prev && ETFile->FileNameNew->data)
+ filename_key = ((File_Name *)ETFile->FileNameNew->data)->key;
+ else
+ filename_key = 0;
+ if (ETFile->FileTag->prev && ETFile->FileTag->data)
+ filetag_key = ((File_Tag *)ETFile->FileTag->data)->key;
+ else
+ filetag_key = 0;
+ // The key to use
+ undo_key = MAX(filename_key,filetag_key);
+
+ /* Undo filename */
+ if (ETFile->FileNameNew->prev && ETFile->FileNameNew->data
+ && (undo_key==((File_Name *)ETFile->FileNameNew->data)->key))
+ {
+ ETFile->FileNameNew = ETFile->FileNameNew->prev;
+ has_filename_undo_data = TRUE; // To indicate that an undo has been applied
+ }
+
+ /* Undo tag data */
+ if (ETFile->FileTag->prev && ETFile->FileTag->data
+ && (undo_key==((File_Tag *)ETFile->FileTag->data)->key))
+ {
+ ETFile->FileTag = ETFile->FileTag->prev;
+ has_filetag_undo_data = TRUE;
+ }
+
+ return has_filename_undo_data | has_filetag_undo_data;
+}
+
+
+/*
+ * Returns TRUE if file contains undo data (filename or tag)
+ */
+gboolean ET_File_Data_Has_Undo_Data (ET_File *ETFile)
+{
+ gboolean has_filename_undo_data = FALSE;
+ gboolean has_filetag_undo_data = FALSE;
+
+ if (!ETFile) return FALSE;
+
+ if (ETFile->FileNameNew && ETFile->FileNameNew->prev) has_filename_undo_data = TRUE;
+ if (ETFile->FileTag && ETFile->FileTag->prev) has_filetag_undo_data = TRUE;
+
+ return has_filename_undo_data | has_filetag_undo_data;
+}
+
+
+/*
+ * Applies one redo to the ETFile data. Returns TRUE if a redo had been applied.
+ */
+gboolean ET_Redo_File_Data (ET_File *ETFile)
+{
+ gboolean has_filename_redo_data = FALSE;
+ gboolean has_filetag_redo_data = FALSE;
+ guint filename_key, filetag_key, undo_key;
+
+ if (!ETFile)
+ return FALSE;
+
+ /* Find the valid key */
+ if (ETFile->FileNameNew->next && ETFile->FileNameNew->next->data)
+ filename_key = ((File_Name *)ETFile->FileNameNew->next->data)->key;
+ else
+ filename_key = (guint)~0; // To have the max value for guint
+ if (ETFile->FileTag->next && ETFile->FileTag->next->data)
+ filetag_key = ((File_Tag *)ETFile->FileTag->next->data)->key;
+ else
+ filetag_key = (guint)~0; // To have the max value for guint
+ // The key to use
+ undo_key = MIN(filename_key,filetag_key);
+
+ /* Redo filename */
+ if (ETFile->FileNameNew->next && ETFile->FileNameNew->next->data
+ && (undo_key==((File_Name *)ETFile->FileNameNew->next->data)->key))
+ {
+ ETFile->FileNameNew = ETFile->FileNameNew->next;
+ has_filename_redo_data = TRUE; // To indicate that a redo has been applied
+ }
+
+ /* Redo tag data */
+ if (ETFile->FileTag->next && ETFile->FileTag->next->data
+ && (undo_key==((File_Tag *)ETFile->FileTag->next->data)->key))
+ {
+ ETFile->FileTag = ETFile->FileTag->next;
+ has_filetag_redo_data = TRUE;
+ }
+
+ return has_filename_redo_data | has_filetag_redo_data;
+}
+
+
+/*
+ * Returns TRUE if file contains redo data (filename or tag)
+ */
+gboolean ET_File_Data_Has_Redo_Data (ET_File *ETFile)
+{
+ gboolean has_filename_redo_data = FALSE;
+ gboolean has_filetag_redo_data = FALSE;
+
+ if (!ETFile) return FALSE;
+
+ if (ETFile->FileNameNew && ETFile->FileNameNew->next) has_filename_redo_data = TRUE;
+ if (ETFile->FileTag && ETFile->FileTag->next) has_filetag_redo_data = TRUE;
+
+ return has_filename_redo_data | has_filetag_redo_data;
+}
+
+
+/*
+ * Execute one 'undo' in the main undo list (it selects the last ETFile changed,
+ * before to apply an undo action)
+ */
+ET_File *ET_Undo_History_File_Data (void)
+{
+ ET_File *ETFile;
+ ET_History_File *ETHistoryFile;
+
+ if (!ETCore->ETHistoryFileList || !ET_History_File_List_Has_Undo_Data()) return NULL;
+
+ ETHistoryFile = (ET_History_File *)ETCore->ETHistoryFileList->data;
+ ETFile = (ET_File *)ETHistoryFile->ETFile;
+ ET_Displayed_File_List_By_Etfile(ETFile);
+ ET_Undo_File_Data(ETFile);
+
+ if (ETCore->ETHistoryFileList->prev)
+ ETCore->ETHistoryFileList = ETCore->ETHistoryFileList->prev;
+ return ETFile;
+}
+
+
+/*
+ * Returns TRUE if undo file list contains undo data
+ */
+gboolean ET_History_File_List_Has_Undo_Data (void)
+{
+ if (ETCore->ETHistoryFileList && ETCore->ETHistoryFileList->prev)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+
+/*
+ * Execute one 'redo' in the main undo list
+ */
+ET_File *ET_Redo_History_File_Data (void)
+{
+ ET_File *ETFile;
+ ET_History_File *ETHistoryFile;
+
+ if (!ETCore->ETHistoryFileList || !ET_History_File_List_Has_Redo_Data()) return NULL;
+
+ ETHistoryFile = (ET_History_File *)ETCore->ETHistoryFileList->next->data;
+ ETFile = (ET_File *)ETHistoryFile->ETFile;
+ ET_Displayed_File_List_By_Etfile(ETFile);
+ ET_Redo_File_Data(ETFile);
+
+ if (ETCore->ETHistoryFileList->next)
+ ETCore->ETHistoryFileList = ETCore->ETHistoryFileList->next;
+ return ETFile;
+}
+
+
+/*
+ * Returns TRUE if undo file list contains redo data
+ */
+gboolean ET_History_File_List_Has_Redo_Data (void)
+{
+ if (ETCore->ETHistoryFileList && ETCore->ETHistoryFileList->next)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+
+
+
+/**********************
+ * Checking functions *
+ **********************/
+
+
+/*
+ * Ckecks if the current files had been changed but not saved.
+ * Returns TRUE if the file has been saved.
+ * Returns FALSE if some changes haven't been saved.
+ */
+gboolean ET_Check_If_File_Is_Saved (ET_File *ETFile)
+{
+ File_Tag *FileTag = NULL;
+ File_Name *FileNameNew = NULL;
+
+ if (!ETFile) return TRUE;
+
+ if (ETFile->FileTag)
+ FileTag = ETFile->FileTag->data;
+ if (ETFile->FileNameNew)
+ FileNameNew = ETFile->FileNameNew->data;
+
+ // Check if the tag has been changed
+ if ( FileTag && FileTag->saved != TRUE )
+ return FALSE;
+
+ // Check if name of file has been changed
+ if ( FileNameNew && FileNameNew->saved != TRUE )
+ return FALSE;
+
+ // No changes
+ return TRUE;
+}
+
+
+/*
+ * Ckecks if some files, in the list, had been changed but not saved.
+ * Returns TRUE if all files have been saved.
+ * Returns FALSE if some changes haven't been saved.
+ */
+gboolean ET_Check_If_All_Files_Are_Saved (void)
+{
+ /* Check if some files haven't been saved, if didn't nochange=0 */
+ if (!ETCore->ETFileList)
+ {
+ return TRUE;
+ }else
+ {
+ GList *tmplist = g_list_first(ETCore->ETFileList);
+ while (tmplist)
+ {
+ if ( ET_Check_If_File_Is_Saved((ET_File *)tmplist->data) == FALSE )
+ return FALSE;
+
+ if (!tmplist->next) break;
+ tmplist = g_list_next(tmplist);
+ }
+ return TRUE;
+ }
+}
+
+
+
+
+/*******************
+ * Extra functions *
+ *******************/
+
+/*
+ * Set to TRUE the value of 'FileTag->saved' for the File_Tag item passed in parameter.
+ * And set ALL other values of the list to FALSE.
+ */
+void Set_Saved_Value_Of_File_Tag (File_Tag *FileTag, gboolean saved)
+{
+ if (FileTag) FileTag->saved = saved;
+}
+void ET_Mark_File_Tag_As_Saved (ET_File *ETFile)
+{
+ File_Tag *FileTag;
+ GList *FileTagList;
+
+ FileTag = (File_Tag *)ETFile->FileTag->data; // The current FileTag, to set to TRUE
+ FileTagList = ETFile->FileTagList;
+ g_list_foreach(FileTagList,(GFunc)Set_Saved_Value_Of_File_Tag,FALSE); // All other FileTag set to FALSE
+ FileTag->saved = TRUE; // The current FileTag set to TRUE
+}
+
+
+/*
+ * Set to TRUE the value of 'FileName->saved' for the File_Name item passed in parameter.
+ * And set ALL other values of the list to FALSE.
+ */
+void Set_Saved_Value_Of_File_Name (File_Name *FileName, gboolean saved)
+{
+ if (FileName) FileName->saved = saved;
+}
+void ET_Mark_File_Name_As_Saved (ET_File *ETFile)
+{
+ File_Name *FileNameNew;
+ GList *FileNameList;
+
+ FileNameNew = (File_Name *)ETFile->FileNameNew->data; // The current FileName, to set to TRUE
+ FileNameList = ETFile->FileNameList;
+ g_list_foreach(FileNameList,(GFunc)Set_Saved_Value_Of_File_Tag,FALSE);
+ FileNameNew->saved = TRUE;
+}
+
+
+/*
+ * Currently, it's a way by default to fill file size into ET_File_Info structure
+ */
+gboolean ET_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
+{
+ FILE *file;
+
+ if (!filename || !ETFileInfo)
+ return FALSE;
+
+ if ( (file=fopen(filename,"r"))==NULL )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+ fclose(file);
+
+ ETFileInfo->version = 0;
+ ETFileInfo->bitrate = 0;
+ ETFileInfo->samplerate = 0;
+ ETFileInfo->mode = 0;
+ ETFileInfo->size = Get_File_Size(filename);
+ ETFileInfo->duration = 0;
+
+ return TRUE;
+}
+
+
+/*
+ * This function generates a new file name using path of the old file and the new name
+ * - ETFile -> old_file_name : "/path_to_file/old_name.ext"
+ * - new_file_name_utf8 : "new_name.ext"
+ * Returns "/path_to_file/new_name.ext" into allocated data (in UTF-8)!
+ * Notes :
+ * - filenames (basemane) musn't exceed 255 characters (i.e. : "new_name.ext")
+ * - ogg filename musn't exceed 255-6 characters as we use mkstemp
+ */
+#if 1
+gchar *ET_File_Name_Generate (ET_File *ETFile, gchar *new_file_name_utf8)
+{
+ gchar *dirname_utf8;
+
+ if (ETFile && ETFile->FileNameNew->data && new_file_name_utf8
+ && (dirname_utf8=g_path_get_dirname(((File_Name *)ETFile->FileNameNew->data)->value_utf8)) )
+ {
+ gchar *extension;
+ gchar *new_file_name_path_utf8;
+
+ // Convert filename extension (lower/upper)
+ extension = ET_File_Name_Format_Extension(ETFile);
+
+ // Check length of filename (limit ~255 characters)
+ //ET_File_Name_Check_Length(ETFile,new_file_name_utf8);
+
+ // If filemame starts with /, it's a full filename with path but without extension
+ if (g_path_is_absolute(new_file_name_utf8))
+ {
+ // We just add the extension
+ new_file_name_path_utf8 = g_strconcat(new_file_name_utf8,extension,NULL);
+ }else
+ {
+ // New path (with filename)
+ if ( strcmp(dirname_utf8,G_DIR_SEPARATOR_S)==0 ) // Root directory?
+ new_file_name_path_utf8 = g_strconcat(dirname_utf8,new_file_name_utf8,extension,NULL);
+ else
+ new_file_name_path_utf8 = g_strconcat(dirname_utf8,G_DIR_SEPARATOR_S,new_file_name_utf8,extension,NULL);
+ }
+
+ g_free(extension);
+ return new_file_name_path_utf8; // in UTF-8
+ }else
+ {
+ return NULL;
+ }
+}
+#else
+/* FOR TESTING */
+/* Returns filename in file system encoding */
+gchar *ET_File_Name_Generate (ET_File *ETFile, gchar *new_file_name_utf8)
+{
+ gchar *dirname;
+
+ if (ETFile && ETFile->FileNameNew->data && new_file_name_utf8
+ && (dirname=g_path_get_dirname(((File_Name *)ETFile->FileNameNew->data)->value)) )
+ {
+ gchar *extension;
+ gchar *new_file_name_path;
+ gchar *new_file_name;
+
+ new_file_name = filename_from_display(new_file_name_utf8);
+
+ // Convert filename extension (lower/upper)
+ extension = ET_File_Name_Format_Extension(ETFile);
+
+ // Check length of filename (limit ~255 characters)
+ //ET_File_Name_Check_Length(ETFile,new_file_name_utf8);
+
+ // If filemame starts with /, it's a full filename with path but without extension
+ if (g_path_is_absolute(new_file_name))
+ {
+ // We just add the extension
+ new_file_name_path = g_strconcat(new_file_name,extension,NULL);
+ }else
+ {
+ // New path (with filename)
+ if ( strcmp(dirname,G_DIR_SEPARATOR_S)==0 ) // Root directory?
+ new_file_name_path = g_strconcat(dirname,new_file_name,extension,NULL);
+ else
+ new_file_name_path = g_strconcat(dirname,G_DIR_SEPARATOR_S,new_file_name,extension,NULL);
+ }
+
+ g_free(dirname);
+ g_free(new_file_name);
+ g_free(extension);
+ return new_file_name_path; // in file system encoding
+ }else
+ {
+ return NULL;
+ }
+}
+#endif
+
+
+gchar *ET_File_Name_Format_Extension (ET_File *ETFile)
+{
+ // Convert filename extension (lower/upper/no change)
+ if (FILENAME_EXTENSION_LOWER_CASE)
+ return g_utf8_strdown(ETFile->ETFileDescription->Extension,-1);
+
+ else if (FILENAME_EXTENSION_UPPER_CASE)
+ return g_utf8_strup(ETFile->ETFileDescription->Extension,-1);
+
+ else // FILENAME_EXTENSION_NO_CHANGE
+ return g_strdup(ETFile->ETFileExtension);
+}
+
+
+/*
+ * Check if the basename+extension of the file doesn't exceed following limits :
+ * - ogg filenames musn't exceed 255-6 characters (because we use mkstemp)
+ * - other filenames musn't exceed 255 characters
+ * Parameters:
+ * - 'filename_utf8' filename without the extension
+ */
+void ET_File_Name_Check_Length (ET_File *ETFile, gchar *filename_utf8)
+{
+ ET_File_Description *ETFileDescription;
+ gchar *basename;
+ gint exceed_size;
+
+
+ if (!ETFile || !filename_utf8) return;
+
+ basename = g_path_get_basename(filename_utf8); // If it contains directories...
+
+ ETFileDescription = ETFile->ETFileDescription;
+ switch (ETFileDescription->FileType)
+ {
+#ifdef ENABLE_OGG
+ case OGG_FILE:
+ if ( (exceed_size = (strlen(basename) - 245)) > 0 ) // 255 - 4 (extension) - 6 (mkstemp)
+ {
+ Log_Print(_("The filename '%s' exceeds %d characters and will be truncated!\n"), filename_utf8, 245);
+ filename_utf8[strlen(filename_utf8) - exceed_size] = '\0';
+ }
+ break;
+#endif
+ default:
+ if ( (exceed_size = (strlen(basename) - 251)) > 0 ) // 255 - 4 (extension)
+ {
+ Log_Print(_("The filename '%s' exceeds %d characters and will be truncated!\n"), filename_utf8, 251);
+ filename_utf8[strlen(filename_utf8) - exceed_size] = '\0';
+ }
+ break;
+ }
+ g_free(basename);
+}
+
+
+/*
+ * Used to replace the illegal characters in the filename
+ * Paremeter 'filename' musn't contain the path, else directories separators would be replaced!
+ */
+gboolean ET_File_Name_Convert_Character (gchar *filename_utf8)
+{
+ gchar *character;
+
+ if (!filename_utf8)
+ return FALSE;
+
+ // Convert automatically the directory separator ('/' on LINUX and '\' on WIN32) to '-'.
+ while ( (character=g_utf8_strchr(filename_utf8, -1, G_DIR_SEPARATOR))!=NULL )
+ *character = '-';
+
+#ifdef WIN32
+ // Convert character '\' on WIN32 to '-'.
+ while ( (character=g_utf8_strchr(filename_utf8, -1, '\\'))!=NULL )
+ *character = '-';
+ // Convert character '/' on WIN32 to '-'. (May be converted to '\', after...)
+ while ( (character=g_utf8_strchr(filename_utf8, -1, '/'))!=NULL )
+ *character = '-';
+#endif
+
+ // Convert other illegal characters on FAT32/16 filesystems and ISO9660 and Joliet (CD-ROM filesystems)
+ if (REPLACE_ILLEGAL_CHARACTERS_IN_FILENAME)
+ {
+ // Commented as we display unicode values as "\351" for "é"
+ //while ( (character=g_utf8_strchr(filename_utf8, -1, '\\'))!=NULL )
+ // *character = ',';
+ while ( (character=g_utf8_strchr(filename_utf8, -1, ':'))!=NULL )
+ *character = '-';
+ //while ( (character=g_utf8_strchr(filename_utf8, -1, ';'))!=NULL )
+ // *character = '-';
+ while ( (character=g_utf8_strchr(filename_utf8, -1, '*'))!=NULL )
+ *character = '+';
+ while ( (character=g_utf8_strchr(filename_utf8, -1, '?'))!=NULL )
+ *character = '_';
+ while ( (character=g_utf8_strchr(filename_utf8, -1, '\"'))!=NULL )
+ *character = '\'';
+ while ( (character=g_utf8_strchr(filename_utf8, -1, '<'))!=NULL )
+ *character = '(';
+ while ( (character=g_utf8_strchr(filename_utf8, -1, '>'))!=NULL )
+ *character = ')';
+ while ( (character=g_utf8_strchr(filename_utf8, -1, '|'))!=NULL )
+ *character = '-';
+ }
+ return TRUE;
+}
+
+
+/*
+ * Returns the number of file in the directory of the selected file.
+ * Parameter "path" should be in UTF-8
+ */
+guint ET_Get_Number_Of_Files_In_Directory (gchar *path_utf8)
+{
+ GList *etfilelist;
+ guint count = 0;
+
+ if (!path_utf8) return count;
+
+ etfilelist = g_list_first(ETCore->ETFileList);
+ while (etfilelist)
+ {
+ ET_File *ETFile = (ET_File *)etfilelist->data;
+ gchar *cur_filename_utf8 = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value_utf8;
+ gchar *dirname_utf8 = g_path_get_dirname(cur_filename_utf8);
+
+ if (g_utf8_collate(dirname_utf8, path_utf8) == 0)
+ count++;
+
+ g_free(dirname_utf8 );
+
+ etfilelist = etfilelist->next;
+ }
+
+ return count;
+}
+
+/*
+ * Try to valide a full string : if some characters are invalid, we skip them to
+ * return a string with only the valid characters.
+ */
+gchar *ET_Utf8_Validate_Full_String (gchar *string_to_validate)
+{
+ gchar *stv;
+ gchar *stv_end;
+ gchar *tmp, *tmp1;
+
+ if (!string_to_validate)
+ return NULL;
+
+ stv = g_strdup(string_to_validate);
+ // Remove all invalid character
+ while ( !g_utf8_validate(stv,-1,(const gchar **)&stv_end) )
+ {
+ // Not UTF-8 validated
+ tmp = tmp1 = stv_end;
+ tmp++;
+ while (*tmp)
+ {
+ if (*tmp)
+ *(tmp1++) = *(tmp++);
+ }
+ *tmp1 = '\0';
+ }
+ /*
+ // Truncate at first invalid character
+ if ( !g_utf8_validate(stv,-1,(const gchar **)&stv_end) )
+ {
+ // Not UTF-8 validated
+ *stv_end = '\0';
+ }*/
+
+ return stv;
+}
+
+/***********************
+ * Debugging functions *
+ ***********************/
+
+void ET_Debug_Print_File (ET_File *ETFile, gchar *file, gint line, gchar *function)
+{
+ GList *etfilelist = NULL;
+
+ if (ETFile)
+ etfilelist = g_list_append(etfilelist,ETFile);
+ ET_Debug_Print_File_List(etfilelist,file,line,function);
+ g_list_free(etfilelist);
+}
+
+
+/*
+ * Functions for DEBUGGING ONLY
+ * ET_Print_File_List => show list of filename
+ * Parameters: ETFileList : the list of files to display
+ * file = __FILE__
+ * line = __LINE__
+ * function = __FUNCTION__
+ */
+void ET_Debug_Print_File_List (GList *ETFileList, gchar *file, gint line, gchar *function)
+{
+ gint efl_item = 1;
+ gint fnl_item = 1;
+ gint ftl_item = 1;
+ gint etfilelist_length;
+ gint filenamelist_length;
+ gint filetaglist_length;
+ GList *etfilelist;
+ GList *filenamelist;
+ GList *filetaglist;
+
+
+ g_print("\n#### File list from %s:%d - start ####\n",file,line);
+ g_print("#### Function : %s ####\n",function);
+ if (ETFileList)
+ etfilelist = g_list_first(ETFileList);
+ else
+ etfilelist = g_list_first(ETCore->ETFileList);
+ etfilelist_length = g_list_length(etfilelist);
+ while (etfilelist)
+ {
+ g_print("#> ETFile %d/%d (%p)\n",efl_item,etfilelist_length,(ET_File *)etfilelist->data);
+ g_print("|--- IndexKey : '%d'\n",((ET_File *)etfilelist->data)->IndexKey);
+ g_print("|--- file_cur : '%s'\n",((File_Name *)((ET_File *)etfilelist->data)->FileNameCur->data)->value_utf8);
+ g_print("|--- file_new : '%s'\n",((File_Name *)((ET_File *)etfilelist->data)->FileNameNew->data)->value_utf8);
+ g_print("|--- saved : '%d'\n",((File_Name *)((ET_File *)etfilelist->data)->FileNameNew->data)->saved);
+
+ filenamelist = g_list_first( ((ET_File *)etfilelist->data)->FileNameList );
+ filenamelist_length = g_list_length(filenamelist);
+ fnl_item = 1;
+ while (filenamelist)
+ {
+ g_print("|--> File_Name : %d/%d %s\n",fnl_item,filenamelist_length,(filenamelist==((ET_File *)etfilelist->data)->FileNameNew)?"<<CURRENT>>":"");
+ g_print("| |-> key : '%d'\n",((File_Name *)filenamelist->data)->key);
+ g_print("| |-> filename: '%s'\n",((File_Name *)filenamelist->data)->value_utf8);
+
+ filenamelist = filenamelist->next;
+ fnl_item++;
+ }
+
+ g_print("|\n");
+
+ filetaglist = g_list_first( ((ET_File *)etfilelist->data)->FileTagList );
+ filetaglist_length = g_list_length(filetaglist);
+ ftl_item = 1;
+ while (filetaglist)
+ {
+ g_print("|--> File_Tag : %d/%d %s\n",ftl_item,filetaglist_length,(filetaglist==((ET_File *)etfilelist->data)->FileTag)?"<<CURRENT>>":"");
+ g_print("| |-> key : '%d'\n",((File_Tag *)filetaglist->data)->key);
+ g_print("| |-> saved : '%d'\n",((File_Tag *)filetaglist->data)->saved);
+ g_print("| |-> title : '%s'\n",((File_Tag *)filetaglist->data)->title);
+ g_print("| |-> artist : '%s'\n",((File_Tag *)filetaglist->data)->artist);
+ g_print("| |-> album : '%s'\n",((File_Tag *)filetaglist->data)->album);
+ g_print("| |-> disc_number : '%s'\n",((File_Tag *)filetaglist->data)->disc_number);
+ g_print("| |-> year : '%s'\n",((File_Tag *)filetaglist->data)->year);
+ g_print("| |-> track : '%s'\n",((File_Tag *)filetaglist->data)->track);
+ g_print("| |-> track_total : '%s'\n",((File_Tag *)filetaglist->data)->track_total);
+ g_print("| |-> genre : '%s'\n",((File_Tag *)filetaglist->data)->genre);
+ g_print("| |-> comment : '%s'\n",((File_Tag *)filetaglist->data)->comment);
+ g_print("| |-> composer : '%s'\n",((File_Tag *)filetaglist->data)->composer);
+ g_print("| |-> orig_artist : '%s'\n",((File_Tag *)filetaglist->data)->orig_artist);
+ g_print("| |-> copyright : '%s'\n",((File_Tag *)filetaglist->data)->copyright);
+ g_print("| |-> url : '%s'\n",((File_Tag *)filetaglist->data)->url);
+ g_print("| |-> encoded_by : '%s'\n",((File_Tag *)filetaglist->data)->encoded_by);
+
+ filetaglist = filetaglist->next;
+ ftl_item++;
+ }
+
+ g_print("|\n");
+
+ etfilelist = etfilelist->next;
+ efl_item++;
+ }
+ g_print("#### File list from %s:%d - end ####\n",file,line);
+}
+
+// Ex : ET_Debug_Print_Artist_Album_List(__FILE__,__LINE__,__FUNCTION__);
+void ET_Debug_Print_Artist_Album_List (gchar *file, gint line, gchar *function)
+{
+ GList *ArtistList;
+ GList *AlbumList;
+ GList *etfilelist;
+ ET_File *etfile;
+ gint artist_item;
+ gint artist_length;
+ gint album_item;
+ gint album_length;
+ gint etfile_item;
+ gint etfile_length;
+
+ g_print("\n#### Artist Album list from %s:%d - start ####\n",file,line);
+ g_print("#### Function : %s ####\n",function);
+ ArtistList = g_list_first(ETCore->ETArtistAlbumFileList);
+ artist_length = g_list_length(ArtistList);
+ artist_item = 1;
+ while (ArtistList)
+ {
+ g_print("#> Artist %d/%d \n",artist_item,artist_length);
+ AlbumList = g_list_first((GList *)ArtistList->data);
+ album_length = g_list_length(AlbumList);
+ album_item = 1;
+ while (AlbumList)
+ {
+ g_print(" |-> Album %d/%d \n",album_item,album_length);
+ etfilelist = g_list_first((GList *)AlbumList->data);
+ etfile_length = g_list_length(etfilelist);
+ etfile_item = 1;
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ g_print(" | |-> ETFile %d/%d (%p)\n",etfile_item,etfile_length,etfile);
+ g_print(" | | |-> file : '%s'\n",((File_Name *)etfile->FileNameCur->data)->value_utf8);
+ g_print(" | | |-> artist : '%s'\n",((File_Tag *)etfile->FileTag->data)->artist);
+ g_print(" | | |-> album : '%s'\n",((File_Tag *)etfile->FileTag->data)->album);
+
+ etfilelist = etfilelist->next;
+ etfile_item++;
+ }
+
+ AlbumList = AlbumList->next;
+ album_item++;
+ }
+
+ ArtistList = ArtistList->next;
+ artist_item++;
+ }
+ g_print("#### Artist Album list from %s:%d - end ####\n",file,line);
+}
+
+
+#include "time.h"
+void ET_Debug_Print_Time (gchar *msg)
+{
+ struct tm *tms;
+ time_t nowtime;
+ char str[50];
+ //char *pstr = str;
+
+ nowtime = time(NULL);
+ tms = localtime(&nowtime);
+ strftime(str,sizeof(str),"%X",tms); // Time without date in current locale
+ //strftime(str,sizeof(str),"%x",ptr); // Date without time in current locale
+
+ if (msg)
+ {
+ g_print("## %s %s ##\n",msg,str);
+ }else
+ {
+ g_print("## %s ##\n",str);
+ }
+}
diff --git a/src/et_core.h b/src/et_core.h
new file mode 100755
index 0000000..ccc7f76
--- /dev/null
+++ b/src/et_core.h
@@ -0,0 +1,469 @@
+/* et_core.h - 2001/10/21 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __ET_CORE_H__
+#define __ET_CORE_H__
+
+
+#include <glib.h>
+#include <gdk/gdktypes.h>
+#include <config.h> // For definition of ENABLE_OGG, ...
+
+
+/***************
+ * Declaration *
+ ***************/
+
+#ifndef MAX
+# define MAX(a,b) ((a) > (b) ? (a) : (b))
+#endif
+
+#ifndef MIN
+# define MIN(a,b) ((a) < (b) ? (a) : (b))
+#endif
+#ifndef MIN3
+# define MIN3(x,y,z) (MIN(x,y) < (z) ? MIN(x,y) : (z))
+#endif
+#ifndef MIN4
+# define MIN4(x,y,z,w) (MIN3(x,y,z) < (w) ? MIN3(x,y,z) : (w))
+#endif
+
+
+/*
+ * Colors Used (see declaration into et_core.c)
+ */
+GdkColor LIGHT_BLUE;
+GdkColor RED;
+GdkColor LIGHT_RED;
+GdkColor GREY;
+GdkColor LIGHT_GREY;
+GdkColor YELLOW;
+GdkColor BLACK;
+
+
+/*
+ * Types of sorting (discontinuous value to avoid separators in SortingFileOptionMenu).
+ */
+typedef enum
+{
+ SORTING_BY_ASCENDING_FILENAME,
+ SORTING_BY_DESCENDING_FILENAME,
+ SORTING_BY_ASCENDING_TRACK_NUMBER,
+ SORTING_BY_DESCENDING_TRACK_NUMBER,
+ SORTING_BY_ASCENDING_CREATION_DATE,
+ SORTING_BY_DESCENDING_CREATION_DATE,
+ SORTING_BY_ASCENDING_TITLE,
+ SORTING_BY_DESCENDING_TITLE,
+ SORTING_BY_ASCENDING_ARTIST,
+ SORTING_BY_DESCENDING_ARTIST,
+ SORTING_BY_ASCENDING_ALBUM,
+ SORTING_BY_DESCENDING_ALBUM,
+ SORTING_BY_ASCENDING_YEAR,
+ SORTING_BY_DESCENDING_YEAR,
+ SORTING_BY_ASCENDING_GENRE,
+ SORTING_BY_DESCENDING_GENRE,
+ SORTING_BY_ASCENDING_COMMENT,
+ SORTING_BY_DESCENDING_COMMENT,
+ SORTING_BY_ASCENDING_COMPOSER,
+ SORTING_BY_DESCENDING_COMPOSER,
+ SORTING_BY_ASCENDING_ORIG_ARTIST,
+ SORTING_BY_DESCENDING_ORIG_ARTIST,
+ SORTING_BY_ASCENDING_COPYRIGHT,
+ SORTING_BY_DESCENDING_COPYRIGHT,
+ SORTING_BY_ASCENDING_URL,
+ SORTING_BY_DESCENDING_URL,
+ SORTING_BY_ASCENDING_ENCODED_BY,
+ SORTING_BY_DESCENDING_ENCODED_BY,
+ SORTING_BY_ASCENDING_FILE_TYPE,
+ SORTING_BY_DESCENDING_FILE_TYPE,
+ SORTING_BY_ASCENDING_FILE_SIZE,
+ SORTING_BY_DESCENDING_FILE_SIZE,
+ SORTING_BY_ASCENDING_FILE_DURATION,
+ SORTING_BY_DESCENDING_FILE_DURATION,
+ SORTING_BY_ASCENDING_FILE_BITRATE,
+ SORTING_BY_DESCENDING_FILE_BITRATE,
+ SORTING_BY_ASCENDING_FILE_SAMPLERATE,
+ SORTING_BY_DESCENDING_FILE_SAMPLERATE,
+ SORTING_UNKNOWN
+} ET_Sorting_Type;
+
+
+/*
+ * Types of files
+ */
+typedef enum
+{ // (.ext) is not so popular
+ MP2_FILE = 0, // Mpeg audio Layer 2 : .mp2 (.mpg) (.mpga)
+ MP3_FILE, // Mpeg audio Layer 3 : .mp3 (.mpg) (.mpga)
+ MP4_FILE, // Mpeg audio Layer 4 / AAC : .mp4 (.m4a) (.m4p)
+ OGG_FILE, // Ogg Vorbis audio : .ogg (.ogm)
+ FLAC_FILE, // FLAC (lossless) : .flac .fla
+ MPC_FILE, // MusePack : .mpc .mp+ .mpp
+ MAC_FILE, // Monkey's Audio (lossless) : .ape (.mac)
+ SPEEX_FILE, // Speech audio files : .spx
+ OFR_FILE, // OptimFROG (lossless) : .ofr .ofs
+ WAVPACK_FILE, // Wavpack (lossless) : .wv
+ UNKNOWN_FILE
+} ET_File_Type;
+
+
+/*
+ * Types of tags
+ */
+typedef enum
+{
+ ID3_TAG = 0,
+ OGG_TAG,
+ APE_TAG,
+ FLAC_TAG,
+ MP4_TAG,
+ WAVPACK_TAG,
+ UNKNOWN_TAG
+} ET_Tag_Type;
+
+
+/*
+ * Description of each item of the FileNameList list
+ */
+typedef struct _File_Name File_Name;
+struct _File_Name
+{
+ guint key;
+ gboolean saved; /* Set to TRUE if this filename had been saved */
+ gchar *value; /* The filename containing the full path and the extension of the file */
+ gchar *value_utf8; /* Same than "value", but converted to UTF-8 to avoid multiple call to the convertion function */
+ gchar *value_ck; /* Collate key of "value_utf8" to speed up comparaison */
+};
+
+
+/*
+ * Description of Picture item (see picture.h)
+ */
+typedef struct _Picture Picture;
+struct _Picture
+{
+ gint type;
+ gchar *description;
+ gint width; /* Original width of the picture */
+ gint height; /* Original height of the picture */
+ gulong size; /* Picture size in bits */
+ guchar *data;
+ Picture *next;
+};
+
+
+/*
+ * Description of each item of the TagList list
+ */
+typedef struct _File_Tag File_Tag;
+struct _File_Tag
+{
+ guint key; /* Incremented value */
+ gboolean saved; /* Set to TRUE if this tag had been saved */
+
+ gchar *title; /* Title of track */
+ gchar *artist; /* Artist name */
+ gchar *album; /* Album name */
+ gchar *disc_number; /* Disc number */
+ gchar *year; /* Year of track */
+ gchar *track; /* Position of track in the album */
+ gchar *track_total; /* The number of tracks for the album (ex: 12/20) */
+ gchar *genre; /* Genre of song */
+ gchar *comment; /* Comment */
+ gchar *composer; /* Composer */
+ gchar *orig_artist; /* Original artist / Performer */
+ gchar *copyright; /* Copyright */
+ gchar *url; /* URL */
+ gchar *encoded_by; /* Encoded by */
+ Picture *picture; /* Picture */
+ GList *other; /* List of unsupported fields (used for ogg only) */
+};
+
+
+/*
+ * Structure containing informations of the header of file
+ * Nota: This struct was copied from an "MP3 structure", and will change later.
+ */
+typedef struct _ET_File_Info ET_File_Info;
+struct _ET_File_Info
+{
+ gint version; /* Version of bitstream (mpeg version for mp3, encoder version for ogg) */
+ gint mpeg25; /* Version is MPEG 2.5? */
+ gint layer; /* "MP3 data" */
+ gint bitrate; /* Bitrate (kb/s) */
+ gboolean variable_bitrate; /* Is a VBR file? */
+ gint samplerate; /* Samplerate (Hz) */
+ gint mode; /* Stereo, ... or channels for ogg */
+ gint size; /* The size of file (in bytes) */
+ gint duration; /* The duration of file (in seconds) */
+ gchar *mpc_profile; /* MPC data */
+ gchar *mpc_version; /* MPC data : encoder version (also for Speex) */
+};
+
+
+/*
+ * Structure for descripting supported files
+ */
+typedef struct _ET_File_Description ET_File_Description;
+struct _ET_File_Description
+{
+ ET_File_Type FileType; /* Type of file (ex: MP3) */
+ gchar *Extension; /* Extension (ex: ".mp3") */
+ ET_Tag_Type TagType; /* Type of tag (ex: ID3) */
+};
+
+
+/*
+ * Description of supported files
+ */
+static const ET_File_Description ETFileDescription[] =
+{
+#ifdef ENABLE_MP3
+ {MP3_FILE, ".mp3", ID3_TAG},
+ {MP2_FILE, ".mp2", ID3_TAG},
+#endif
+#ifdef ENABLE_OGG
+ {OGG_FILE, ".ogg", OGG_TAG},
+#endif
+#ifdef ENABLE_SPEEX
+ {SPEEX_FILE, ".spx", OGG_TAG}, // Implemented by Pierre Dumuid
+#endif
+#ifdef ENABLE_FLAC
+ {FLAC_FILE, ".flac", FLAC_TAG},
+ {FLAC_FILE, ".fla", FLAC_TAG},
+#endif
+ {MPC_FILE, ".mpc", APE_TAG}, // Implemented by Artur Polaczynski
+ {MPC_FILE, ".mp+", APE_TAG}, // Implemented by Artur Polaczynski
+ {MPC_FILE, ".mpp", APE_TAG}, // Implemented by Artur Polaczynski
+ {MAC_FILE, ".ape", APE_TAG}, // Implemented by Artur Polaczynski
+ {MAC_FILE, ".mac", APE_TAG}, // Implemented by Artur Polaczynski
+ {OFR_FILE, ".ofr", APE_TAG},
+ {OFR_FILE, ".ofs", APE_TAG},
+#ifdef ENABLE_MP4
+ {MP4_FILE, ".mp4", MP4_TAG}, // Implemented by Michael Ihde
+ {MP4_FILE, ".m4a", MP4_TAG}, // Implemented by Michael Ihde
+ {MP4_FILE, ".m4p", MP4_TAG}, // Implemented by Michael Ihde
+#endif
+#ifdef ENABLE_WAVPACK
+ {WAVPACK_FILE, ".wv", WAVPACK_TAG}, // Implemented by Maarten Maathuis
+#endif
+ {UNKNOWN_FILE, "", UNKNOWN_TAG} /* This item must be placed to the end! */
+};
+
+/* Calculate the last index of the previous tab */
+#define ET_FILE_DESCRIPTION_SIZE ( sizeof(ETFileDescription)/sizeof(ETFileDescription[0]) - 1 )
+
+
+/*
+ * Description of each item of the ETFileList list
+ */
+typedef struct _ET_File ET_File;
+struct _ET_File
+{
+ guint IndexKey; /* Value used to display the position in the list (and in the BrowserList) - Must be renumered after resorting the list - This value varies when resorting list */
+
+ guint ETFileKey; /* Primary key to identify each item of the list (no longer used?) */
+
+ ET_File_Description *ETFileDescription;
+ gchar *ETFileExtension; /* Real extension of the file (keeping the case) (should be placed in ETFileDescription?) */
+ ET_File_Info *ETFileInfo; /* Header infos: bitrate, duration, ... */
+
+ GList *FileNameCur; /* Points to item of FileNameList that represents the current value of filename state (i.e. file on hard disk) */
+ GList *FileNameNew; /* Points to item of FileNameList that represents the new value of filename state */
+ GList *FileNameList; /* Contains the history of changes about the file name */
+ GList *FileNameListBak; /* Contains items of FileNameList removed by 'undo' procedure but have data currently saved (for example, when you save your last changes, make some 'undo', then make new changes) */
+
+ GList *FileTag; /* Points to the current item used of FileTagList */
+ GList *FileTagList; /* Contains the history of changes about file tag data */
+ GList *FileTagListBak; /* Contains items of FileTagList removed by 'undo' procedure but have data currently saved */
+
+};
+
+
+
+/*
+ * Description of each item of the ETHistoryFileList list
+ */
+typedef struct _ET_History_File ET_History_File;
+struct _ET_History_File
+{
+ ET_File *ETFile; /* Pointer to item of ETFileList changed */
+};
+
+
+
+/*
+ * Description of all variables, lists needed by EasyTAG
+ */
+typedef struct _ET_Core ET_Core;
+struct _ET_Core
+{
+ // The main list of files
+ GList *ETFileList; // List of ALL FILES (ET_File) loaded in the directory and sub-directories (List of ET_File) (This list musn't be altered, and points always to the first item)
+
+ // The list of files organized by artist then album
+ GList *ETArtistAlbumFileList;
+
+
+ // Displayed list (part of the main list of files displayed in BrowserList) (used when displaying by Artist & Album)
+ GList *ETFileDisplayedList; // List of files displayed (List of ET_File from ETFileList / ATArtistAlbumFileList) | !! May not point to the first item!!
+ GList *ETFileDisplayedListPtr; // Pointer to the current item of ETFileDisplayedList used with ET_Displayed_File_List_First, ET_Displayed_File_List_Previous
+ guint ETFileDisplayedList_Length; // Contains the length of the displayed list
+ gfloat ETFileDisplayedList_TotalSize; // Total of the size of files in displayed list (in bytes)
+ gulong ETFileDisplayedList_TotalDuration; // Total of duration of files in displayed list (in seconds)
+
+ // Displayed item
+ ET_File *ETFileDisplayed; // Pointer to the current ETFile displayed in EasyTAG (may be NULL)
+
+
+ // History list
+ GList *ETHistoryFileList; // History list of files changes for undo/redo actions
+};
+
+ET_Core *ETCore; // Main pointer to structure needed by EasyTAG
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void ET_Core_Create (void);
+void ET_Core_Initialize (void);
+void ET_Core_Free (void);
+void ET_Core_Destroy (void);
+
+gboolean ET_File_Is_Supported (gchar *filename);
+GList *ET_Add_File_To_File_List (gchar *filename);
+gboolean ET_Remove_File_From_File_List (ET_File *ETFile);
+
+gboolean ET_Create_Artist_Album_File_List (void);
+gboolean ET_Add_File_To_Artist_Album_File_List (ET_File *ETFile);
+gboolean ET_Remove_File_From_File_List (ET_File *ETFile);
+
+gboolean ET_Check_If_File_Is_Saved (ET_File *ETFile);
+gboolean ET_Check_If_All_Files_Are_Saved (void);
+
+//gboolean ET_Free_File_List (void);
+gboolean ET_Free_History_File_List (void);
+gboolean ET_Free_Displayed_File_List (void);
+
+ET_File *ET_File_Item_New (void);
+File_Name *ET_File_Name_Item_New (void);
+File_Tag *ET_File_Tag_Item_New (void);
+ET_File_Info *ET_File_Info_Item_New (void);
+gboolean ET_Free_File_Tag_Item (File_Tag *FileTag);
+gboolean ET_Free_File_List_Item (ET_File *ETFile);
+
+gboolean ET_Copy_File_Tag_Item (ET_File *ETFile, File_Tag *FileTag);
+gboolean ET_Set_Field_File_Name_Item (gchar **FileNameField, gchar *value);
+gboolean ET_Set_Filename_File_Name_Item (File_Name *FileName, gchar *filename_utf8, gchar *filename);
+gboolean ET_Set_Field_File_Tag_Item (gchar **FileTagField, gchar *value);
+gboolean ET_Set_Field_File_Tag_Picture (Picture **FileTagField, Picture *pic);
+
+GList *ET_Displayed_File_List_First (void);
+GList *ET_Displayed_File_List_Previous (void);
+GList *ET_Displayed_File_List_Next (void);
+GList *ET_Displayed_File_List_Last (void);
+GList *ET_Displayed_File_List_By_Etfile (ET_File *ETFile);
+GList *ET_Displayed_File_List_By_Position (gulong pos_in_list);
+guint ET_Displayed_File_List_Get_Length (void);
+//GList *ET_Displayed_File_List_Current (void);
+
+gboolean ET_Set_Displayed_File_List (GList *ETFileList);
+
+void ET_Display_File_Data_To_UI (ET_File *ETFile);
+void ET_Save_File_Data_From_UI (ET_File *ETFile);
+gboolean ET_Save_File_Tag_To_HD (ET_File *ETFile);
+
+gboolean ET_Undo_File_Data (ET_File *ETFile);
+gboolean ET_Redo_File_Data (ET_File *ETFile);
+gboolean ET_File_Data_Has_Undo_Data (ET_File *ETFile);
+gboolean ET_File_Data_Has_Redo_Data (ET_File *ETFile);
+
+ET_File *ET_Undo_History_File_Data (void);
+ET_File *ET_Redo_History_File_Data (void);
+gboolean ET_History_File_List_Has_Undo_Data (void);
+gboolean ET_History_File_List_Has_Redo_Data (void);
+
+gboolean ET_Manage_Changes_Of_File_Data (ET_File *ETFile, File_Name *FileName, File_Tag *FileTag);
+void ET_Mark_File_Name_As_Saved (ET_File *ETFile);
+void ET_Update_Directory_Name_Into_File_List (gchar* last_path, gchar *new_path);
+gboolean ET_File_Name_Convert_Character (gchar *filename_utf8);
+gchar *ET_File_Name_Format_Extension (ET_File *ETFile);
+gchar *ET_File_Name_Generate (ET_File *ETFile, gchar *new_file_name);
+guint ET_Get_Number_Of_Files_In_Directory (gchar *path_utf8);
+gchar *ET_Utf8_Validate_Full_String (gchar *string_to_validate);
+
+gboolean ET_Detect_Changes_Of_File_Tag (File_Tag *FileTag1, File_Tag *FileTag2);
+
+GList *ET_Sort_File_List (GList *ETFileList, ET_Sorting_Type Sorting_Type);
+void ET_Sort_Displayed_File_List (ET_Sorting_Type Sorting_Type);
+void ET_Sort_Displayed_File_List_And_Update_UI (ET_Sorting_Type Sorting_Type);
+gint ET_Comp_Func_Sort_File_By_Ascending_Filename (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Filename (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Creation_Date (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Creation_Date (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Track_Number (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Track_Number (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Title (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Title (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Artist (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Artist (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Album (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Album (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Year (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Year (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Genre (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Genre (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Comment (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Comment (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Composer (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Composer (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Orig_Artist (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Orig_Artist (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Copyright (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Copyright (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Url (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Url (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_Encoded_By (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_Encoded_By (ET_File *ETFile1, ET_File *ETFile2);
+
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Type (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_File_Type (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Size (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_File_Size (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Duration (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_File_Duration (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Bitrate (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_File_Bitrate (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Ascending_File_Samplerate (ET_File *ETFile1, ET_File *ETFile2);
+gint ET_Comp_Func_Sort_File_By_Descending_File_Samplerate (ET_File *ETFile1, ET_File *ETFile2);
+
+
+/* Functions for debugging */
+void ET_Debug_Print_File (ET_File *ETFile, gchar *file, gint line, gchar *function);
+void ET_Debug_Print_File_List (GList *ETFileList, gchar *file, gint line, gchar *function);
+void ET_Debug_Print_Artist_Album_List (gchar *file, gint line, gchar *function);
+void ET_Debug_Print_Time (gchar *msg);
+
+
+#endif /* __ET_CORE_H__ */
diff --git a/src/flac_header.c b/src/flac_header.c
new file mode 100755
index 0000000..408b73b
--- /dev/null
+++ b/src/flac_header.c
@@ -0,0 +1,335 @@
+/* flac_header.c - 2002/07/03 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Code taken from :
+ * FLAC - Free Lossless Audio Codec - v1.0.3
+ * Copyright (C) 2001 Josh Coalson
+ *
+ */
+
+#include <config.h> // For definition of ENABLE_FLAC
+
+#ifdef ENABLE_FLAC
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h> // 20030519 <tmancill@debian.org> for compiliation on ia64 arch
+#include <FLAC/all.h>
+
+#include "easytag.h"
+#include "et_core.h"
+#include "log.h"
+#include "misc.h"
+#include "charset.h"
+
+/* Patch from Josh Coalson
+ * FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 *
+ * by LEGACY_FLAC we mean pre-FLAC 1.1.3; in FLAC 1.1.3 the FLAC__FileDecoder was merged into the FLAC__StreamDecoder */
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
+#define LEGACY_FLAC // For FLAC version < 1.1.3
+#else
+#undef LEGACY_FLAC
+#endif
+
+
+/****************
+ * Declarations *
+ ****************/
+/* Taken in "xmms/plugin.h" */
+typedef enum
+{
+ FMT_U8, FMT_S8, FMT_U16_LE, FMT_U16_BE, FMT_U16_NE, FMT_S16_LE, FMT_S16_BE, FMT_S16_NE
+}
+AFormat;
+
+typedef struct {
+ FLAC__bool abort_flag;
+ FLAC__bool is_playing;
+ FLAC__bool eof;
+ FLAC__bool play_thread_open; /* if true, is_playing must also be true */
+ unsigned total_samples;
+ unsigned bits_per_sample;
+ unsigned channels;
+ unsigned sample_rate;
+ unsigned length_in_msec;
+ AFormat sample_format; // Note : defined in XMMS devel
+ int seek_to_in_sec;
+} file_info_struct;
+
+
+static FLAC__byte reservoir_[FLAC__MAX_BLOCK_SIZE * 2 * 2 * 2]; /* *2 for max bytes-per-sample, *2 for max channels, another *2 for overflow */
+static unsigned reservoir_samples_ = 0;
+
+
+/**************
+ * Prototypes *
+ **************/
+#ifdef LEGACY_FLAC
+static FLAC__StreamDecoderWriteStatus write_callback_(const FLAC__FileDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
+static void metadata_callback_(const FLAC__FileDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
+static void error_callback_ (const FLAC__FileDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
+#else
+static FLAC__StreamDecoderWriteStatus write_callback_(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
+static void metadata_callback_(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
+static void error_callback_ (const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
+#endif
+
+
+
+/*************
+ * Functions *
+ *************/
+
+/****************************
+ * Header info of FLAC file *
+ ****************************/
+
+gboolean Flac_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
+{
+ FILE *file;
+ gdouble duration = 0;
+ gulong filesize;
+
+#ifdef LEGACY_FLAC
+ FLAC__FileDecoder *tmp_decoder;
+#else
+ FLAC__StreamDecoder *tmp_decoder;
+#endif
+ file_info_struct tmp_file_info;
+
+ if (!filename || !ETFileInfo)
+ return FALSE;
+
+ if ( (file=fopen(filename,"r"))==NULL )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+ fclose(file);
+
+ /* Decoding FLAC file */
+#ifdef LEGACY_FLAC
+ tmp_decoder = FLAC__file_decoder_new();
+#else
+ tmp_decoder = FLAC__stream_decoder_new();
+#endif
+ if (tmp_decoder == 0)
+ {
+ return FALSE;
+ }
+
+ tmp_file_info.abort_flag = false;
+#ifdef LEGACY_FLAC
+ FLAC__file_decoder_set_md5_checking (tmp_decoder, false);
+ FLAC__file_decoder_set_filename (tmp_decoder, filename);
+ FLAC__file_decoder_set_write_callback (tmp_decoder, write_callback_);
+ FLAC__file_decoder_set_metadata_callback(tmp_decoder, metadata_callback_);
+ FLAC__file_decoder_set_error_callback (tmp_decoder, error_callback_);
+ FLAC__file_decoder_set_client_data (tmp_decoder, &tmp_file_info);
+ if (FLAC__file_decoder_init(tmp_decoder) != FLAC__FILE_DECODER_OK)
+ {
+ return FALSE;
+ }
+
+#else
+ FLAC__stream_decoder_set_md5_checking (tmp_decoder, false);
+ if(FLAC__stream_decoder_init_file(tmp_decoder, filename, write_callback_, metadata_callback_, error_callback_, &tmp_file_info) != FLAC__STREAM_DECODER_INIT_STATUS_OK)
+ return FALSE;
+#endif
+
+#ifdef LEGACY_FLAC
+ // In FLAC 1.0.3, is used : FLAC__file_decoder_process_metadata
+ // In FLAC 1.0.4, is used : FLAC__file_decoder_process_until_end_of_metadata
+#if ( (LIBFLAC_MAJOR <= 1) && (LIBFLAC_MINOR <= 0) && (LIBFLAC_PATCH <= 3) )
+ if (!FLAC__file_decoder_process_metadata(tmp_decoder)) // FLAC 1.0.3
+#else
+ if (!FLAC__file_decoder_process_until_end_of_metadata(tmp_decoder)) // FLAC 1.0.4 (Bastian Kleineidam)
+#endif
+#else
+ if(!FLAC__stream_decoder_process_until_end_of_metadata(tmp_decoder))
+#endif
+ {
+ return FALSE;
+ }
+
+#ifdef LEGACY_FLAC
+ FLAC__file_decoder_finish(tmp_decoder);
+ FLAC__file_decoder_delete(tmp_decoder);
+#else
+ FLAC__stream_decoder_finish(tmp_decoder);
+ FLAC__stream_decoder_delete(tmp_decoder);
+#endif
+ /* End of decoding FLAC file */
+
+
+ filesize = Get_File_Size(filename);
+ duration = (gint)tmp_file_info.length_in_msec/1000;
+
+ ETFileInfo->version = 0; // Not defined in FLAC file
+ if (duration > 0)
+ ETFileInfo->bitrate = filesize*8/duration/1000; // FIXME : Approximation!! Needs to remove tag size!
+ ETFileInfo->samplerate = tmp_file_info.sample_rate;
+ ETFileInfo->mode = tmp_file_info.channels;
+ ETFileInfo->size = filesize;
+ ETFileInfo->duration = duration;
+
+ return TRUE;
+}
+
+
+
+#ifdef LEGACY_FLAC
+FLAC__StreamDecoderWriteStatus write_callback_(const FLAC__FileDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
+#else
+FLAC__StreamDecoderWriteStatus write_callback_(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
+#endif
+{
+ file_info_struct *file_info = (file_info_struct *)client_data;
+ const unsigned bps = file_info->bits_per_sample, channels = file_info->channels, wide_samples = frame->header.blocksize;
+ unsigned wide_sample, sample, channel;
+ FLAC__int8 *scbuffer = (FLAC__int8*)reservoir_;
+ FLAC__int16 *ssbuffer = (FLAC__int16*)reservoir_;
+
+ (void)decoder;
+
+ if (file_info->abort_flag)
+ return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
+
+ if (bps == 8) {
+ for(sample = reservoir_samples_*channels, wide_sample = 0; wide_sample < wide_samples; wide_sample++)
+ for(channel = 0; channel < channels; channel++, sample++)
+ scbuffer[sample] = (FLAC__int8)buffer[channel][wide_sample];
+ }
+ else if (bps == 16) {
+ for(sample = reservoir_samples_*channels, wide_sample = 0; wide_sample < wide_samples; wide_sample++)
+ for(channel = 0; channel < channels; channel++, sample++)
+ ssbuffer[sample] = (FLAC__int16)buffer[channel][wide_sample];
+ }
+ else {
+ file_info->abort_flag = true;
+ return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
+ }
+
+ reservoir_samples_ += wide_samples;
+
+ return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
+}
+
+#ifdef LEGACY_FLAC
+void metadata_callback_(const FLAC__FileDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
+#else
+void metadata_callback_(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
+#endif
+{
+ file_info_struct *file_info = (file_info_struct *)client_data;
+ (void)decoder;
+ if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) {
+ FLAC__ASSERT(metadata->data.stream_info.total_samples < 0x100000000); /* this plugin can only handle < 4 gigasamples */
+ file_info->total_samples = (unsigned)(metadata->data.stream_info.total_samples&0xffffffff);
+ file_info->bits_per_sample = metadata->data.stream_info.bits_per_sample;
+ file_info->channels = metadata->data.stream_info.channels;
+ file_info->sample_rate = metadata->data.stream_info.sample_rate;
+
+ if (file_info->bits_per_sample == 8) {
+ file_info->sample_format = FMT_S8;
+ }
+ else if (file_info->bits_per_sample == 16) {
+ file_info->sample_format = FMT_S16_NE;
+ }
+ else {
+ file_info->abort_flag = true;
+ return;
+ }
+ file_info->length_in_msec = file_info->total_samples * 10 / (file_info->sample_rate / 100);
+ }
+}
+
+#ifdef LEGACY_FLAC
+void error_callback_(const FLAC__FileDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
+#else
+void error_callback_(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
+#endif
+{
+ file_info_struct *file_info = (file_info_struct *)client_data;
+ (void)decoder;
+ if (status != FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC)
+ file_info->abort_flag = true;
+}
+
+
+
+
+gboolean Flac_Header_Display_File_Info_To_UI (gchar *filename_utf8, ET_File_Info *ETFileInfo)
+{
+ gchar *text;
+ gchar *time = NULL;
+ gchar *time1 = NULL;
+ gchar *size = NULL;
+ gchar *size1 = NULL;
+
+ /* Nothing to display */
+ //gtk_label_set_text(GTK_LABEL(VersionLabel),"");
+ //gtk_label_set_text(GTK_LABEL(VersionValueLabel),"");
+ gtk_label_set_text(GTK_LABEL(VersionLabel),_("Encoder:"));
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),"flac");
+
+ /* Bitrate */
+ text = g_strdup_printf(_("%d kb/s"),ETFileInfo->bitrate);
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel),text);
+ g_free(text);
+
+ /* Samplerate */
+ text = g_strdup_printf(_("%d Hz"),ETFileInfo->samplerate);
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),text);
+ g_free(text);
+
+ /* Mode */
+ gtk_label_set_text(GTK_LABEL(ModeLabel),_("Channels:"));
+ text = g_strdup_printf("%d",ETFileInfo->mode);
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel),text);
+ g_free(text);
+
+ /* Size */
+ size = Convert_Size(ETFileInfo->size);
+ size1 = Convert_Size(ETCore->ETFileDisplayedList_TotalSize);
+ text = g_strdup_printf("%s (%s)",size,size1);
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel),text);
+ g_free(size);
+ g_free(size1);
+ g_free(text);
+
+ /* Duration */
+ time = Convert_Duration(ETFileInfo->duration);
+ time1 = Convert_Duration(ETCore->ETFileDisplayedList_TotalDuration);
+ text = g_strdup_printf("%s (%s)",time,time1);
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel),text);
+ g_free(time);
+ g_free(time1);
+ g_free(text);
+
+ return TRUE;
+}
+
+#endif /* ENABLE_FLAC */
diff --git a/src/flac_header.h b/src/flac_header.h
new file mode 100755
index 0000000..7a7665f
--- /dev/null
+++ b/src/flac_header.h
@@ -0,0 +1,41 @@
+/* flac_header.h - 2002/07/03 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __FLAC_HEADER_H__
+#define __FLAC_HEADER_H__
+
+
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+gboolean Flac_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo);
+gboolean Flac_Header_Display_File_Info_To_UI (gchar *filename, ET_File_Info *ETFileInfo);
+
+
+#endif /* __FLAC_HEADER_H__ */
diff --git a/src/flac_tag.c b/src/flac_tag.c
new file mode 100755
index 0000000..a76e1cc
--- /dev/null
+++ b/src/flac_tag.c
@@ -0,0 +1,1029 @@
+/* flac_tag.c - 2003/12/27 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2003 Pavel Minayev <thalion@front.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#ifdef ENABLE_FLAC
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <FLAC/metadata.h>
+#include <unistd.h>
+
+#include "easytag.h"
+#include "flac_tag.h"
+#include "vcedit.h"
+#include "et_core.h"
+#include "id3_tag.h"
+#include "log.h"
+#include "misc.h"
+#include "setting.h"
+#include "picture.h"
+#include "charset.h"
+
+
+/***************
+ * Declaration *
+ ***************/
+
+#define MULTIFIELD_SEPARATOR " - "
+
+/* Patch from Josh Coalson
+ * FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 *
+ * by LEGACY_FLAC we mean pre-FLAC 1.1.3; in FLAC 1.1.3 the FLAC__FileDecoder was merged into the FLAC__StreamDecoder */
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
+#define LEGACY_FLAC // For FLAC version < 1.1.3
+#else
+#undef LEGACY_FLAC
+#endif
+
+
+/* FLAC uses Ogg Vorbis comments
+ * Ogg Vorbis fields names :
+ * - TITLE : Track name
+ * - VERSION : The version field may be used to differentiate multiple version of the same track title in a single collection. (e.g. remix info)
+ * - ALBUM : The collection name to which this track belongs
+ * - TRACKNUMBER : The track number of this piece if part of a specific larger collection or album
+ * - TRACKTOTAL :
+ * - ARTIST : Track performer
+ * - ORGANIZATION : Name of the organization producing the track (i.e. the 'record label')
+ * - DESCRIPTION : A short text description of the contents
+ * - COMME?T : same than DESCRIPTION
+ * - GENRE : A short text indication of music genre
+ * - DATE : Date the track was recorded
+ * - LOCATION : Location where track was recorded
+ * - COPYRIGHT : Copyright information
+ * - ISRC : ISRC number for the track; see the ISRC intro page for more information on ISRC numbers.
+ *
+ * Field names should not be 'internationalized'; this is a concession to simplicity
+ * not an attempt to exclude the majority of the world that doesn't speak English.
+ * Field *contents*, however, are represented in UTF-8 to allow easy representation
+ * of any language.
+ */
+
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Flac_Tag_Write_File (FILE *file_in, gchar *filename_in, vcedit_state *state);
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * Read tag data from a FLAC file.
+ * Note:
+ * - if field is found but contains no info (strlen(str)==0), we don't read it
+ */
+gboolean Flac_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
+{
+ FLAC__Metadata_SimpleIterator *iter;
+ FLAC__StreamMetadata *vc_block;
+ FLAC__StreamMetadata_VorbisComment *vc;
+ FLAC__StreamMetadata_VorbisComment_Entry *field;
+ gchar *field_value;
+ gchar *field_value_tmp;
+ gchar *string = NULL;
+ gint field_num;
+ gint field_len;
+ guint i;
+
+
+ if (!filename || !FileTag)
+ return FALSE;
+
+ flac_error_msg = NULL;
+
+ iter = FLAC__metadata_simple_iterator_new();
+ if ( iter == NULL || !FLAC__metadata_simple_iterator_init(iter, filename, true, false) )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ if ( iter == NULL )
+ {
+#ifdef WIN32
+ const char ** const iter = FLAC__Metadata_SimpleIteratorStatusString; /* this is for win32 auto-import of this external symbol works */
+ flac_error_msg = iter[FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR];
+#else
+ flac_error_msg = FLAC__Metadata_SimpleIteratorStatusString[FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR];
+#endif
+ }else
+ {
+ flac_error_msg = FLAC__Metadata_SimpleIteratorStatusString[FLAC__metadata_simple_iterator_status(iter)];
+ FLAC__metadata_simple_iterator_delete(iter);
+ }
+
+ Log_Print(_("ERROR while opening file: '%s' as FLAC (%s)."),filename_utf8,flac_error_msg);
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ /* libFLAC is able to detect (and skip) ID3v2 tags by itself */
+
+ /* Find the VORBIS_COMMENT block */
+ while ( FLAC__metadata_simple_iterator_get_block_type(iter) != FLAC__METADATA_TYPE_VORBIS_COMMENT )
+ {
+ if ( !FLAC__metadata_simple_iterator_next(iter) )
+ {
+ /* End of metadata: comment block not found, nothing to read */
+ FLAC__metadata_simple_iterator_delete(iter);
+ return TRUE;
+ }
+ }
+
+ /* Get comments from block */
+ vc_block = FLAC__metadata_simple_iterator_get_block(iter);
+ vc = &vc_block->data.vorbis_comment;
+
+ /* Get vendor string */
+ /*{
+ FLAC__StreamMetadata_VorbisComment_Entry vce;
+ vce = vc->vendor_string;
+ g_print("File %s : \n",filename);
+ g_print(" - FLAC File vendor string : '%s'\n",g_strndup(vce.entry,vce.length));
+ g_print(" - FLAC Lib vendor string : '%s'\n",FLAC__VENDOR_STRING);
+ }*/
+
+
+ /*********
+ * Title *
+ *********/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"TITLE")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->title==NULL)
+ FileTag->title = g_strdup(field_value);
+ else
+ FileTag->title = g_strconcat(FileTag->title,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /**********
+ * Artist *
+ **********/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"ARTIST")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->artist==NULL)
+ FileTag->artist = g_strdup(field_value);
+ else
+ FileTag->artist = g_strconcat(FileTag->artist,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /*********
+ * Album *
+ *********/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"ALBUM")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->album==NULL)
+ FileTag->album = g_strdup(field_value);
+ else
+ FileTag->album = g_strconcat(FileTag->album,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /***************
+ * Disc Number *
+ ***************/
+ if ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,0,"DISCNUMBER")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ FileTag->disc_number = field_value;
+ }
+ }
+ }
+
+ /********
+ * Year *
+ ********/
+ if ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,0,"DATE")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ FileTag->year = field_value;
+ }
+ }
+ }
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ if ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,0,"TRACKTOTAL")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (NUMBER_TRACK_FORMATED)
+ {
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(field_value));
+ }else
+ {
+ FileTag->track_total = g_strdup(field_value);
+ }
+ g_free(field_value);
+ }
+ }
+ // Below is also filled track_total if not done here
+ }
+
+ if ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,0,"TRACKNUMBER")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ string = g_utf8_strchr(field_value, -1, '/');
+ if (NUMBER_TRACK_FORMATED)
+ {
+ // If track_total not filled before, try now...
+ if (string && !FileTag->track_total)
+ {
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string+1));
+ *string = '\0';
+ }
+ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(field_value));
+ }else
+ {
+ if (string && !FileTag->track_total)
+ {
+ FileTag->track_total = g_strdup(string+1);
+ *string = '\0';
+ }
+ FileTag->track = g_strdup(field_value);
+ }
+ g_free(field_value);
+ }
+ }
+ }
+
+ /*********
+ * Genre *
+ *********/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"GENRE")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->genre==NULL)
+ FileTag->genre = g_strdup(field_value);
+ else
+ FileTag->genre = g_strconcat(FileTag->genre,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /***********
+ * Comment *
+ ***********/
+ field_num = 0;
+ while ( 1 )
+ {
+ gint field_num1, field_num2;
+
+ // The comment field can take two forms...
+ field_num1 = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"DESCRIPTION");
+ field_num2 = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"COMMENT");
+
+ if (field_num1 >= 0 && field_num2 >= 0)
+ // Note : We set field_num to the last "comment" field to avoid to concatenate
+ // the DESCRIPTION and COMMENT field if there are both present (EasyTAG writes the both...)
+ if (field_num1 < field_num2)
+ field_num = field_num2;
+ else
+ field_num = field_num1;
+ else if (field_num1 >= 0)
+ field_num = field_num1;
+ else if (field_num2 >= 0)
+ field_num = field_num2;
+ else
+ break;
+
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->comment==NULL)
+ FileTag->comment = g_strdup(field_value);
+ else
+ FileTag->comment = g_strconcat(FileTag->comment,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /************
+ * Composer *
+ ************/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"COMPOSER")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->composer==NULL)
+ FileTag->composer = g_strdup(field_value);
+ else
+ FileTag->composer = g_strconcat(FileTag->composer,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /*******************
+ * Original artist *
+ *******************/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"PERFORMER")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->orig_artist==NULL)
+ FileTag->orig_artist = g_strdup(field_value);
+ else
+ FileTag->orig_artist = g_strconcat(FileTag->orig_artist,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /*************
+ * Copyright *
+ *************/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"COPYRIGHT")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->copyright==NULL)
+ FileTag->copyright = g_strdup(field_value);
+ else
+ FileTag->copyright = g_strconcat(FileTag->copyright,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /*******
+ * URL *
+ *******/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"LICENSE")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->url==NULL)
+ FileTag->url = g_strdup(field_value);
+ else
+ FileTag->url = g_strconcat(FileTag->url,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+ /**************
+ * Encoded by *
+ **************/
+ field_num = 0;
+ while ( (field_num = FLAC__metadata_object_vorbiscomment_find_entry_from(vc_block,field_num,"ENCODED-BY")) >= 0 )
+ {
+ /* Extract field value */
+ field = &vc->comments[field_num++];
+ field_value = memchr(field->entry, '=', field->length);
+
+ if (field_value)
+ {
+ field_value++;
+ if ( field_value && g_utf8_strlen(field_value, -1) > 0 )
+ {
+ field_len = field->length - (field_value - (gchar*) field->entry);
+ field_value_tmp = g_strndup(field_value, field_len);
+ field_value = Try_To_Validate_Utf8_String(field_value_tmp);
+ g_free(field_value_tmp);
+ if (FileTag->encoded_by==NULL)
+ FileTag->encoded_by = g_strdup(field_value);
+ else
+ FileTag->encoded_by = g_strconcat(FileTag->encoded_by,MULTIFIELD_SEPARATOR,field_value,NULL);
+ g_free(field_value);
+ }
+ }
+ }
+
+
+ /***********
+ * Picture *
+ ***********/
+ // For FLAC > 1.1.3
+ #ifndef LEGACY_FLAC
+
+ #endif
+
+
+ /***************************
+ * Save unsupported fields *
+ ***************************/
+ for (i=0;i<(guint)vc->num_comments;i++)
+ {
+ field = &vc->comments[i];
+ if ( strncasecmp((gchar *)field->entry,"TITLE=", MIN(6, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"ARTIST=", MIN(7, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"ALBUM=", MIN(6, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"DISCNUMBER=", MIN(11, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"DATE=", MIN(5, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"TRACKNUMBER=", MIN(12, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"TRACKTOTAL=", MIN(11, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"GENRE=", MIN(6, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"DESCRIPTION=", MIN(12, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"COMMENT=", MIN(8, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"COMPOSER=", MIN(9, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"PERFORMER=", MIN(10, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"COPYRIGHT=", MIN(10, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"LICENSE=", MIN(8, field->length)) != 0
+ && strncasecmp((gchar *)field->entry,"ENCODED-BY=", MIN(11, field->length)) != 0 )
+ {
+ //g_print("custom %*s\n", field->length, field->entry);
+ FileTag->other = g_list_append(FileTag->other,g_strndup((const gchar *)field->entry, field->length));
+ }
+ }
+
+ FLAC__metadata_object_delete(vc_block);
+ FLAC__metadata_simple_iterator_delete(iter);
+
+#ifdef ENABLE_MP3
+ /* If no FLAC vorbis tag found : we try to get the ID3 tag if it exists
+ * (will be deleted when writing the tag */
+ if ( FileTag->title == NULL
+ && FileTag->artist == NULL
+ && FileTag->album == NULL
+ && FileTag->disc_number == NULL
+ && FileTag->year == NULL
+ && FileTag->track == NULL
+ && FileTag->track_total == NULL
+ && FileTag->genre == NULL
+ && FileTag->comment == NULL
+ && FileTag->composer == NULL
+ && FileTag->orig_artist == NULL
+ && FileTag->copyright == NULL
+ && FileTag->url == NULL
+ && FileTag->encoded_by == NULL)
+ {
+ gint rc = Id3tag_Read_File_Tag(filename,FileTag);
+
+ // If an ID3 tag has been found (and no FLAC tag), we mark the file as
+ // unsaved to rewrite a flac tag
+ if ( FileTag->title != NULL
+ || FileTag->artist != NULL
+ || FileTag->album != NULL
+ || FileTag->disc_number != NULL
+ || FileTag->year != NULL
+ || FileTag->track != NULL
+ || FileTag->track_total != NULL
+ || FileTag->genre != NULL
+ || FileTag->comment != NULL
+ || FileTag->composer != NULL
+ || FileTag->orig_artist != NULL
+ || FileTag->copyright != NULL
+ || FileTag->url != NULL
+ || FileTag->encoded_by != NULL)
+ {
+ FileTag->saved = FALSE;
+ }
+
+ return rc;
+ }
+
+ /* Part to get cover artist :
+ * If we have read the ID3 tag previously we don't arrive here (and we have
+ * the picture if it exists)
+ * Else the ID3 tag wasn't read (as there was data in FLAC tag) so we try
+ * to read it only to get the picture (not supported by the FLAC tag) */
+ if (WRITE_ID3_TAGS_IN_FLAC_FILE && FileTag->picture == NULL)
+ {
+ File_Tag *FileTag_tmp = ET_File_Tag_Item_New();
+ gint rc = Id3tag_Read_File_Tag(filename,FileTag_tmp);
+ if (rc && FileTag_tmp->picture)
+ {
+ // Copy picture to FileTag
+ FileTag->picture = Picture_Copy(FileTag_tmp->picture);
+ }
+
+ ET_Free_File_Tag_Item(FileTag_tmp);
+
+ return rc;
+ }
+#endif
+
+ return TRUE;
+}
+
+
+gboolean Flac_Tag_Write_File_Tag (ET_File *ETFile)
+{
+ File_Tag *FileTag;
+ gchar *filename_utf8, *filename;
+ gchar *basename_utf8;
+ FLAC__Metadata_SimpleIterator *iter;
+ FLAC__StreamMetadata *vc_block;
+ FLAC__StreamMetadata_VorbisComment_Entry field;
+ FLAC__bool write_ok;
+ gchar *string;
+ GList *list;
+ // To get original vendor string
+ FLAC__StreamMetadata *vc_block_svg = NULL;
+ FLAC__StreamMetadata_VorbisComment *vc_svg;
+ FLAC__StreamMetadata_VorbisComment_Entry field_svg;
+ gboolean vc_found_svg = TRUE;
+
+
+ if (!ETFile || !ETFile->FileTag)
+ return FALSE;
+
+ FileTag = (File_Tag *)ETFile->FileTag->data;
+ filename = ((File_Name *)ETFile->FileNameCur->data)->value;
+ filename_utf8 = ((File_Name *)ETFile->FileNameCur->data)->value_utf8;
+ flac_error_msg = NULL;
+
+ /* libFLAC is able to detect (and skip) ID3v2 tags by itself */
+
+ iter = FLAC__metadata_simple_iterator_new();
+ if ( iter == NULL || !FLAC__metadata_simple_iterator_init(iter,filename,false,false) )
+ {
+ if ( iter == NULL )
+ {
+#ifdef WIN32
+ const char **iter = FLAC__Metadata_SimpleIteratorStatusString; /* this is for win32 auto-import of this external symbol works */
+ flac_error_msg = iter[FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR];
+#else
+ flac_error_msg = FLAC__Metadata_SimpleIteratorStatusString[FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR];
+#endif
+ }else
+ {
+ flac_error_msg = FLAC__Metadata_SimpleIteratorStatusString[FLAC__metadata_simple_iterator_status(iter)];
+ FLAC__metadata_simple_iterator_delete(iter);
+ }
+
+ Log_Print(_("ERROR while opening file: '%s' as FLAC (%s)."),filename_utf8,flac_error_msg);
+ return FALSE;
+ }
+
+ /* Find the VORBIS_COMMENT block to get original vendor string */
+ while ( FLAC__metadata_simple_iterator_get_block_type(iter) != FLAC__METADATA_TYPE_VORBIS_COMMENT )
+ {
+ if ( !FLAC__metadata_simple_iterator_next(iter) )
+ {
+ /* End of metadata: comment block not found, nothing to read */
+ vc_found_svg = FALSE;
+ break;
+ }
+ }
+ if (vc_found_svg)
+ {
+ /* Get comments from block */
+ vc_block_svg = FLAC__metadata_simple_iterator_get_block(iter);
+ vc_svg = &vc_block_svg->data.vorbis_comment;
+ /* Get original vendor string */
+ field_svg = vc_svg->vendor_string;
+ }
+
+
+ vc_block = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT);
+
+ /* Set the original vendor string else it is version of library */
+ if (vc_found_svg)
+ FLAC__metadata_object_vorbiscomment_set_vendor_string(vc_block, field_svg, true);
+
+
+ /*********
+ * Title *
+ *********/
+ if ( FileTag->title )
+ {
+ string = g_strconcat("TITLE=",FileTag->title,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string); // Warning : g_utf8_strlen doesn't count the multibyte characters. Here we need the allocated size.
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /**********
+ * Artist *
+ **********/
+ if ( FileTag->artist )
+ {
+ string = g_strconcat("ARTIST=",FileTag->artist,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /*********
+ * Album *
+ *********/
+ if ( FileTag->album )
+ {
+ string = g_strconcat("ALBUM=",FileTag->album,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /***************
+ * Disc Number *
+ ***************/
+ if ( FileTag->disc_number )
+ {
+ string = g_strconcat("DISCNUMBER=",FileTag->disc_number,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /********
+ * Year *
+ ********/
+ if ( FileTag->year )
+ {
+ string = g_strconcat("DATE=",FileTag->year,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ if ( FileTag->track )
+ {
+ string = g_strconcat("TRACKNUMBER=",FileTag->track,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+ if ( FileTag->track_total /*&& strlen(FileTag->track_total)>0*/ )
+ {
+ string = g_strconcat("TRACKTOTAL=",FileTag->track_total,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /*********
+ * Genre *
+ *********/
+ if ( FileTag->genre )
+ {
+ string = g_strconcat("GENRE=",FileTag->genre,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /***********
+ * Comment *
+ ***********/
+ // We write the comment using the "both" format
+ if ( FileTag->comment )
+ {
+ string = g_strconcat("DESCRIPTION=",FileTag->comment,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+
+ string = g_strconcat("COMMENT=",FileTag->comment,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /************
+ * Composer *
+ ************/
+ if ( FileTag->composer )
+ {
+ string = g_strconcat("COMPOSER=",FileTag->composer,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /*******************
+ * Original artist *
+ *******************/
+ if ( FileTag->orig_artist )
+ {
+ string = g_strconcat("PERFORMER=",FileTag->orig_artist,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /*************
+ * Copyright *
+ *************/
+ if ( FileTag->copyright )
+ {
+ string = g_strconcat("COPYRIGHT=",FileTag->copyright,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /*******
+ * URL *
+ *******/
+ if ( FileTag->url )
+ {
+ string = g_strconcat("LICENSE=",FileTag->url,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+ /**************
+ * Encoded by *
+ **************/
+ if ( FileTag->encoded_by )
+ {
+ string = g_strconcat("ENCODED-BY=",FileTag->encoded_by,NULL);
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ g_free(string);
+ }
+
+
+ /**************************
+ * Set unsupported fields *
+ **************************/
+ list = FileTag->other;
+ while (list)
+ {
+ if (list->data)
+ {
+ string = (gchar*)list->data;
+ field.entry = (FLAC__byte *)string;
+ field.length = strlen(string);
+ FLAC__metadata_object_vorbiscomment_insert_comment(vc_block,vc_block->data.vorbis_comment.num_comments,field,true);
+ }
+ list = list->next;
+ }
+
+ /* Find the VORBIS_COMMENT block */
+ while ( FLAC__metadata_simple_iterator_get_block_type(iter) != FLAC__METADATA_TYPE_VORBIS_COMMENT )
+ {
+ if ( !FLAC__metadata_simple_iterator_next(iter) )
+ break;
+ }
+
+
+ /*
+ * Write FLAC tag (as Vorbis comment)
+ */
+ if ( FLAC__metadata_simple_iterator_get_block_type(iter) != FLAC__METADATA_TYPE_VORBIS_COMMENT )
+ {
+ /* End of metadata: no comment block, so insert one */
+ write_ok = FLAC__metadata_simple_iterator_insert_block_after(iter,vc_block,true);
+ }else
+ {
+ write_ok = FLAC__metadata_simple_iterator_set_block(iter,vc_block,true);
+ }
+
+ if ( !write_ok )
+ {
+ flac_error_msg = FLAC__Metadata_SimpleIteratorStatusString[FLAC__metadata_simple_iterator_status(iter)];
+ Log_Print(_("ERROR: Failed to write comments to file '%s' (%s)."),filename_utf8,flac_error_msg);
+ FLAC__metadata_simple_iterator_delete(iter);
+ FLAC__metadata_object_delete(vc_block);
+ return FALSE;
+ }else
+ {
+ basename_utf8 = g_path_get_basename(filename_utf8);
+ Log_Print(_("Written tag of '%s'"),basename_utf8);
+ g_free(basename_utf8);
+ }
+
+ FLAC__metadata_simple_iterator_delete(iter);
+ FLAC__metadata_object_delete(vc_block);
+ if (vc_found_svg)
+ FLAC__metadata_object_delete(vc_block_svg);
+
+#ifdef ENABLE_MP3
+ /*
+ * Write also the ID3 tags (ID3v1 and/or ID3v2) if wanted (as needed by some players)
+ */
+ if (WRITE_ID3_TAGS_IN_FLAC_FILE)
+ {
+ Id3tag_Write_File_Tag(ETFile);
+ }else
+ {
+ // Delete the ID3 tags (create a dummy ETFile for the Id3tag_... function)
+ ET_File *ETFile_tmp = ET_File_Item_New();
+ File_Name *FileName_tmp = ET_File_Name_Item_New();
+ File_Tag *FileTag_tmp = ET_File_Tag_Item_New();
+ // Same file...
+ FileName_tmp->value = g_strdup(filename);
+ FileName_tmp->value_utf8 = g_strdup(filename_utf8); // Not necessary to fill 'value_ck'
+ ETFile_tmp->FileNameList = g_list_append(NULL,FileName_tmp);
+ ETFile_tmp->FileNameCur = ETFile_tmp->FileNameList;
+ // With empty tag...
+ ETFile_tmp->FileTagList = g_list_append(NULL,FileTag_tmp);
+ ETFile_tmp->FileTag = ETFile_tmp->FileTagList;
+ Id3tag_Write_File_Tag(ETFile_tmp);
+ ET_Free_File_List_Item(ETFile_tmp);
+ }
+#endif
+
+ return TRUE;
+}
+
+
+#endif /* ENABLE_FLAC */
diff --git a/src/flac_tag.h b/src/flac_tag.h
new file mode 100755
index 0000000..99ad489
--- /dev/null
+++ b/src/flac_tag.h
@@ -0,0 +1,43 @@
+/* flac_tag.h - 2003/12/27 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2003 Pavel Minayev <thalion@front.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __FLAC_TAG_H__
+#define __FLAC_TAG_H__
+
+
+#include <glib.h>
+#include "et_core.h"
+
+/***************
+ * Declaration *
+ ***************/
+const gchar *flac_error_msg;
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Flac_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag);
+gboolean Flac_Tag_Write_File_Tag (ET_File *ETFile);
+
+
+#endif /* __FLAC_TAG_H__ */
diff --git a/src/genres.h b/src/genres.h
new file mode 100755
index 0000000..24f297b
--- /dev/null
+++ b/src/genres.h
@@ -0,0 +1,195 @@
+/* genres.h - EasyTAG - Jerome Couderc 2000/05/29 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __GENRES_H__
+#define __GENRES_H__
+
+
+/* GENRE_MAX is the last genre number that can be used */
+#define GENRE_MAX ( sizeof(id3_genres)/sizeof(id3_genres[0]) - 1 )
+#define ID3_INVALID_GENRE 255
+
+/**
+ \def genre_no(IndeX)
+ \param IndeX number of genre using in id3v1
+ \return pointer to genre as string
+*/
+#define genre_no(IndeX) ( IndeX < (sizeof(id3_genres)/sizeof(*id3_genres) ) ? id3_genres[IndeX] : "Unknown" )
+
+
+/*
+ * Do not sort genres!!
+ * Last Update: 2000/04/30
+ */
+static char *id3_genres[] =
+{
+ "Blues", /* 0 */
+ "Classic Rock",
+ "Country",
+ "Dance",
+ "Disco",
+ "Funk", /* 5 */
+ "Grunge",
+ "Hip-Hop",
+ "Jazz",
+ "Metal",
+ "New Age", /* 10 */
+ "Oldies",
+ "Other",
+ "Pop",
+ "R&B",
+ "Rap", /* 15 */
+ "Reggae",
+ "Rock",
+ "Techno",
+ "Industrial",
+ "Alternative", /* 20 */
+ "Ska",
+ "Death Metal",
+ "Pranks",
+ "Soundtrack",
+ "Euro-Techno", /* 25 */
+ "Ambient",
+ "Trip-Hop",
+ "Vocal",
+ "Jazz+Funk",
+ "Fusion", /* 30 */
+ "Trance",
+ "Classical",
+ "Instrumental",
+ "Acid",
+ "House", /* 35 */
+ "Game",
+ "Sound Clip",
+ "Gospel",
+ "Noise",
+ "Altern Rock", /* 40 */
+ "Bass",
+ "Soul",
+ "Punk",
+ "Space",
+ "Meditative", /* 45 */
+ "Instrumental Pop",
+ "Instrumental Rock",
+ "Ethnic",
+ "Gothic",
+ "Darkwave", /* 50 */
+ "Techno-Industrial",
+ "Electronic",
+ "Pop-Folk",
+ "Eurodance",
+ "Dream", /* 55 */
+ "Southern Rock",
+ "Comedy",
+ "Cult",
+ "Gangsta",
+ "Top 40", /* 60 */
+ "Christian Rap",
+ "Pop/Funk",
+ "Jungle",
+ "Native American",
+ "Cabaret", /* 65 */
+ "New Wave",
+ "Psychadelic",
+ "Rave",
+ "Showtunes",
+ "Trailer", /* 70 */
+ "Lo-Fi",
+ "Tribal",
+ "Acid Punk",
+ "Acid Jazz",
+ "Polka", /* 75 */
+ "Retro",
+ "Musical",
+ "Rock & Roll",
+ "Hard Rock",
+ "Folk", /* 80 */
+ "Folk/Rock",
+ "National Folk",
+ "Swing",
+ "Fast Fusion",
+ "Bebob", /* 85 */
+ "Latin",
+ "Revival",
+ "Celtic",
+ "Bluegrass",
+ "Avantgarde", /* 90 */
+ "Gothic Rock",
+ "Progressive Rock",
+ "Psychedelic Rock",
+ "Symphonic Rock",
+ "Slow Rock", /* 95 */
+ "Big Band",
+ "Chorus",
+ "Easy Listening",
+ "Acoustic",
+ "Humour", /* 100 */
+ "Speech",
+ "Chanson",
+ "Opera",
+ "Chamber Music",
+ "Sonata", /* 105 */
+ "Symphony",
+ "Booty Bass",
+ "Primus",
+ "Porn Groove",
+ "Satire", /* 110 */
+ "Slow Jam",
+ "Club",
+ "Tango",
+ "Samba",
+ "Folklore", /* 115 */
+ "Ballad",
+ "Power Ballad",
+ "Rhythmic Soul",
+ "Freestyle",
+ "Duet", /* 120 */
+ "Punk Rock",
+ "Drum Solo",
+ "A Capella",
+ "Euro-House",
+ "Dance Hall", /* 125 */
+ "Goa",
+ "Drum & Bass",
+ "Club-House",
+ "Hardcore",
+ "Terror", /* 130 */
+ "Indie",
+ "BritPop",
+ "Negerpunk",
+ "Polsk Punk",
+ "Beat", /* 135 */
+ "Christian Gangsta Rap",
+ "Heavy Metal",
+ "Black Metal",
+ "Crossover",
+ "Contemporary Christian",/* 140 */
+ "Christian Rock",
+ "Merengue",
+ "Salsa",
+ "Thrash Metal",
+ "Anime", /* 145 */
+ "JPop",
+ "Synthpop"
+};
+
+
+#endif /* __GENRES_H__ */
diff --git a/src/id3_tag.c b/src/id3_tag.c
new file mode 100755
index 0000000..9092fee
--- /dev/null
+++ b/src/id3_tag.c
@@ -0,0 +1,1362 @@
+/* id3tag.c - 2001/02/16 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+
+#include "id3_tag.h"
+#include "ape_tag.h"
+#include "picture.h"
+#include "easytag.h"
+#include "browser.h"
+#include "genres.h"
+#include "setting.h"
+#include "log.h"
+#include "misc.h"
+#include "et_core.h"
+#include "msgbox.h"
+#include "charset.h"
+
+#ifdef ENABLE_MP3
+
+#ifdef ENABLE_ID3LIB
+#include <id3.h>
+#include "id3lib/id3_bugfix.h"
+#endif
+
+/****************
+ * Declarations *
+ ****************/
+#define ID3V2_MAX_STRING_LEN 4096
+#define MULTIFIELD_SEPARATOR " - "
+
+
+#ifdef ENABLE_ID3LIB
+
+/**************
+ * Prototypes *
+ **************/
+gchar *Id3tag_Get_Error_Message (ID3_Err error);
+void Id3tag_Prepare_ID3v1 (ID3Tag *id3_tag);
+gchar *Id3tag_Rules_For_ISO_Fields (const gchar *string, const gchar *from_codeset, const gchar *to_codeset);
+gchar *Id3tag_Get_Field (const ID3Frame *id3_frame, ID3_FieldID id3_fieldid);
+ID3_TextEnc Id3tag_Set_Field (const ID3Frame *id3_frame, ID3_FieldID id3_fieldid, gchar *string);
+
+ID3_C_EXPORT size_t ID3Tag_Link_1 (ID3Tag *id3tag, const char *filename);
+ID3_C_EXPORT size_t ID3Field_GetASCII_1 (const ID3Field *field, char *buffer, size_t maxChars, size_t itemNum);
+ID3_C_EXPORT size_t ID3Field_GetUNICODE_1 (const ID3Field *field, unicode_t *buffer, size_t maxChars, size_t itemNum);
+
+gboolean Id3tag_Check_If_File_Is_Corrupted (gchar *filename);
+
+gboolean Id3tag_Check_If_Id3lib_Is_Bugged (void);
+
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * Write the ID3 tags to the file. Returns TRUE on success, else 0.
+ */
+gboolean Id3tag_Write_File_v23Tag (ET_File *ETFile)
+{
+ File_Tag *FileTag;
+ gchar *filename;
+ gchar *filename_utf8;
+ gchar *basename_utf8;
+ //gchar *temp;
+ FILE *file;
+ ID3Tag *id3_tag = NULL;
+ ID3_Err error_strip_id3v1 = ID3E_NoError;
+ ID3_Err error_strip_id3v2 = ID3E_NoError;
+ ID3_Err error_update_id3v1 = ID3E_NoError;
+ ID3_Err error_update_id3v2 = ID3E_NoError;
+ gint error = 0;
+ gint number_of_frames;
+ gboolean has_title = FALSE;
+ gboolean has_artist = FALSE;
+ gboolean has_album = FALSE;
+ gboolean has_disc_number = FALSE;
+ gboolean has_year = FALSE;
+ gboolean has_track = FALSE;
+ gboolean has_genre = FALSE;
+ gboolean has_comment = FALSE;
+ gboolean has_composer = FALSE;
+ gboolean has_orig_artist = FALSE;
+ gboolean has_copyright = FALSE;
+ gboolean has_url = FALSE;
+ gboolean has_encoded_by = FALSE;
+ gboolean has_picture = FALSE;
+ //gboolean has_song_len = FALSE;
+ static gboolean flag_first_check = TRUE;
+ static gboolean flag_id3lib_bugged = TRUE;
+
+ ID3Frame *id3_frame;
+ ID3Field *id3_field;
+ //gchar *string;
+ gchar *string1;
+ Picture *pic;
+
+
+ // When writing the first MP3 file, we check if the version of id3lib of the
+ // system doesn't contain a bug when writting Unicode tags
+ if (flag_first_check
+ && (FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET) )
+ {
+ flag_first_check = FALSE;
+ flag_id3lib_bugged = Id3tag_Check_If_Id3lib_Is_Bugged();
+ }
+
+ if (!ETFile || !ETFile->FileTag)
+ return FALSE;
+
+ FileTag = (File_Tag *)ETFile->FileTag->data;
+ filename = ((File_Name *)ETFile->FileNameCur->data)->value;
+ filename_utf8 = ((File_Name *)ETFile->FileNameCur->data)->value_utf8;
+
+ /* Test to know if we can write into the file */
+ if ( (file=fopen(filename,"r+"))==NULL )
+ {
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ return FALSE;
+ }
+ fclose(file);
+
+ /* This is a protection against a bug in id3lib that generate an infinite
+ * loop with corrupted MP3 files (files containing only zeroes) */
+ if (Id3tag_Check_If_File_Is_Corrupted(filename))
+ return FALSE;
+
+ /* We get again the tag from the file to keep also unused data (by EasyTAG), then
+ * we replace the changed data */
+ if ( (id3_tag = ID3Tag_New()) == NULL )
+ return FALSE;
+
+ basename_utf8 = g_path_get_basename(filename_utf8);
+
+ ID3Tag_Link(id3_tag,filename);
+
+ /* Set padding when tag was changed, for faster writing */
+ ID3Tag_SetPadding(id3_tag,TRUE);
+
+
+ /*********
+ * Title *
+ *********/
+ // To avoid problem with a corrupted field, we remove it before to create a new one.
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_TITLE)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+
+ if (FileTag->title && g_utf8_strlen(FileTag->title, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_TITLE);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->title);
+ has_title = TRUE;
+ }
+
+
+ /**********
+ * Artist *
+ **********/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_LEADARTIST)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_LEADARTIST);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->artist);
+ has_artist = TRUE;
+ }
+
+
+ /*********
+ * Album *
+ *********/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_ALBUM)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->album && g_utf8_strlen(FileTag->album, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_ALBUM);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->album);
+ has_album = TRUE;
+ }
+
+
+ /***************
+ * Part of set *
+ ***************/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_PARTINSET)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->disc_number && g_utf8_strlen(FileTag->disc_number, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_PARTINSET);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->disc_number);
+ has_disc_number = TRUE;
+ }
+
+
+ /********
+ * Year *
+ ********/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_YEAR)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->year && g_utf8_strlen(FileTag->year, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_YEAR);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->year);
+ has_year = TRUE;
+ }
+
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_TRACKNUM)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->track && g_utf8_strlen(FileTag->track, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_TRACKNUM);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+
+ if ( FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0)
+ string1 = g_strconcat(FileTag->track,"/",FileTag->track_total,NULL);
+ else
+ string1 = g_strdup(FileTag->track);
+
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, string1);
+ g_free(string1);
+ has_track = TRUE;
+ }
+
+
+ /*********
+ * Genre *
+ *********
+ * Genre is written like this :
+ * - "(<genre_id>)" -> "(3)"
+ * - "(<genre_id>)<refinement>" -> "(3)EuroDance"
+ */
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_CONTENTTYPE)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->genre && strlen(FileTag->genre)>0 )
+ {
+ gchar *genre_string_tmp;
+ guchar genre_value;
+
+ id3_frame = ID3Frame_NewID(ID3FID_CONTENTTYPE);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+
+ genre_value = Id3tag_String_To_Genre(FileTag->genre);
+ // If genre not defined don't write genre value between brackets! (priority problem noted with some tools)
+ if (genre_value == ID3_INVALID_GENRE)
+ genre_string_tmp = g_strdup_printf("%s",FileTag->genre);
+ else
+ genre_string_tmp = g_strdup_printf("(%d)",genre_value);
+
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, genre_string_tmp);
+ g_free(genre_string_tmp);
+ has_genre = TRUE;
+ }
+
+
+ /***********
+ * Comment *
+ ***********/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_COMMENT)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->comment && g_utf8_strlen(FileTag->comment, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_COMMENT);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->comment);
+ // These 2 following fields allow synchronisation between id3v2 and id3v1 tags with id3lib
+ // Disabled as when using unicode, the comment field stay in ISO.
+ //Id3tag_Set_Field(id3_frame, ID3FN_DESCRIPTION, "ID3v1 Comment");
+ //Id3tag_Set_Field(id3_frame, ID3FN_LANGUAGE, "XXX");
+ has_comment = TRUE;
+ }
+
+
+ /************
+ * Composer *
+ ************/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_COMPOSER)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->composer && g_utf8_strlen(FileTag->composer, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_COMPOSER);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->composer);
+ has_composer = TRUE;
+ }
+
+
+ /*******************
+ * Original artist *
+ *******************/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_ORIGARTIST)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->orig_artist && g_utf8_strlen(FileTag->orig_artist, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_ORIGARTIST);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->orig_artist);
+ has_orig_artist = TRUE;
+ }
+
+
+ /*************
+ * Copyright *
+ *************/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_COPYRIGHT)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->copyright && g_utf8_strlen(FileTag->copyright, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_COPYRIGHT);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->copyright);
+ has_copyright = TRUE;
+ }
+
+
+ /*******
+ * URL *
+ *******/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_WWWUSER)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->url && g_utf8_strlen(FileTag->url, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_WWWUSER);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_URL, FileTag->url);
+ has_composer = TRUE;
+ }
+
+
+ /**************
+ * Encoded by *
+ **************/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_ENCODEDBY)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (FileTag->encoded_by && g_utf8_strlen(FileTag->encoded_by, -1) > 0)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_ENCODEDBY);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, FileTag->encoded_by);
+ has_encoded_by = TRUE;
+ }
+
+
+ /***********
+ * Picture *
+ ***********/
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_PICTURE)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ pic = FileTag->picture;
+ if (!pic)
+ has_picture = 0;
+ while (pic)
+ {
+ id3_frame = ID3Frame_NewID(ID3FID_PICTURE);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+
+ switch (Picture_Format(pic))
+ {
+ case PICTURE_FORMAT_JPEG:
+ if ((id3_field = ID3Frame_GetField(id3_frame,ID3FN_MIMETYPE)))
+ ID3Field_SetASCII(id3_field, "image/jpeg");
+ if ((id3_field = ID3Frame_GetField(id3_frame,ID3FN_IMAGEFORMAT)))
+ ID3Field_SetASCII(id3_field, "JPG");
+ break;
+
+ case PICTURE_FORMAT_PNG:
+ if ((id3_field = ID3Frame_GetField(id3_frame,ID3FN_MIMETYPE)))
+ ID3Field_SetASCII(id3_field, "image/png");
+ if ((id3_field = ID3Frame_GetField(id3_frame,ID3FN_IMAGEFORMAT)))
+ ID3Field_SetASCII(id3_field, "PNG");
+ break;
+ }
+
+ if ((id3_field = ID3Frame_GetField(id3_frame, ID3FN_PICTURETYPE)))
+ ID3Field_SetINT(id3_field, pic->type);
+
+ if (pic->description)
+ Id3tag_Set_Field(id3_frame, ID3FN_DESCRIPTION, pic->description);
+
+ if ((id3_field = ID3Frame_GetField(id3_frame,ID3FN_DATA)))
+ ID3Field_SetBINARY(id3_field, pic->data, pic->size);
+
+ pic = pic->next;
+ has_picture = TRUE;
+ }
+
+
+ /*********************************
+ * File length (in milliseconds) *
+ *********************************/
+ /* Don't write this field, not useful? *
+ while ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_SONGLEN)) )
+ ID3Tag_RemoveFrame(id3_tag,id3_frame);
+ if (ETFile->ETFileInfo && ((ET_File_Info *)ETFile->ETFileInfo)->duration > 0 )
+ {
+ gchar *string;
+
+ id3_frame = ID3Frame_NewID(ID3FID_SONGLEN);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+
+ string = g_strdup_printf("%d",((ET_File_Info *)ETFile->ETFileInfo)->duration * 1000);
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, string);
+ g_free(string);
+ has_song_len = TRUE;
+ }*/
+
+
+ /******************************
+ * Delete an APE tag if found *
+ ******************************/
+ {
+ // Delete the APE tag (create a dummy ETFile for the Ape_Tag_... function)
+ ET_File *ETFile_tmp = ET_File_Item_New();
+ File_Name *FileName_tmp = ET_File_Name_Item_New();
+ File_Tag *FileTag_tmp = ET_File_Tag_Item_New();
+ // Same file...
+ FileName_tmp->value = g_strdup(filename);
+ FileName_tmp->value_utf8 = g_strdup(filename_utf8); // Not necessary to fill 'value_ck'
+ ETFile_tmp->FileNameList = g_list_append(NULL,FileName_tmp);
+ ETFile_tmp->FileNameCur = ETFile_tmp->FileNameList;
+ // With empty tag...
+ ETFile_tmp->FileTagList = g_list_append(NULL,FileTag_tmp);
+ ETFile_tmp->FileTag = ETFile_tmp->FileTagList;
+ Ape_Tag_Write_File_Tag(ETFile_tmp);
+ ET_Free_File_List_Item(ETFile_tmp);
+ }
+
+
+ /*********************************
+ * Update id3v1.x and id3v2 tags *
+ *********************************/
+ /* Get the number of frames into the tag, cause if it is
+ * equal to 0, id3lib-3.7.12 doesn't update the tag */
+ number_of_frames = ID3Tag_NumFrames(id3_tag);
+
+ /* If all fields (managed in the UI) are empty and option STRIP_TAG_WHEN_EMPTY_FIELDS
+ * is set to 1, we strip the ID3v1.x and ID3v2 tags. Else, write ID3v2 and/or ID3v1
+ */
+ if ( STRIP_TAG_WHEN_EMPTY_FIELDS
+ && !has_title && !has_artist && !has_album && !has_year && !has_track
+ && !has_genre && !has_composer && !has_orig_artist && !has_copyright && !has_url
+ && !has_encoded_by && !has_picture && !has_comment && !has_disc_number)//&& !has_song_len )
+ {
+ error_strip_id3v1 = ID3Tag_Strip(id3_tag,ID3TT_ID3V1);
+ error_strip_id3v2 = ID3Tag_Strip(id3_tag,ID3TT_ID3V2);
+ /* Check error messages */
+ if (error_strip_id3v1 == ID3E_NoError && error_strip_id3v2 == ID3E_NoError)
+ {
+ Log_Print(_("Removed tag of '%s'"),basename_utf8);
+ }else
+ {
+ if (error_strip_id3v1 != ID3E_NoError)
+ Log_Print(_("Error while removing ID3v1 tag of '%s' (%s)"),basename_utf8,Id3tag_Get_Error_Message(error_strip_id3v1));
+ if (error_strip_id3v2 != ID3E_NoError)
+ Log_Print(_("Error while removing ID3v2 tag of '%s' (%s)"),basename_utf8,Id3tag_Get_Error_Message(error_strip_id3v2));
+ error++;
+ }
+
+ }else
+ {
+ /* It's better to remove the id3v1 tag before, to synchronize it with the
+ * id3v2 tag (else id3lib doesn't do it correctly)
+ */
+ error_strip_id3v1 = ID3Tag_Strip(id3_tag,ID3TT_ID3V1);
+
+ /*
+ * ID3v2 tag
+ */
+ if (FILE_WRITING_ID3V2_WRITE_TAG && number_of_frames!=0)
+ {
+ error_update_id3v2 = ID3Tag_UpdateByTagType(id3_tag,ID3TT_ID3V2);
+ if (error_update_id3v2 != ID3E_NoError)
+ {
+ Log_Print(_("Error while updating ID3v2 tag of '%s' (%s)"),basename_utf8,Id3tag_Get_Error_Message(error_update_id3v2));
+ error++;
+ }else
+ {
+ /* See known problem on the top : [ 1016290 ] Unicode16 writing bug.
+ * When we write the tag in Unicode, we try to check if it was correctly
+ * written. So to test it : we read again the tag, and then compare
+ * with the previous one. We check up to find an error (as only some
+ * characters are affected).
+ * If the patch to id3lib was applied to fix the problem (tested
+ * by Id3tag_Check_If_Id3lib_Is_Bugged) we didn't make the following
+ * test => OK */
+ if (flag_id3lib_bugged
+ && ( FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET ))
+ {
+ File_Tag *FileTag_tmp = ET_File_Tag_Item_New();
+ if (Id3tag_Read_File_Tag(filename,FileTag_tmp) == TRUE
+ && ET_Detect_Changes_Of_File_Tag(FileTag,FileTag_tmp) == TRUE)
+ {
+ GtkWidget *msgbox = NULL;
+ gchar *msg;
+
+ msg = g_strdup_printf(_("You have tried to save this tag to Unicode "
+ "but it was detected that your version of id3lib is bugged.\n"
+ "If you reload this file, some characters in the tag may be not "
+ "displayed correctly...\nPlease, apply to id3lib the patch "
+ "src/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff\n"
+ "available in EasyTAG package sources.\n"
+ "Note that this message will appear only one time.\n\n"
+ "File : %s"),filename_utf8);
+ //Log_Print(msg);
+
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ flag_id3lib_bugged = FALSE; // To display the message only one time
+ }
+ ET_Free_File_Tag_Item(FileTag_tmp);
+ }
+
+ }
+ }else
+ {
+ error_strip_id3v2 = ID3Tag_Strip(id3_tag,ID3TT_ID3V2);
+ if (error_strip_id3v2 != ID3E_NoError)
+ {
+ Log_Print(_("Error while removing ID3v2 tag of '%s' (%s)"),basename_utf8,Id3tag_Get_Error_Message(error_strip_id3v2));
+ error++;
+ }
+ }
+
+ /*
+ * ID3v1 tag
+ * Must be set after ID3v2 or ID3Tag_UpdateByTagType cause damage to unicode strings
+ */
+ // id3lib writes incorrectly the ID3v2 tag if unicode used when writing ID3v1 tag
+ if (FILE_WRITING_ID3V1_WRITE_TAG && number_of_frames!=0)
+ {
+ // By default id3lib converts id3tag to ISO-8859-1 (single byte character set)
+ // Note : converting UTF-16 string (two bytes character set) to ISO-8859-1
+ // remove only the second byte => a strange string appears...
+ Id3tag_Prepare_ID3v1(id3_tag);
+
+ error_update_id3v1 = ID3Tag_UpdateByTagType(id3_tag,ID3TT_ID3V1);
+ if (error_update_id3v1 != ID3E_NoError)
+ {
+ Log_Print(_("Error while updating ID3v1 tag of '%s' (%s)"),basename_utf8,Id3tag_Get_Error_Message(error_update_id3v1));
+ error++;
+ }
+ }else
+ {
+ error_strip_id3v1 = ID3Tag_Strip(id3_tag,ID3TT_ID3V1);
+ if (error_strip_id3v1 != ID3E_NoError)
+ {
+ Log_Print(_("Error while removing ID3v1 tag of '%s' (%s)"),basename_utf8,Id3tag_Get_Error_Message(error_strip_id3v1));
+ error++;
+ }
+ }
+
+ if (error == 0)
+ Log_Print(_("Updated tag of '%s'"),basename_utf8);
+
+ }
+
+ /* Free allocated data */
+ ID3Tag_Delete(id3_tag);
+ g_free(basename_utf8);
+
+ if (error) return FALSE;
+ else return TRUE;
+
+}
+
+
+gchar *Id3tag_Get_Error_Message(ID3_Err error)
+{
+ switch (error)
+ {
+ case ID3E_NoError:
+ return _("No error reported");
+ case ID3E_NoMemory:
+ return _("No available memory");
+ case ID3E_NoData:
+ return _("No data to parse");
+ case ID3E_BadData:
+ return _("Improperly formatted data");
+ case ID3E_NoBuffer:
+ return _("No buffer to write to");
+ case ID3E_SmallBuffer:
+ return _("Buffer is too small");
+ case ID3E_InvalidFrameID:
+ return _("Invalid frame ID");
+ case ID3E_FieldNotFound:
+ return _("Requested field not found");
+ case ID3E_UnknownFieldType:
+ return _("Unknown field type");
+ case ID3E_TagAlreadyAttached:
+ return _("Tag is already attached to a file");
+ case ID3E_InvalidTagVersion:
+ return _("Invalid tag version");
+ case ID3E_NoFile:
+ return _("No file to parse");
+ case ID3E_ReadOnly:
+ return _("Attempting to write to a read-only file");
+ case ID3E_zlibError:
+ return _("Error in compression/uncompression");
+ default:
+ return _("Unknown error message!");
+ }
+
+}
+
+
+
+/*
+ * As the ID3Tag_Link function of id3lib-3.8.0pre2 returns the ID3v1 tags
+ * when a file has both ID3v1 and ID3v2 tags, we first try to explicitely
+ * get the ID3v2 tags with ID3Tag_LinkWithFlags and, if we cannot get them,
+ * fall back to the ID3v1 tags.
+ * (Written by Holger Schemel).
+ */
+ID3_C_EXPORT size_t ID3Tag_Link_1 (ID3Tag *id3tag, const char *filename)
+{
+ size_t offset;
+
+# if (0) // Link the file with the both tags may cause damage to unicode strings
+//# if ( (ID3LIB_MAJOR >= 3) && (ID3LIB_MINOR >= 8) && (ID3LIB_PATCH >= 1) ) // Same test used in Id3tag_Read_File_Tag to use ID3Tag_HasTagType
+ /* No problem of priority, so we link the file with the both tags
+ * to manage => ID3Tag_HasTagType works correctly */
+ offset = ID3Tag_LinkWithFlags(id3tag,filename,ID3TT_ID3V1 | ID3TT_ID3V2);
+# elif ( (ID3LIB_MAJOR >= 3) && (ID3LIB_MINOR >= 8) )
+ /* Version 3.8.0pre2 gives priority to tag id3v1 instead of id3v2, so we
+ * try to fix it by linking the file with the id3v2 tag first. This bug
+ * was fixed in the final version of 3.8.0 but we can't know it... */
+ /* First, try to get the ID3v2 tags */
+ offset = ID3Tag_LinkWithFlags(id3tag,filename,ID3TT_ID3V2);
+ if (offset == 0)
+ {
+ /* No ID3v2 tags available => try to get the ID3v1 tags */
+ offset = ID3Tag_LinkWithFlags(id3tag,filename,ID3TT_ID3V1);
+ }
+# else
+ /* Function 'ID3Tag_LinkWithFlags' is not defined up to id3lib-.3.7.13 */
+ offset = ID3Tag_Link(id3tag,filename);
+# endif
+ //g_print("ID3 TAG SIZE: %d\t%s\n",offset,g_path_get_basename(filename));
+ return offset;
+}
+
+
+/*
+ * As the ID3Field_GetASCII function differs with the version of id3lib, we must redefine it.
+ */
+ID3_C_EXPORT size_t ID3Field_GetASCII_1(const ID3Field *field, char *buffer, size_t maxChars, size_t itemNum)
+{
+
+ /* Defined by id3lib: ID3LIB_MAJOR_VERSION, ID3LIB_MINOR_VERSION, ID3LIB_PATCH_VERSION
+ * Defined by autoconf: ID3LIB_MAJOR, ID3LIB_MINOR, ID3LIB_PATCH
+ *
+ * <= 3.7.12 : first item num is 1 for ID3Field_GetASCII
+ * = 3.7.13 : first item num is 0 for ID3Field_GetASCII
+ * >= 3.8.0 : doesn't need item num for ID3Field_GetASCII
+ */
+ //g_print("id3lib version: %d.%d.%d\n",ID3LIB_MAJOR,ID3LIB_MINOR,ID3LIB_PATCH);
+# if (ID3LIB_MAJOR >= 3)
+ // (>= 3.x.x)
+# if (ID3LIB_MINOR <= 7)
+ // (3.0.0 to 3.7.x)
+# if (ID3LIB_PATCH >= 13)
+ // (>= 3.7.13)
+ return ID3Field_GetASCII(field,buffer,maxChars,itemNum);
+# else
+ return ID3Field_GetASCII(field,buffer,maxChars,itemNum+1);
+# endif
+# else
+ // (>= to 3.8.0)
+ //return ID3Field_GetASCII(field,buffer,maxChars);
+ return ID3Field_GetASCIIItem(field,buffer,maxChars,itemNum);
+# endif
+# else
+ // Not tested (< 3.x.x)
+ return ID3Field_GetASCII(field,buffer,maxChars,itemNum+1);
+# endif
+}
+
+
+
+/*
+ * As the ID3Field_GetUNICODE function differs with the version of id3lib, we must redefine it.
+ */
+ID3_C_EXPORT size_t ID3Field_GetUNICODE_1 (const ID3Field *field, unicode_t *buffer, size_t maxChars, size_t itemNum)
+{
+
+ /* Defined by id3lib: ID3LIB_MAJOR_VERSION, ID3LIB_MINOR_VERSION, ID3LIB_PATCH_VERSION
+ * Defined by autoconf: ID3LIB_MAJOR, ID3LIB_MINOR, ID3LIB_PATCH
+ *
+ * <= 3.7.12 : first item num is 1 for ID3Field_GetUNICODE
+ * = 3.7.13 : first item num is 0 for ID3Field_GetUNICODE
+ * >= 3.8.0 : doesn't need item num for ID3Field_GetUNICODE
+ */
+ //g_print("id3lib version: %d.%d.%d\n",ID3LIB_MAJOR,ID3LIB_MINOR,ID3LIB_PATCH);
+# if (ID3LIB_MAJOR >= 3)
+ // (>= 3.x.x)
+# if (ID3LIB_MINOR <= 7)
+ // (3.0.0 to 3.7.x)
+# if (ID3LIB_PATCH >= 13)
+ // (>= 3.7.13)
+ return ID3Field_GetUNICODE(field,buffer,maxChars,itemNum);
+# else
+ return ID3Field_GetUNICODE(field,buffer,maxChars,itemNum+1);
+# endif
+# else
+ // (>= to 3.8.0)
+ return ID3Field_GetUNICODE(field,buffer,maxChars);
+ // ID3Field_GetUNICODEItem always return 0 with id3lib3.8.3, it is bug in size_t D3_FieldImpl::Get()
+ //return ID3Field_GetUNICODEItem(field,buffer,maxChars,itemNum);
+# endif
+# else
+ // Not tested (< 3.x.x)
+ return ID3Field_GetUNICODE(field,buffer,maxChars,itemNum+1);
+# endif
+}
+
+
+
+
+/*
+ * Source : "http://www.id3.org/id3v2.4.0-structure.txt"
+ *
+ * Frames that allow different types of text encoding contains a text
+ * encoding description byte. Possible encodings:
+ *
+ * $00 ISO-8859-1 [ISO-8859-1]. Terminated with $00.
+ * $01 UTF-16 [UTF-16] encoded Unicode [UNICODE] with BOM ($FF FE
+ * or $FE FF). All strings in the same frame SHALL have the same
+ * byteorder. Terminated with $00 00.
+ * $02 UTF-16BE [UTF-16] encoded Unicode [UNICODE] without BOM.
+ * Terminated with $00 00.
+ * $03 UTF-8 [UTF-8] encoded Unicode [UNICODE]. Terminated with $00.
+ *
+ * For example :
+ * T P E 1 . . . . . . . ? ? J . o . n . . G . i . n . d . i . c . k .
+ * Hex : 54 50 45 31 00 00 00 19 00 00 01 ff fe 4a 00 6f 00 6e 00 20 00 47 00 69 00 6e 00 64 00 6e 00 63 00 6b 00
+ * ^
+ * |___ UTF-16
+ */
+/*
+ * Read the content (ID3FN_TEXT, ID3FN_URL, ...) of the id3_field of the
+ * id3_frame, and convert the string if needed to UTF-8.
+ */
+gchar *Id3tag_Get_Field (const ID3Frame *id3_frame, ID3_FieldID id3_fieldid)
+{
+ ID3Field *id3_field = NULL;
+ ID3Field *id3_field_encoding = NULL;
+ size_t num_chars = 0;
+ gchar *string = NULL, *string1 = NULL;
+
+ //g_print("Id3tag_Get_Field - ID3Frame '%s'\n",ID3FrameInfo_ShortName(ID3Frame_GetID(id3_frame)));
+
+ if ( (id3_field = ID3Frame_GetField(id3_frame,id3_fieldid)) )
+ {
+ ID3_TextEnc enc = ID3TE_NONE;
+
+ // Data of the field must be a TEXT (ID3FTY_TEXTSTRING)
+ if (ID3Field_GetType(id3_field) != ID3FTY_TEXTSTRING)
+ {
+ Log_Print("Id3tag_Get_Field() must be used only for fields containing text.\n");
+ return NULL;
+ }
+
+ /*
+ * We prioritize the encoding of the field. If the encoding of the field
+ * is ISO-8859-1, it can be read with an other single byte encoding.
+ */
+ // Get encoding from content of file...
+ id3_field_encoding = ID3Frame_GetField(id3_frame,ID3FN_TEXTENC);
+ if (id3_field_encoding)
+ enc = ID3Field_GetINT(id3_field_encoding);
+ // Else, get encoding from the field
+ //enc = ID3Field_GetEncoding(id3_field);
+
+ if (enc != ID3TE_UTF16 && enc != ID3TE_UTF8) // Encoding is ISO-8859-1?
+ {
+ if (USE_NON_STANDARD_ID3_READING_CHARACTER_SET) // Override with an other character set?
+ {
+ // Encoding set by user to ???.
+ if ( strcmp(FILE_READING_ID3V1V2_CHARACTER_SET,"ISO-8859-1") == 0 )
+ {
+ enc = ID3TE_ISO8859_1;
+ }else if ( strcmp(FILE_READING_ID3V1V2_CHARACTER_SET,"UTF-16BE") == 0
+ || strcmp(FILE_READING_ID3V1V2_CHARACTER_SET,"UTF-16LE") == 0 )
+ {
+ enc = ID3TE_UTF16;
+ }else if ( strcmp(FILE_READING_ID3V1V2_CHARACTER_SET,"UTF-8") == 0 )
+ {
+ enc = ID3TE_UTF8;
+ }else
+ {
+ enc = 9999;
+ }
+ }
+ }
+
+ // Some fields, as URL, aren't encodable, so there were written using ISO characters.
+ if ( !ID3Field_IsEncodable(id3_field) )
+ {
+ enc = ID3TE_ISO8859_1;
+ }
+
+ // Action according the encoding...
+ switch ( enc )
+ {
+ case ID3TE_ISO8859_1:
+ string = g_malloc0(sizeof(char)*ID3V2_MAX_STRING_LEN+1);
+ num_chars = ID3Field_GetASCII_1(id3_field,string,ID3V2_MAX_STRING_LEN,0);
+ string1 = convert_string(string,"ISO-8859-1","UTF-8",FALSE);
+ break;
+
+ case ID3TE_UTF8: // Shouldn't work with id3lib 3.8.3 (supports only ID3v2.3, not ID3v2.4)
+ // For UTF-8, this part do the same thing that enc=9999
+ string = g_malloc0(sizeof(char)*ID3V2_MAX_STRING_LEN+1);
+ num_chars = ID3Field_GetASCII_1(id3_field,string,ID3V2_MAX_STRING_LEN,0);
+ //string1 = convert_string(string,"UTF-8","UTF-8",FALSE); // Nothing to do
+ if (g_utf8_validate(string,-1,NULL))
+ string1 = g_strdup(string);
+ break;
+
+ case ID3TE_UTF16:
+ // Id3lib (3.8.3 at least) always returns Unicode strings in UTF-16BE.
+ case ID3TE_UTF16BE:
+ string = g_malloc0(sizeof(unicode_t)*ID3V2_MAX_STRING_LEN+1);
+ num_chars = ID3Field_GetUNICODE_1(id3_field,(unicode_t *)string,ID3V2_MAX_STRING_LEN,0);
+ // "convert_string_1" as we need to pass length for UTF-16
+ string1 = convert_string_1(string,num_chars,"UTF-16BE","UTF-8",FALSE);
+ break;
+
+ case 9999:
+ string = g_malloc0(sizeof(char)*ID3V2_MAX_STRING_LEN+1);
+ num_chars = ID3Field_GetASCII_1(id3_field,string,ID3V2_MAX_STRING_LEN,0);
+ string1 = convert_string(string,FILE_READING_ID3V1V2_CHARACTER_SET,"UTF-8",FALSE);
+ break;
+
+ default:
+ string = g_malloc0(sizeof(char)*4*ID3V2_MAX_STRING_LEN+1);
+ num_chars = ID3Field_GetASCII_1(id3_field,string,ID3V2_MAX_STRING_LEN,0);
+ string1 = convert_to_utf8(string);
+ break;
+ }
+ }
+ //g_print(">>ID:%d >'%s' (string1:'%s') (num_chars:%d)\n",ID3Field_GetINT(id3_field_encoding),string,string1,num_chars);
+
+ // In case the conversion fails, try 'filename_to_display' character fix...
+ if (num_chars && !string1)
+ {
+ gchar *escaped_str = g_strescape(string, NULL);
+ Log_Print("Id3tag_Get_Field: Trying to fix string '%s' ...",escaped_str);
+ g_free(escaped_str);
+
+ string1 = filename_to_display(string);
+
+ if (string1)
+ Log_Print("OK");
+ else
+ Log_Print("KO");
+ }
+ g_free(string);
+
+ return string1;
+}
+
+
+/*
+ * Set the content (ID3FN_TEXT, ID3FN_URL, ...) of the id3_field of the
+ * id3_frame. Check also if the string must be written from UTF-8 (gtk2) in the
+ * ISO-8859-1 encoding or UTF-16.
+ *
+ * Return the encoding used as if UTF-16 was used, we musn't write the ID3v1 tag.
+ *
+ * Known problem with id3lib
+ * - [ 1016290 ] Unicode16 writing bug
+ * http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
+ * For example with Latin-1 characters (like éöäüß) not saved correctly
+ * in Unicode, due to id3lib (for "é" it will write "E9 FF" instead of "EF 00")
+ */
+/*
+ * OLD NOTE : PROBLEM with ID3LIB
+ * - [ 1074169 ] Writing ID3v1 tag breaks Unicode string in v2 tags
+ * http://sourceforge.net/tracker/index.php?func=detail&aid=1074169&group_id=979&atid=100979
+ * => don't write id3v1 tag if Unicode is used, up to patch applied
+ * - [ 1073951 ] Added missing Field Encoding functions to C wrapper
+ * http://sourceforge.net/tracker/index.php?func=detail&aid=1073951&group_id=979&atid=300979
+ */
+ID3_TextEnc Id3tag_Set_Field (const ID3Frame *id3_frame, ID3_FieldID id3_fieldid, gchar *string)
+{
+ ID3Field *id3_field = NULL;
+ ID3Field *id3_field_encoding = NULL;
+ gchar *string_converted = NULL;
+
+ if ( (id3_field = ID3Frame_GetField(id3_frame,id3_fieldid)) )
+ {
+ ID3_TextEnc enc = ID3TE_NONE;
+
+ // Data of the field must be a TEXT (ID3FTY_TEXTSTRING)
+ if (ID3Field_GetType(id3_field) != ID3FTY_TEXTSTRING)
+ {
+ Log_Print("Id3tag_Set_Field() must be used only for fields containing text.");
+ return ID3TE_NONE;
+ }
+
+ /*
+ * We prioritize the rule selected in options. If the encoding of the
+ * field is ISO-8859-1, we can write it to an other single byte encoding.
+ */
+ if (FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET)
+ {
+ // Check if we can write the tag using ISO-8859-1 instead of UTF-16...
+ if ( (string_converted = g_convert(string, strlen(string), "ISO-8859-1",
+ "UTF-8", NULL, NULL ,NULL)) )
+ {
+ enc = ID3TE_ISO8859_1;
+ g_free(string_converted);
+ }else
+ {
+ // Force to UTF-16 as UTF-8 isn't supported
+ enc = ID3TE_UTF16;
+ }
+ } else
+ {
+ // Other encoding selected
+ // Encoding set by user to ???.
+ if ( strcmp(FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET,"ISO-8859-1") == 0 )
+ {
+ enc = ID3TE_ISO8859_1;
+ }else if ( strcmp(FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET,"UTF-16BE") == 0
+ || strcmp(FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET,"UTF-16LE") == 0 )
+ {
+ enc = ID3TE_UTF16;
+ }else if ( strcmp(FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET,"UTF-8") == 0 )
+ {
+ enc = ID3TE_UTF8;
+ }else
+ {
+ enc = 9999;
+ }
+ }
+
+ // Some fields, as URL, aren't encodable, so there were written using ISO characters!
+ if ( !ID3Field_IsEncodable(id3_field) )
+ {
+ enc = ID3TE_ISO8859_1;
+ }
+
+ // Action according the encoding...
+ switch ( enc )
+ {
+ case ID3TE_ISO8859_1:
+ // Write into ISO-8859-1
+ //string_converted = convert_string(string,"UTF-8","ISO-8859-1",TRUE);
+ string_converted = Id3tag_Rules_For_ISO_Fields(string,"UTF-8","ISO-8859-1");
+ ID3Field_SetEncoding(id3_field,ID3TE_ISO8859_1); // Not necessary for ISO-8859-1, but better to precise if field has an other encoding...
+ ID3Field_SetASCII(id3_field,string_converted);
+ g_free(string_converted);
+
+ id3_field_encoding = ID3Frame_GetField(id3_frame,ID3FN_TEXTENC);
+ if (id3_field_encoding)
+ ID3Field_SetINT(id3_field_encoding,ID3TE_ISO8859_1);
+
+ return ID3TE_ISO8859_1;
+ break;
+
+ /*** Commented as it doesn't work with id3lib 3.8.3 :
+ *** - it writes a strange UTF-8 string (2 bytes per character. Second char is FF) with a BOM
+ *** - it set the frame encoded to UTF-8 : "$03" which is OK
+ case ID3TE_UTF8: // Shouldn't work with id3lib 3.8.3 (supports only ID3v2.3, not ID3v2.4)
+ ID3Field_SetEncoding(id3_field,ID3TE_UTF8);
+ ID3Field_SetASCII(id3_field,string);
+
+ id3_field_encoding = ID3Frame_GetField(id3_frame,ID3FN_TEXTENC);
+ if (id3_field_encoding)
+ ID3Field_SetINT(id3_field_encoding,ID3TE_UTF8);
+
+ return ID3TE_UTF8;
+ break;
+ ***/
+
+ case ID3TE_UTF16:
+ //case ID3TE_UTF16BE:
+
+ /* See known problem on the top : [ 1016290 ] Unicode16 writing bug */
+ // Write into UTF-16
+ string_converted = convert_string_1(string, strlen(string), "UTF-8",
+ "UTF-16BE", FALSE);
+
+ // id3lib (3.8.3 at least) always takes big-endian input for Unicode
+ // fields, even if the field is set little-endian.
+ ID3Field_SetEncoding(id3_field,ID3TE_UTF16);
+ ID3Field_SetUNICODE(id3_field,(const unicode_t*)string_converted);
+ g_free(string_converted);
+
+ id3_field_encoding = ID3Frame_GetField(id3_frame,ID3FN_TEXTENC);
+ if (id3_field_encoding)
+ ID3Field_SetINT(id3_field_encoding,ID3TE_UTF16);
+
+ return ID3TE_UTF16;
+ break;
+
+ case 9999:
+ default:
+ //string_converted = convert_string(string,"UTF-8",FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET,TRUE);
+ string_converted = Id3tag_Rules_For_ISO_Fields(string,"UTF-8",FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET);
+ ID3Field_SetEncoding(id3_field,ID3TE_ISO8859_1);
+ ID3Field_SetASCII(id3_field,string_converted);
+ g_free(string_converted);
+
+ id3_field_encoding = ID3Frame_GetField(id3_frame,ID3FN_TEXTENC);
+ if (id3_field_encoding)
+ ID3Field_SetINT(id3_field_encoding,ID3TE_ISO8859_1);
+
+ return ID3TE_NONE;
+ break;
+ }
+ }
+
+ return ID3TE_NONE;
+}
+
+
+/*
+ * By default id3lib converts id3tag to ISO-8859-1 (single byte character set)
+ * Note : converting UTF-16 string (two bytes character set) to ISO-8859-1
+ * remove only the second byte => a strange string appears...
+ */
+void Id3tag_Prepare_ID3v1 (ID3Tag *id3_tag)
+{
+ ID3Frame *frame;
+ ID3Field *id3_field_encoding;
+ ID3Field *id3_field_text;
+
+ if ( id3_tag != NULL )
+ {
+ ID3TagIterator *id3_tag_iterator;
+ size_t num_chars = 0;
+ gchar *string, *string1, *string_converted;
+
+ id3_tag_iterator = ID3Tag_CreateIterator(id3_tag);
+ while ( NULL != (frame = ID3TagIterator_GetNext(id3_tag_iterator)) )
+ {
+ ID3_TextEnc enc = ID3TE_ISO8859_1;
+ ID3_FrameID frameid;
+
+ frameid = ID3Frame_GetID(frame);
+
+ if (frameid != ID3FID_TITLE
+ && frameid != ID3FID_LEADARTIST
+ && frameid != ID3FID_ALBUM
+ && frameid != ID3FID_YEAR
+ && frameid != ID3FID_TRACKNUM
+ && frameid != ID3FID_CONTENTTYPE
+ && frameid != ID3FID_COMMENT)
+ continue;
+
+ id3_field_encoding = ID3Frame_GetField(frame, ID3FN_TEXTENC);
+ if (id3_field_encoding != NULL)
+ enc = ID3Field_GetINT(id3_field_encoding);
+ id3_field_text = ID3Frame_GetField(frame, ID3FN_TEXT);
+
+ /* The frames in ID3TE_ISO8859_1 are already converted to the selected
+ * single-byte character set if used. So we treat only Unicode frames */
+ if ( (id3_field_text != NULL)
+ && (enc != ID3TE_ISO8859_1) )
+ {
+ // Read UTF-16 frame
+ string = g_malloc0(sizeof(unicode_t)*ID3V2_MAX_STRING_LEN+1);
+ num_chars = ID3Field_GetUNICODE_1(id3_field_text,(unicode_t *)string,ID3V2_MAX_STRING_LEN,0);
+ // "convert_string_1" as we need to pass length for UTF-16
+ string1 = convert_string_1(string,num_chars,"UTF-16BE","UTF-8",FALSE);
+
+ string_converted = Id3tag_Rules_For_ISO_Fields(string1,"UTF-8",FILE_WRITING_ID3V1_CHARACTER_SET);
+
+ if (string_converted)
+ {
+ ID3Field_SetEncoding(id3_field_text,ID3TE_ISO8859_1); // Not necessary for ISO-8859-1
+ ID3Field_SetASCII(id3_field_text,string_converted);
+ ID3Field_SetINT(id3_field_encoding,ID3TE_ISO8859_1);
+ g_free(string_converted);
+ }
+ g_free(string);
+ g_free(string1);
+ }
+ }
+ ID3TagIterator_Delete(id3_tag_iterator);
+ }
+}
+
+/*
+ * This function must be used for tag fields containing ISO data.
+ * We use specials functionalities of iconv : //TRANSLIT and //IGNORE (the last
+ * one doesn't work on my system) to force conversion to the target encoding.
+ */
+gchar *Id3tag_Rules_For_ISO_Fields (const gchar *string, const gchar *from_codeset, const gchar *to_codeset)
+{
+ gchar *string_converted = NULL;
+
+ if (!string || !from_codeset || !to_codeset)
+ return NULL;
+
+ if (FILE_WRITING_ID3V1_ICONV_OPTIONS_NO)
+ {
+ string_converted = convert_string(string,from_codeset,to_codeset,TRUE);
+
+ }else if (FILE_WRITING_ID3V1_ICONV_OPTIONS_TRANSLIT)
+ {
+ // iconv_open (3):
+ // When the string "//TRANSLIT" is appended to tocode, transliteration
+ // is activated. This means that when a character cannot be represented
+ // in the target character set, it can be approximated through one or
+ // several similarly looking characters.
+ gchar *to_enc = g_strconcat(to_codeset, "//TRANSLIT", NULL);
+ string_converted = convert_string(string,from_codeset,to_enc,TRUE);
+ g_free(to_enc);
+
+ }else if (FILE_WRITING_ID3V1_ICONV_OPTIONS_IGNORE)
+ {
+ // iconv_open (3):
+ // When the string "//IGNORE" is appended to tocode, characters that
+ // cannot be represented in the target character set will be silently
+ // discarded.
+ gchar *to_enc = g_strconcat(to_codeset, "//IGNORE", NULL);
+ string_converted = convert_string(string,from_codeset,to_enc,TRUE);
+ g_free(to_enc);
+ }
+
+ return string_converted;
+}
+
+/*
+ * Some files which contains only zeroes create an infinite loop in id3lib...
+ * To generate a file with zeroes : dd if=/dev/zero bs=1M count=6 of=test-corrupted-mp3-zero-contend.mp3
+ */
+gboolean Id3tag_Check_If_File_Is_Corrupted (gchar *filename)
+{
+ FILE *file;
+ unsigned char tmp[256];
+ unsigned char tmp0[256];
+ gint bytes_read;
+ gboolean result = TRUE;
+ gint cmp;
+
+ if (!filename)
+ return FALSE;
+
+ if ( (file=fopen(filename,"rb"))==NULL )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ memset(&tmp0,0,256);
+ while (!feof(file))
+ {
+ bytes_read = fread(tmp, 1, 256, file);
+ if ( (cmp=memcmp(tmp,tmp0,bytes_read)) != 0)
+ {
+ result = FALSE;
+ break;
+ }
+ }
+ fclose(file);
+
+ if (result)
+ {
+ GtkWidget *msgbox = NULL;
+ gchar *msg;
+ gchar *basename;
+ gchar *basename_utf8;
+
+ basename = g_path_get_basename(filename);
+ basename_utf8 = filename_to_display(basename);
+
+ msg = g_strdup_printf(_("As the following corrupted file: '%s'\nwill cause "
+ "an error in id3lib, it will not be processed by the program."),basename_utf8);
+ msgbox = msg_box_new(_("Corrupted file..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_CLOSE,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+ g_free(basename);
+ g_free(basename_utf8);
+ }
+
+ return result;
+}
+
+
+/*
+ * Function to detect if id3lib isn't bugged when writting to Unicode
+ * Returns TRUE if bugged, else FALSE
+ */
+gboolean Id3tag_Check_If_Id3lib_Is_Bugged (void)
+{
+ FILE *file;
+ unsigned char tmp[16] = {0xFF, 0xFB, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00};
+ ID3Tag *id3_tag = NULL;
+ gchar *filename;
+ gchar *result = NULL;
+ ID3Frame *id3_frame;
+ gboolean use_unicode;
+
+
+ if (!HOME_VARIABLE)
+ return FALSE;
+
+ // Create a temporary file
+ filename = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ ".easytag"G_DIR_SEPARATOR_S"test_easytag.mp3",
+ NULL);
+ if ( (file=fopen(filename,"w+"))==NULL )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+ // Set data in the file
+ fwrite(&tmp,16,1,file);
+ fclose(file);
+
+ // Save state of switches as we must force to Unicode before writting
+ use_unicode = FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET;
+ FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET = TRUE;
+
+ id3_tag = ID3Tag_New();
+ ID3Tag_Link_1(id3_tag,filename);
+
+ // Create a new 'title' field for testing
+ id3_frame = ID3Frame_NewID(ID3FID_TITLE);
+ ID3Tag_AttachFrame(id3_tag,id3_frame);
+ // Use a Chinese character instead of the latin-1 character as in Id3tag_Set_Field()
+ // we try to convert the string to ISO-8859-1 even in the Unicode mode.
+ //Id3tag_Set_Field(id3_frame, ID3FN_TEXT, "é"); // This latin-1 character is written in Unicode as 'E9 FF' instead of 'E9 00' if bugged
+ Id3tag_Set_Field(id3_frame, ID3FN_TEXT, "ã‚°"); // This Chinese character is written in Unicode as 'FF FE B0 FF' instead of 'FF FE B0 30' if bugged
+
+ // Update the tag
+ ID3Tag_UpdateByTagType(id3_tag,ID3TT_ID3V2);
+ ID3Tag_Delete(id3_tag);
+
+ FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET = use_unicode;
+
+
+ id3_tag = ID3Tag_New();
+ ID3Tag_Link_1(id3_tag,filename);
+ // Read the written field
+ if ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_TITLE)) )
+ {
+ result = Id3tag_Get_Field(id3_frame,ID3FN_TEXT);
+ }
+
+ ID3Tag_Delete(id3_tag);
+ remove(filename);
+
+ // Same string found? if yes => not bugged
+ //if ( result && strcmp(result,"é")!=0 )
+ if ( result && strcmp(result,"ã‚°")!=0 )
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+#endif /* ENABLE_ID3LIB */
+
+
+/*
+ * Write tag according the version selected by the user
+ */
+gboolean Id3tag_Write_File_Tag (ET_File *ETFile)
+{
+#ifdef ENABLE_ID3LIB
+ if (FILE_WRITING_ID3V2_VERSION_4)
+ return Id3tag_Write_File_v24Tag(ETFile);
+ else
+ return Id3tag_Write_File_v23Tag(ETFile);
+#else
+ return Id3tag_Write_File_v24Tag(ETFile);
+#endif
+}
+
+#endif /* ENABLE_MP3 */
+
+
+// Placed out #ifdef ENABLE_MP3 as not dependant of id3lib, and used in CDDB
+/*
+ * Returns the corresponding genre value of the input string (for ID3v1.x),
+ * else returns 0xFF (unknown genre, but not invalid).
+ */
+guchar Id3tag_String_To_Genre (gchar *genre)
+{
+ guint i;
+
+ if (genre != NULL)
+ {
+ for (i=0; i<=GENRE_MAX; i++)
+ if (strcasecmp(genre,id3_genres[i])==0)
+ return (guchar)i;
+ }
+ return (guchar)0xFF;
+}
+
+
+/*
+ * Returns the name of a genre code if found
+ * Three states for genre code :
+ * - defined (0 to GENRE_MAX)
+ * - undefined/unknown (GENRE_MAX+1 to ID3_INVALID_GENRE-1)
+ * - invalid (>ID3_INVALID_GENRE)
+ */
+gchar *Id3tag_Genre_To_String (unsigned char genre_code)
+{
+ if (genre_code>=ID3_INVALID_GENRE) /* empty */
+ return "";
+ else if (genre_code>GENRE_MAX) /* unknown tag */
+ return "Unknown";
+ else /* known tag */
+ return id3_genres[genre_code];
+}
+
diff --git a/src/id3_tag.h b/src/id3_tag.h
new file mode 100755
index 0000000..755668b
--- /dev/null
+++ b/src/id3_tag.h
@@ -0,0 +1,47 @@
+/* id3tag.h - 2001/02/16 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __ID3TAG_H__
+#define __ID3TAG_H__
+
+
+#include <glib.h>
+#include "et_core.h"
+
+
+/****************
+ * Declarations *
+ ****************/
+
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Id3tag_Read_File_Tag (gchar *filename, File_Tag *FileTag);
+gboolean Id3tag_Write_File_v24Tag (ET_File *ETFile);
+gboolean Id3tag_Write_File_Tag (ET_File *ETFile);
+
+gchar *Id3tag_Genre_To_String (unsigned char genre_code);
+guchar Id3tag_String_To_Genre (gchar *genre);
+
+
+#endif /* __ID3TAG_H__ */
diff --git a/src/id3lib/Makefile.am b/src/id3lib/Makefile.am
new file mode 100755
index 0000000..17c011b
--- /dev/null
+++ b/src/id3lib/Makefile.am
@@ -0,0 +1,14 @@
+CFLAGS = @CFLAGS@ @GTK_CFLAGS@
+
+noinst_LIBRARIES = libid3bugfix.a
+
+INCLUDES = -DLOCALE=\"$(localedir)\"
+
+EXTRA_DIST = \
+ patch_id3lib_3.8.3_UTF16_writing_bug.diff
+
+
+libid3bugfix_a_SOURCES = \
+ c_wrapper.cpp \
+ id3_bugfix.h
+
diff --git a/src/id3lib/Makefile.in b/src/id3lib/Makefile.in
new file mode 100644
index 0000000..6eea830
--- /dev/null
+++ b/src/id3lib/Makefile.in
@@ -0,0 +1,466 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/id3lib
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libid3bugfix_a_AR = $(AR) $(ARFLAGS)
+libid3bugfix_a_LIBADD =
+am_libid3bugfix_a_OBJECTS = c_wrapper.$(OBJEXT)
+libid3bugfix_a_OBJECTS = $(am_libid3bugfix_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libid3bugfix_a_SOURCES)
+DIST_SOURCES = $(libid3bugfix_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@ @GTK_CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
+WAVPACK_LIBS = @WAVPACK_LIBS@
+XGETTEXT = @XGETTEXT@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LIBRARIES = libid3bugfix.a
+INCLUDES = -DLOCALE=\"$(localedir)\"
+EXTRA_DIST = \
+ patch_id3lib_3.8.3_UTF16_writing_bug.diff
+
+libid3bugfix_a_SOURCES = \
+ c_wrapper.cpp \
+ id3_bugfix.h
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/id3lib/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/id3lib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libid3bugfix.a: $(libid3bugfix_a_OBJECTS) $(libid3bugfix_a_DEPENDENCIES)
+ -rm -f libid3bugfix.a
+ $(libid3bugfix_a_AR) libid3bugfix.a $(libid3bugfix_a_OBJECTS) $(libid3bugfix_a_LIBADD)
+ $(RANLIB) libid3bugfix.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c_wrapper.Po@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/id3lib/c_wrapper.cpp b/src/id3lib/c_wrapper.cpp
new file mode 100755
index 0000000..1f56147
--- /dev/null
+++ b/src/id3lib/c_wrapper.cpp
@@ -0,0 +1,141 @@
+// id3lib: a C++ library for creating and manipulating id3v1/v2 tags
+// Copyright 1999, 2000 Scott Thomas Haug
+// Copyright 2002 Thijmen Klok (thijmen@id3lib.org)
+
+// This library is free software; you can redistribute it and/or modify it
+// under the terms of the GNU Library General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or (at your
+// option) any later version.
+//
+// This library is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+// License for more details.
+//
+// You should have received a copy of the GNU Library General Public License
+// along with this library; if not, write to the Free Software Foundation,
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+// The id3lib authors encourage improvements and optimisations to be sent to
+// the id3lib coordinator. Please see the README file for details on where to
+// send such submissions. See the AUTHORS file for a list of people who have
+// contributed to id3lib. See the ChangeLog file for a list of changes to
+// id3lib. These files are distributed with id3lib at
+// http://download.sourceforge.net/id3lib/
+
+//#include <string.h>
+#include <config.h>
+
+#ifdef ENABLE_ID3LIB
+
+#include <id3.h>
+#include <id3/field.h>
+#include <id3/tag.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#define ID3_CATCH(code) try { code; } catch (...) { }
+
+ //
+ // Tag wrappers
+ //
+
+ ID3_C_EXPORT bool CCONV
+ ID3Field_SetEncoding(ID3Field *field, ID3_TextEnc enc)
+ {
+ bool changed = false;
+ if (field)
+ {
+ ID3_CATCH(changed = reinterpret_cast<ID3_Field *>(field)->SetEncoding(enc));
+ }
+ return changed;
+ }
+
+ ID3_C_EXPORT ID3_TextEnc CCONV
+ ID3Field_GetEncoding(const ID3Field *field)
+ {
+ ID3_TextEnc enc = ID3TE_NONE;
+ if (field)
+ {
+ ID3_CATCH(enc = reinterpret_cast<const ID3_Field *>(field)->GetEncoding());
+ }
+ return enc;
+ }
+
+ ID3_C_EXPORT bool CCONV
+ ID3Field_IsEncodable(const ID3Field *field)
+ {
+ bool isEncodable = false;
+ if (field)
+ {
+ ID3_CATCH(isEncodable = reinterpret_cast<const ID3_Field *>(field)->IsEncodable());
+ }
+ return isEncodable;
+ }
+
+ ID3_C_EXPORT ID3_FieldType CCONV
+ ID3Field_GetType(const ID3Field *field)
+ {
+ ID3_FieldType fieldType = ID3FTY_NONE;
+ if (field)
+ {
+ ID3_CATCH(fieldType = reinterpret_cast<const ID3_Field *>(field)->GetType());
+ }
+ return fieldType;
+ }
+
+ /*ID3_C_EXPORT ID3_FieldID CCONV
+ ID3Field_GetID(const ID3Field *field)
+ {
+ ID3_FieldID fieldID = ID3FN_NOFIELD;
+ if (field)
+ {
+ ID3_CATCH(fieldType = reinterpret_cast<const ID3_Field *>(field)->GetID());
+ }
+ return fieldType;
+ }*/
+
+
+
+ //
+ // Header wrappers
+ //
+
+ // Call with :
+ // const Mp3_Headerinfo* headerInfo = ID3Tag_GetMp3HeaderInfo(tag);
+ ID3_C_EXPORT const Mp3_Headerinfo* CCONV
+ ID3Tag_GetMp3HeaderInfo(ID3Tag *tag)
+ {
+ const Mp3_Headerinfo* headerInfo = NULL;
+ if (tag)
+ {
+ ID3_CATCH(headerInfo = reinterpret_cast<const ID3_Tag *>(tag)->GetMp3HeaderInfo());
+ }
+ return headerInfo;
+ }
+
+ // Call with :
+ // Mp3_Headerinfo* headerInfo = malloc(sizeof(Mp3_Headerinfo));
+ // ID3Tag_GetMp3HeaderInfo(tag, headerInfo);
+ /*ID3_C_EXPORT bool CCONV
+ ID3Tag_GetMp3HeaderInfo(ID3Tag *tag, Mp3_Headerinfo* headerInfo)
+ {
+ const Mp3_Headerinfo* rem_headerInfo = NULL;
+ if (tag)
+ {
+ ID3_CATCH(rem_headerInfo = reinterpret_cast<const ID3_Tag * >(tag)->GetMp3HeaderInfo());
+ }
+ // Does GCC understand this? (VS does)
+ if (rem_headerInfo) *headerInfo=*rem_headerInfo;
+ return rem_headerInfo!=NULL;
+ }*/
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* ENABLE_ID3LIB */
diff --git a/src/id3lib/id3_bugfix.h b/src/id3lib/id3_bugfix.h
new file mode 100755
index 0000000..74e7351
--- /dev/null
+++ b/src/id3lib/id3_bugfix.h
@@ -0,0 +1,56 @@
+/*
+ * id3lib: a software library for creating and manipulating id3v1/v2 tags
+ * Copyright 1999, 2000 Scott Thomas Haug
+ * Copyright 2002 Thijmen Klok (thijmen@id3lib.org)
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+ * License for more details.
+
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ * The id3lib authors encourage improvements and optimisations to be sent to
+ * the id3lib coordinator. Please see the README file for details on where to
+ * send such submissions. See the AUTHORS file for a list of people who have
+ * contributed to id3lib. See the ChangeLog file for a list of changes to
+ * id3lib. These files are distributed with id3lib at
+ * http://download.sourceforge.net/id3lib/
+ */
+
+#ifndef _ID3LIB_BUGFIX_H_
+#define _ID3LIB_BUGFIX_H_
+
+
+#ifdef ENABLE_ID3LIB
+
+#include "id3.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+ ID3_C_EXPORT bool CCONV ID3Field_SetEncoding (ID3Field *field, ID3_TextEnc enc);
+ ID3_C_EXPORT ID3_TextEnc CCONV ID3Field_GetEncoding (const ID3Field *field);
+ ID3_C_EXPORT bool CCONV ID3Field_IsEncodable (const ID3Field *field);
+ ID3_C_EXPORT ID3_FieldType CCONV ID3Field_GetType (const ID3Field *field);
+ //ID3_C_EXPORT ID3_FieldID CCONV ID3Field_GetID (const ID3Field *field);
+
+ ID3_C_EXPORT const Mp3_Headerinfo* CCONV ID3Tag_GetMp3HeaderInfo (ID3Tag *tag);
+
+#ifdef __cplusplus
+}
+#endif /*__cplusplus*/
+
+
+#endif /* ENABLE_ID3LIB */
+
+#endif /* _ID3LIB_BUGFIX_H_ */
diff --git a/src/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff b/src/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff
new file mode 100755
index 0000000..b05d2cf
--- /dev/null
+++ b/src/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff
@@ -0,0 +1,39 @@
+diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog
+--- id3lib-3.8.3.orig/ChangeLog 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3/ChangeLog 2006-02-22 00:33:59.946214472 +0100
+@@ -1,3 +1,8 @@
++2006-02-17 Jerome Couderc
++
++ * Patch from Spoon to fix UTF-16 writing bug
++ http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
++
+ 2003-03-02 Sunday 17:38 Thijmen Klok <thijmen@id3lib.org>
+
+ * THANKS (1.20): added more people
+diff -ruN id3lib-3.8.3.orig/src/io_helpers.cpp id3lib-3.8.3/src/io_helpers.cpp
+--- id3lib-3.8.3.orig/src/io_helpers.cpp 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3/src/io_helpers.cpp 2006-02-22 00:35:02.926639992 +0100
+@@ -363,11 +363,22 @@
+ // Write the BOM: 0xFEFF
+ unicode_t BOM = 0xFEFF;
+ writer.writeChars((const unsigned char*) &BOM, 2);
++ // Patch from Spoon : 2004-08-25 14:17
++ // http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
++ // Wrong code
++ //for (size_t i = 0; i < size; i += 2)
++ //{
++ // unicode_t ch = (data[i] << 8) | data[i+1];
++ // writer.writeChars((const unsigned char*) &ch, 2);
++ //}
++ // Right code
++ unsigned char *pdata = (unsigned char *) data.c_str();
+ for (size_t i = 0; i < size; i += 2)
+ {
+- unicode_t ch = (data[i] << 8) | data[i+1];
++ unicode_t ch = (pdata[i] << 8) | pdata[i+1];
+ writer.writeChars((const unsigned char*) &ch, 2);
+ }
++ // End patch
+ }
+ return writer.getCur() - beg;
+ }
diff --git a/src/id3v24_tag.c b/src/id3v24_tag.c
new file mode 100755
index 0000000..7b3c729
--- /dev/null
+++ b/src/id3v24_tag.c
@@ -0,0 +1,1499 @@
+/* id3v24_tag.c - 2007/05/25 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2006-2007 Alexey Illarionov <littlesavage@rambler.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <unistd.h>
+
+#include "id3_tag.h"
+#include "picture.h"
+#include "easytag.h"
+#include "browser.h"
+#include "genres.h"
+#include "setting.h"
+#include "misc.h"
+#include "et_core.h"
+#include "msgbox.h"
+#include "charset.h"
+
+#ifdef WIN32
+# include "win32/win32dep.h"
+#endif
+
+
+#ifdef ENABLE_MP3
+
+#include <id3tag.h>
+
+
+/****************
+ * Declarations *
+ ****************/
+#define MULTIFIELD_SEPARATOR " - "
+#define EASYTAG_STRING_ENCODEDBY "Encoded by"
+
+enum {
+ EASYTAG_ID3_FIELD_LATIN1 = 0x0001,
+ EASYTAG_ID3_FIELD_LATIN1FULL = 0x0002,
+ EASYTAG_ID3_FIELD_LATIN1LIST = 0x0004,
+ EASYTAG_ID3_FIELD_STRING = 0x0008,
+ EASYTAG_ID3_FIELD_STRINGFULL = 0x0010,
+ EASYTAG_ID3_FIELD_STRINGLIST = 0x0020,
+ EASYTAG_ID3_FIELD_LANGUAGE = 0x0040
+};
+
+/**************
+ * Prototypes *
+ **************/
+static int etag_guess_byteorder (const id3_ucs4_t *ustr, gchar **ret);
+static int etag_ucs42gchar (const id3_ucs4_t *usrc, unsigned is_latin, unsigned is_utf16, gchar **res);
+static int libid3tag_Get_Frame_Str (const struct id3_frame *frame, unsigned etag_field_type, gchar **retstr);
+
+static void Id3tag_delete_frames (struct id3_tag *tag, const gchar *name, int start);
+static void Id3tag_delete_txxframes (struct id3_tag *tag, const gchar *param1, int start);
+static struct id3_frame *Id3tag_findncreate_frame (struct id3_tag *tag, const gchar *name);
+static struct id3_frame *Id3tag_findncreate_txxframe (struct id3_tag *tag, const gchar *param1);
+static int id3taglib_set_field (struct id3_frame *frame, const gchar *str, enum id3_field_type type, int num, int clear, int id3v1);
+static int etag_set_tags (const gchar *str, const char *frame_name, enum id3_field_type field_type, struct id3_tag *v1tag, struct id3_tag *v2tag, gboolean *strip_tags);
+static int etag_write_tags (const gchar *filename, const struct id3_tag *v1tag, const struct id3_tag *v2tag, gboolean strip_tags);
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * Read id3v1.x / id3v2 tag and load data into the File_Tag structure.
+ * Returns TRUE on success, else FALSE.
+ * If a tag entry exists (ex: title), we allocate memory, else value stays to NULL
+ */
+gboolean Id3tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
+{
+ int tmpfile;
+ struct id3_file *file;
+ struct id3_tag *tag;
+ struct id3_frame *frame;
+ union id3_field *field;
+ gchar *string1, *string2;
+ Picture *prev_pic = NULL;
+ int i, j;
+ unsigned tmpupdate, update = 0;
+ long tagsize;
+
+
+ if (!filename || !FileTag)
+ return FALSE;
+
+ if ( (tmpfile=open(filename,O_RDONLY)) < 0 )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ g_print(_("ERROR while opening file: '%s' (%s).\n\a"),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ string1 = g_try_malloc(ID3_TAG_QUERYSIZE);
+ if (string1==NULL)
+ {
+ close(tmpfile);
+ return FALSE;
+ }
+
+ // Check if the file has an ID3v2 tag or/and an ID3v1 tags
+ // 1) ID3v2 tag
+ if (read(tmpfile, string1, ID3_TAG_QUERYSIZE) != ID3_TAG_QUERYSIZE)
+ {
+ close(tmpfile);
+ return FALSE;
+ }
+
+ if ((tagsize = id3_tag_query((id3_byte_t const *)string1, ID3_TAG_QUERYSIZE)) <= ID3_TAG_QUERYSIZE)
+ {
+ // ID3v2 tag not found!
+ update = FILE_WRITING_ID3V2_WRITE_TAG;
+ }else
+ {
+ /* ID3v2 tag found */
+ if (FILE_WRITING_ID3V2_WRITE_TAG == 0)
+ {
+ update = 1;
+ }else
+ {
+ /* Determine version if user want to upgrade old tags */
+ if (CONVERT_OLD_ID3V2_TAG_VERSION
+ && (string1 = realloc(string1, tagsize))
+ && (read(tmpfile, &string1[ID3_TAG_QUERYSIZE], tagsize - ID3_TAG_QUERYSIZE) == tagsize - ID3_TAG_QUERYSIZE)
+ && (tag = id3_tag_parse((id3_byte_t const *)string1, tagsize))
+ )
+ {
+ unsigned version = id3_tag_version(tag);
+#ifdef ENABLE_ID3LIB
+ /* Besides upgrade old tags we will downgrade id3v2.4 to id3v2.3 */
+ if ( FILE_WRITING_ID3V2_VERSION_4 )
+ {
+ update = (ID3_TAG_VERSION_MAJOR(version) < 4);
+ }else
+ {
+ update = ((ID3_TAG_VERSION_MAJOR(version) < 3)
+ | (ID3_TAG_VERSION_MAJOR(version) == 4));
+ }
+#else
+ update = (ID3_TAG_VERSION_MAJOR(version) < 4);
+#endif
+ id3_tag_delete(tag);
+ }
+ }
+ }
+
+ // 2) ID3v1 tag
+ if ( (lseek(tmpfile,-128, SEEK_END) >= 0) // Go to the beginning of ID3v1 tag
+ && (string1)
+ && (read(tmpfile, string1, 3) == 3)
+ && (string1[0] == 'T')
+ && (string1[1] == 'A')
+ && (string1[2] == 'G')
+ )
+ {
+ // ID3v1 tag found!
+ if (!FILE_WRITING_ID3V1_WRITE_TAG)
+ update = 1;
+ }else
+ {
+ // ID3v1 tag not found!
+ if (FILE_WRITING_ID3V1_WRITE_TAG)
+ update = 1;
+ }
+
+ g_free(string1);
+
+ if ((file = id3_file_fdopen(tmpfile, ID3_FILE_MODE_READONLY)) == NULL)
+ {
+ close(tmpfile);
+ return FALSE;
+ }
+
+ if ( ((tag = id3_file_tag(file)) == NULL)
+ || (tag->nframes == 0))
+ {
+ id3_file_close(file);
+ return FALSE;
+ }
+
+
+ /****************
+ * Title (TIT2) *
+ ****************/
+ if ( (frame = id3_tag_findframe(tag, ID3_FRAME_TITLE, 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, EASYTAG_ID3_FIELD_STRINGLIST, &FileTag->title);
+
+ /*****************
+ * Artist (TPE1) *
+ *****************/
+ if ( (frame = id3_tag_findframe(tag, ID3_FRAME_ARTIST, 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, EASYTAG_ID3_FIELD_STRINGLIST, &FileTag->artist);
+
+ /****************
+ * Album (TALB) *
+ ****************/
+ if ( (frame = id3_tag_findframe(tag, ID3_FRAME_ALBUM, 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &FileTag->album);
+
+ /************************
+ * Part of a set (TPOS) *
+ ************************/
+ if ( (frame = id3_tag_findframe(tag,"TPOS", 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &FileTag->disc_number);
+
+ /********************
+ * Year (TYER/TDRC) *
+ ********************/
+ if ( (frame = id3_tag_findframe(tag, ID3_FRAME_YEAR, 0)) )
+ {
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &string1);
+ if ( string1 )
+ {
+ Strip_String(string1);
+ FileTag->year = string1;
+ }
+ }
+
+ /********************************
+ * Track and Total Track (TRCK) *
+ ********************************/
+ if ( (frame = id3_tag_findframe(tag, ID3_FRAME_TRACK, 0)) )
+ {
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &string1);
+ if ( string1 )
+ {
+ string2 = g_utf8_strchr(string1,-1,'/');
+
+ if (NUMBER_TRACK_FORMATED)
+ {
+ if (string2)
+ {
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string2+1)); // Just to have numbers like this : '01', '05', '12', ...
+ *string2 = '\0'; // To cut string1
+ }
+ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string1)); // Just to have numbers like this : '01', '05', '12', ...
+ }else
+ {
+ if (string2)
+ {
+ FileTag->track_total = g_strdup(string2+1);
+ *string2 = '\0'; // To cut string1
+ }
+ FileTag->track = g_strdup(string1);
+ }
+ g_free(string1);
+
+ }
+ }
+
+ /****************
+ * Genre (TCON) *
+ ****************/
+ if ( (frame = id3_tag_findframe(tag, ID3_FRAME_GENRE, 0)) )
+ {
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &string1);
+ if ( string1 )
+ {
+ /*
+ * We manipulate only the name of the genre
+ * Genre is written like this :
+ * - "(<genre_id>)" -> "(3)"
+ * - "<genre_name>" -> "Dance"
+ * - "(<genre_id>)<refinement>" -> "(3)EuroDance"
+ */
+ gchar *tmp;
+ unsigned genre = 0;
+ FileTag->genre = NULL;
+
+ if ( (string1[0]=='(') && (tmp=strchr(string1,')')) && (tmp+1) && (strlen((tmp+1))>0) )
+ /* Convert a genre written as '(3)EuroDance' into 'EuroDance' */
+ {
+ FileTag->genre = g_strdup(tmp+1);
+ } else if ( (string1[0]=='(') && strchr(string1,')') )
+ {
+ /* Convert a genre written as '(3)' into 'Dance' */
+ genre = strtol(string1+1, &tmp, 10);
+ if (*tmp != ')')
+ {
+ FileTag->genre = g_strdup(string1);
+ }
+ } else
+ {
+ genre = strtol(string1, &tmp, 10);
+ if (tmp == string1)
+ FileTag->genre = g_strdup(string1);
+ }
+
+ if (!FileTag->genre
+ && id3_genre_index(genre))
+ FileTag->genre = (gchar *)id3_ucs4_utf8duplicate(id3_genre_index(genre));
+
+ g_free(string1);
+ }
+ }
+
+ /******************
+ * Comment (COMM) *
+ ******************/
+ if ( (frame = id3_tag_findframe(tag, ID3_FRAME_COMMENT, 0)) )
+ {
+ update |= libid3tag_Get_Frame_Str(frame, /* EASYTAG_ID3_FIELD_STRING | */ EASYTAG_ID3_FIELD_STRINGFULL,
+ &FileTag->comment);
+ /*{
+ gchar *comment1 = Id3tag_Get_Field(frame,ID3FN_DESCRIPTION)
+ gchar *comment2 = Id3tag_Get_Field(id3_frame,ID3FN_LANGUAGE)
+ }*/
+ }
+
+ /*******************
+ * Composer (TCOM) *
+ *******************/
+ if ( (frame = id3_tag_findframe(tag, "TCOM", 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &FileTag->composer);
+
+ /**************************
+ * Original artist (TOPE) *
+ **************************/
+ if ( (frame = id3_tag_findframe(tag, "TOPE", 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &FileTag->orig_artist);
+
+ /*******************
+ * Copyright (TCOP)*
+ *******************/
+ if ( (frame = id3_tag_findframe(tag, "TCOP", 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &FileTag->copyright);
+
+ /**************
+ * URL (WXXX) *
+ **************/
+ if ( (frame = id3_tag_findframe(tag, "WXXX", 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, EASYTAG_ID3_FIELD_LATIN1, &FileTag->url);
+
+ /*********************
+ * Encoded by (TENC) *
+ *********************/
+ if ( (frame = id3_tag_findframe(tag, "TENC", 0)) )
+ update |= libid3tag_Get_Frame_Str(frame, ~0, &FileTag->encoded_by);
+ /* Encoded by in TXXX frames */
+ string1 = NULL;
+ for (i = 0; (frame = id3_tag_findframe(tag, "TXX", i)); i++)
+ {
+ if (FileTag->encoded_by)
+ break;
+ tmpupdate = libid3tag_Get_Frame_Str(frame, ~0, &string1);
+ if (string1)
+ {
+ if (strcasestr(string1, EASYTAG_STRING_ENCODEDBY MULTIFIELD_SEPARATOR) == string1)
+ {
+ FileTag->encoded_by = g_strdup(&string1[sizeof(EASYTAG_STRING_ENCODEDBY) + sizeof(MULTIFIELD_SEPARATOR) - 2]);
+ g_free(string1);
+ update |= tmpupdate;
+ }else
+ g_free(string1);
+ }
+ }
+
+ /******************
+ * Picture (APIC) *
+ ******************/
+ for (i = 0; (frame = id3_tag_findframe(tag, "APIC", i)); i++)
+ {
+ Picture *pic;
+
+ pic = Picture_Allocate();
+ if (!prev_pic)
+ FileTag->picture = pic;
+ else
+ prev_pic->next = pic;
+ prev_pic = pic;
+
+ pic->data = NULL;
+
+ // Picture file data
+ for (j = 0; (field = id3_frame_field(frame, j)); j++)
+ {
+ switch (id3_field_type(field))
+ {
+ case ID3_FIELD_TYPE_BINARYDATA:
+ {
+ id3_length_t size;
+ id3_byte_t const *data;
+ data = id3_field_getbinarydata(field, &size);
+ if (pic->data)
+ g_free(pic->data);
+ if ( (pic->data = g_memdup(data, size)) )
+ pic->size = size;
+ }
+ break;
+ case ID3_FIELD_TYPE_INT8:
+ pic->type = id3_field_getint(field);
+ break;
+ default:
+ break;
+ }
+ }
+
+ // Picture description
+ update |= libid3tag_Get_Frame_Str(frame, EASYTAG_ID3_FIELD_STRING, &pic->description);
+ }
+
+ /**********************
+ * Lyrics (SYLC/USLT) *
+ **********************/
+ /** see also id3/misc_support.h **
+ if ( (id3_frame = ID3Tag_FindFrameWithID(id3_tag,ID3FID_SYNCEDLYRICS)) )
+ {
+ gulong size = 0;
+ guchar *data = NULL;
+ gchar *description = NULL;
+ gchar *language = NULL;
+ gint timestamp_format = 0;
+ gint sync_type = 0;
+
+ // SyncLyrics data
+ if ( (id3_field = ID3Frame_GetField(id3_frame, ID3FN_DATA)) )
+ {
+ size = ID3Field_Size(id3_field);
+ data = g_malloc(size);
+ ID3Field_GetBINARY(id3_field, data, size);
+ }
+
+ // SyncLyrics description
+ description = Id3tag_Get_Field(id3_frame, ID3FN_DESCRIPTION);
+
+ // SyncLyrics language
+ language = Id3tag_Get_Field(id3_frame, ID3FN_LANGUAGE);
+
+ // SyncLyrics timestamp field
+ if ( (id3_field = ID3Frame_GetField(id3_frame, ID3FN_TIMESTAMPFORMAT)) )
+ {
+ timestamp_format = ID3Field_GetINT(id3_field);
+ }
+
+ // SyncLyrics content type
+ if ( (id3_field = ID3Frame_GetField(id3_frame, ID3FN_CONTENTTYPE)) )
+ {
+ sync_type = ID3Field_GetINT(id3_field);
+ }
+
+ // Print data
+ // j.a. Pouwelse - pouwelse :
+ // http://sourceforge.net/tracker/index.php?func=detail&aid=401873&group_id=979&atid=300979
+ {
+ char tag[255];
+ unsigned int time;
+ luint pos = 0;
+
+ g_print("SyncLyrics/description : %s\n",description);
+ g_print("SyncLyrics/language : %s\n",language);
+ g_print("SyncLyrics/timestamp format : %s (%d)\n",timestamp_format==ID3TSF_FRAME ? "ID3TSF_FRAME" : timestamp_format==ID3TSF_MS ? "ID3TSF_MS" : "" ,timestamp_format);
+ g_print("SyncLyrics/sync type : %s (%d)\n",sync_type==ID3CT_LYRICS ? "ID3CT_LYRICS" : "",sync_type);
+
+
+ g_print("SyncLyrics size : %d\n", size);
+ g_print("Lyrics/data :\n");
+ while (pos < size)
+ {
+ strcpy(tag,data+pos);
+ //g_print("txt start=%d ",pos);
+ pos+=strlen(tag)+1; // shift string and terminating \0
+ //g_print("txt end=%d ",pos);
+ memcpy(&time,data+pos,4);
+ pos+=4;
+ //g_print("%d -> %s\n",time,tag);
+ g_print("%s",tag);
+ }
+ }
+
+ } **/
+
+ if (update)
+ FileTag->saved = FALSE;
+
+ /* Free allocated data */
+ id3_file_close(file);
+
+ return TRUE;
+}
+
+
+/* Guess byteorder of UTF-16 string that was converted to 'ustr' (some ID3
+ * tags contain UTF-16 string without BOM and in fact can be UTF16BE and
+ * UTF-16LE). Function correct byteorder, if it is needed, and return new
+ * corrected utf-8 string in 'ret'.
+ * Return value of function is 0 if byteorder was not changed
+ */
+static int
+etag_guess_byteorder(const id3_ucs4_t *ustr, gchar **ret) /* XXX */
+{
+ unsigned i, len;
+ gunichar *gstr;
+ gchar *tmp, *str, *str2;
+ const gchar *charset;
+
+ if (!ustr || !*ustr)
+ {
+ if (ret)
+ *ret = NULL;
+ return 0;
+ }
+
+ if (USE_NON_STANDARD_ID3_READING_CHARACTER_SET)
+ charset = FILE_READING_ID3V1V2_CHARACTER_SET;
+ else if (!FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET) /* XXX */
+ charset = FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET;
+ else g_get_charset(&charset);
+
+ if (!charset)
+ charset = "ISO-8859-1";
+
+ tmp = (gchar *)id3_ucs4_utf8duplicate(ustr);
+ str = g_convert(tmp, -1, charset, "UTF-8", NULL, NULL, NULL);
+ if (str)
+ {
+ g_free(str);
+ if (ret)
+ *ret = tmp;
+ else
+ free (tmp);
+ return 0; /* byteorder not changed */
+ }
+
+ for (len = 0; ustr[len]; len++);
+
+ gstr = g_try_malloc(sizeof(gunichar) * (len + 1));
+ if ( gstr == NULL )
+ {
+ if (ret)
+ *ret = tmp;
+ else
+ free(tmp);
+ return 0;
+ }
+
+ for (i = 0; i <= len; i++)
+ gstr[i] = ((ustr[i] & 0xff00) >> 8) | ((ustr[i] & 0xff) << 8);
+ str = g_ucs4_to_utf8(gstr, len, NULL, NULL, NULL);
+ g_free(gstr);
+
+ if (str == NULL)
+ {
+ if (ret)
+ *ret = tmp;
+ else
+ free(tmp);
+ return 0;
+ }
+
+ str2 = g_convert(str, -1, charset, "UTF-8", NULL, NULL, NULL);
+
+ if (str2 && *str2)
+ {
+ g_free(str2);
+ free(tmp);
+ if (ret)
+ *ret = str;
+ else
+ free(str);
+ return 1;
+ }
+
+ g_free(str);
+
+ if (ret)
+ *ret = tmp;
+ else
+ free(tmp);
+
+ return 0;
+}
+
+
+/* convert ucs4 string to utf-8 gchar in 'res' according to easytag charset
+ * conversion settings and field type.
+ * function return 0 if byteorder of utf-16 string was changed
+ */
+static int
+etag_ucs42gchar(const id3_ucs4_t *usrc, unsigned is_latin,
+ unsigned is_utf16, gchar **res)
+{
+ gchar *latinstr, *retstr;
+ int retval;
+
+ if (!usrc || !*usrc)
+ {
+ if (res)
+ *res = NULL;
+ return 0;
+ }
+
+ retval = 0, retstr = NULL;
+
+ if (is_latin && USE_NON_STANDARD_ID3_READING_CHARACTER_SET)
+ {
+ if ((latinstr = (gchar *)id3_ucs4_latin1duplicate(usrc)))
+ {
+ retstr = convert_string(latinstr, FILE_READING_ID3V1V2_CHARACTER_SET, "UTF-8", FALSE);
+ free(latinstr);
+ }
+ }else
+ {
+ if (is_utf16)
+ {
+ retval |= etag_guess_byteorder(usrc, &retstr);
+ }else
+ {
+ retstr = (gchar *)id3_ucs4_utf8duplicate(usrc);
+ }
+ }
+
+ if (res)
+ *res = retstr;
+ else
+ free (retstr);
+
+ return retval;
+}
+
+
+static int
+libid3tag_Get_Frame_Str(const struct id3_frame *frame, unsigned etag_field_type, gchar **retstr)
+{
+ const union id3_field *field;
+ unsigned i, j, strcnt;
+ gchar *ret, *tmpstr, *tmpstr2, *latinstr;
+ unsigned field_type;
+ const id3_ucs4_t *usrc;
+ unsigned is_latin, is_utf16;
+ unsigned retval;
+
+ ret = NULL;
+ retval = 0;
+ is_latin = 1, is_utf16 = 0;
+
+ for (i = 0; (field = id3_frame_field(frame, i)); i++)
+ {
+ if (id3_field_type(field) == ID3_FIELD_TYPE_TEXTENCODING)
+ {
+ is_latin = (id3_field_gettextencoding(field) == ID3_FIELD_TEXTENCODING_ISO_8859_1);
+ is_utf16 = (id3_field_gettextencoding(field) == ID3_FIELD_TEXTENCODING_UTF_16);
+ break;
+ }
+ }
+
+ for (i = 0; (field = id3_frame_field(frame, i)); i++)
+ {
+ tmpstr = tmpstr2 = NULL;
+ switch (field_type = id3_field_type(field))
+ {
+ case ID3_FIELD_TYPE_LATIN1:
+ case ID3_FIELD_TYPE_LATIN1FULL:
+ if (field_type == ID3_FIELD_TYPE_LATIN1)
+ {
+ if (!(etag_field_type & EASYTAG_ID3_FIELD_LATIN1))
+ continue;
+ }else
+ if (!(etag_field_type & EASYTAG_ID3_FIELD_LATIN1FULL))
+ continue;
+ latinstr = g_strdup(field_type == ID3_FIELD_TYPE_LATIN1 ? (gchar *)id3_field_getlatin1(field) : (gchar *)id3_field_getfulllatin1(field));
+ if (USE_NON_STANDARD_ID3_READING_CHARACTER_SET)
+ {
+ tmpstr = convert_string(latinstr, FILE_READING_ID3V1V2_CHARACTER_SET, "UTF-8", FALSE);
+ free(latinstr);
+ }
+ else
+ tmpstr = latinstr;
+ break;
+
+ case ID3_FIELD_TYPE_STRING:
+ case ID3_FIELD_TYPE_STRINGFULL:
+ if (field_type == ID3_FIELD_TYPE_STRING)
+ {
+ if (!(etag_field_type & EASYTAG_ID3_FIELD_STRING))
+ continue;
+ }else
+ if (!(etag_field_type & EASYTAG_ID3_FIELD_STRINGFULL))
+ continue;
+ usrc = (field_type == ID3_FIELD_TYPE_STRING) ? id3_field_getstring(field) : id3_field_getfullstring(field);
+ retval |= etag_ucs42gchar(usrc, is_latin, is_utf16, &tmpstr);
+ break;
+
+ case ID3_FIELD_TYPE_STRINGLIST:
+ if (!(etag_field_type & EASYTAG_ID3_FIELD_STRINGLIST))
+ continue;
+ strcnt = id3_field_getnstrings(field);
+ for (j = 0; j < strcnt; j++)
+ {
+ retval |= etag_ucs42gchar(
+ id3_field_getstrings(field, j),
+ is_latin, is_utf16, &tmpstr );
+
+ if (tmpstr2 && *tmpstr2 && g_utf8_validate(tmpstr2, -1, NULL))
+ {
+ if (tmpstr)
+ tmpstr = g_strconcat(tmpstr, " ", tmpstr2, NULL);
+ else
+ tmpstr = g_strdup(tmpstr2);
+ }
+
+ free(tmpstr2);
+ }
+
+ default:
+ break;
+ }
+ if (tmpstr && *tmpstr && g_utf8_validate(tmpstr, -1, NULL))
+ {
+ if (ret)
+ ret = g_strconcat(ret, MULTIFIELD_SEPARATOR, tmpstr, NULL);
+ else
+ ret = g_strdup(tmpstr);
+ }
+ g_free(tmpstr);
+ }
+
+ if (retstr)
+ *retstr = ret;
+ else
+ free(ret);
+
+ return retval;
+}
+
+
+/*
+ * Write the ID3 tags to the file. Returns TRUE on success, else 0.
+ */
+gboolean Id3tag_Write_File_v24Tag (ET_File *ETFile)
+{
+ File_Tag *FileTag;
+ gchar *filename, *filename_utf8;
+ gchar *basename_utf8;
+ struct id3_tag *v1tag, *v2tag;
+ struct id3_frame *frame;
+ union id3_field *field;
+ gchar *string1;
+ Picture *pic;
+ unsigned i;
+ gint error = 0;
+ gboolean strip_tags = TRUE;
+ guchar genre_value = ID3_INVALID_GENRE;
+
+
+ if (!ETFile && !ETFile->FileTag)
+ return FALSE;
+
+ FileTag = (File_Tag *)ETFile->FileTag->data;
+ filename = ((File_Name *)ETFile->FileNameCur->data)->value;
+ filename_utf8 = ((File_Name *)ETFile->FileNameCur->data)->value_utf8;
+
+ v1tag = v2tag = NULL;
+
+ if (FILE_WRITING_ID3V2_WRITE_TAG)
+ {
+ struct id3_file *file;
+ struct id3_tag *tmptag;
+ unsigned i;
+ id3_byte_t *tmpbuf = NULL;
+
+ /* Read old v2 tag */
+ if ((file = id3_file_open(filename, ID3_FILE_MODE_READWRITE)) == NULL)
+ return FALSE;
+
+ if ((tmptag = id3_file_tag(file)) == NULL)
+ {
+ id3_file_close(file);
+ return FALSE;
+ }
+
+ id3_tag_options(tmptag, ID3_TAG_OPTION_UNSYNCHRONISATION
+ | ID3_TAG_OPTION_ID3V1
+ | ID3_TAG_OPTION_COMPRESSION
+ | ID3_TAG_OPTION_APPENDEDTAG,
+ ID3_TAG_OPTION_UNSYNCHRONISATION);
+
+ /* XXX Create new tag and copy all frames*/
+ i = id3_tag_render(tmptag, NULL);
+ if ((i > 10)
+ && (tmpbuf = g_try_malloc(i))
+ && (id3_tag_render(tmptag, tmpbuf) != 0)
+ )
+ v2tag = id3_tag_parse(tmpbuf, i);
+ g_free(tmpbuf);
+
+ if (v2tag == NULL)
+ {
+ if ((v2tag = id3_tag_new()) == NULL)
+ {
+ id3_file_close(file);
+ return FALSE;
+ }
+ }
+
+ id3_file_close(file);
+
+ /* Set padding XXX */
+ if ((v2tag->paddedsize < 1024)
+ || ((v2tag->paddedsize > 4096) && (i < 1024))
+ )
+ v2tag->paddedsize = 1024;
+
+ /* Set options */
+ id3_tag_options(v2tag,
+ ID3_TAG_OPTION_UNSYNCHRONISATION
+ | ID3_TAG_OPTION_APPENDEDTAG
+ | ID3_TAG_OPTION_ID3V1
+ | ID3_TAG_OPTION_CRC
+ | ID3_TAG_OPTION_COMPRESSION,
+ ID3_TAG_OPTION_UNSYNCHRONISATION
+ );
+ if (FILE_WRITING_ID3V2_USE_CRC32)
+ id3_tag_options(v2tag, ID3_TAG_OPTION_CRC, ~0);
+ if (FILE_WRITING_ID3V2_USE_COMPRESSION)
+ id3_tag_options(v2tag, ID3_TAG_OPTION_COMPRESSION, ~0);
+ }
+
+ if (FILE_WRITING_ID3V1_WRITE_TAG)
+ {
+ v1tag = id3_tag_new();
+ if (!v1tag)
+ return FALSE;
+ id3_tag_options(v1tag, ID3_TAG_OPTION_ID3V1, ~0);
+ }
+
+
+ /*********
+ * Title *
+ *********/
+ etag_set_tags(FileTag->title, ID3_FRAME_TITLE, ID3_FIELD_TYPE_STRINGLIST, v1tag, v2tag, &strip_tags);
+
+ /**********
+ * Artist *
+ **********/
+ etag_set_tags(FileTag->artist, ID3_FRAME_ARTIST, ID3_FIELD_TYPE_STRINGLIST, v1tag, v2tag, &strip_tags);
+
+ /*********
+ * Album *
+ *********/
+ etag_set_tags(FileTag->album, ID3_FRAME_ALBUM, ID3_FIELD_TYPE_STRINGLIST, v1tag, v2tag, &strip_tags);
+
+ /***************
+ * Part of set *
+ ***************/
+ etag_set_tags(FileTag->disc_number, "TPOS", ID3_FIELD_TYPE_STRINGLIST, NULL, v2tag, &strip_tags);
+
+ /********
+ * Year *
+ ********/
+ etag_set_tags(FileTag->year, ID3_FRAME_YEAR, ID3_FIELD_TYPE_STRINGLIST, v1tag, v2tag, &strip_tags);
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ if ( FileTag->track
+ && FileTag->track_total
+ && *FileTag->track_total )
+ string1 = g_strconcat(FileTag->track,"/",FileTag->track_total,NULL);
+ else
+ string1 = NULL;
+
+ etag_set_tags(string1 ? string1 : FileTag->track, ID3_FRAME_TRACK, ID3_FIELD_TYPE_STRINGLIST, NULL, v2tag, &strip_tags);
+ etag_set_tags(FileTag->track, ID3_FRAME_TRACK, ID3_FIELD_TYPE_STRINGLIST, v1tag, NULL, &strip_tags);
+ g_free(string1);
+
+ /*********
+ * Genre *
+ **********
+ /* Genre is written like this :
+ * - "<genre_id>" -> "3"
+ * - "<genre_name>" -> "EuroDance"
+ */
+ if (FileTag->genre)
+ genre_value = Id3tag_String_To_Genre(FileTag->genre);
+
+ if (genre_value == ID3_INVALID_GENRE)
+ string1 = g_strdup(FileTag->genre);
+ else
+ string1 = g_strdup_printf("%d",genre_value);
+
+ etag_set_tags(string1, ID3_FRAME_GENRE, ID3_FIELD_TYPE_STRINGLIST, v1tag, v2tag, &strip_tags);
+ g_free(string1);
+
+ /***********
+ * Comment *
+ ***********/
+ etag_set_tags(FileTag->comment, ID3_FRAME_COMMENT, ID3_FIELD_TYPE_STRINGFULL, v1tag, v2tag, &strip_tags);
+
+ /************
+ * Composer *
+ ************/
+ etag_set_tags(FileTag->composer, "TCOM", ID3_FIELD_TYPE_STRINGLIST, NULL, v2tag, &strip_tags);
+
+ /*******************
+ * Original artist *
+ *******************/
+ etag_set_tags(FileTag->orig_artist, "TOPE", ID3_FIELD_TYPE_STRINGLIST, NULL, v2tag, &strip_tags);
+
+ /*************
+ * Copyright *
+ *************/
+ etag_set_tags(FileTag->copyright, "TCOP", ID3_FIELD_TYPE_STRINGLIST, NULL, v2tag, &strip_tags);
+
+ /*******
+ * URL *
+ *******/
+ etag_set_tags(FileTag->url, "WXXX", ID3_FIELD_TYPE_LATIN1, NULL, v2tag, &strip_tags);
+
+ /***************
+ * Encoded by *
+ ***************/
+ if ( v2tag && FileTag->encoded_by && *FileTag->encoded_by
+ && (frame = Id3tag_findncreate_txxframe(v2tag, EASYTAG_STRING_ENCODEDBY)))
+ {
+ id3taglib_set_field(frame, EASYTAG_STRING_ENCODEDBY, ID3_FIELD_TYPE_STRING, 0, 1, 0);
+ id3taglib_set_field(frame, FileTag->encoded_by, ID3_FIELD_TYPE_STRING, 1, 0, 0);
+ strip_tags = FALSE;
+ }else
+ if (v2tag)
+ Id3tag_delete_txxframes(v2tag, EASYTAG_STRING_ENCODEDBY, 0);
+
+ /***********
+ * Picture *
+ ***********/
+ Id3tag_delete_frames(v2tag, "APIC", 0);
+
+ pic = FileTag->picture;
+
+ if (v2tag)
+ {
+ while (pic)
+ {
+ if ((frame = id3_frame_new("APIC")) == NULL)
+ continue;
+
+ id3_tag_attachframe(v2tag, frame);
+ for (i = 0; (field = id3_frame_field(frame, i)); i++)
+ {
+ switch (id3_field_type(field))
+ {
+ case ID3_FIELD_TYPE_LATIN1:
+ switch (Picture_Format(pic))
+ {
+ case PICTURE_FORMAT_JPEG:
+ id3_field_setlatin1(field, (id3_latin1_t const *)"image/jpeg");
+ break;
+ case PICTURE_FORMAT_PNG:
+ id3_field_setlatin1(field, (id3_latin1_t const *)"image/png");
+ break;
+ default:
+ break;
+ }
+ break;
+ case ID3_FIELD_TYPE_INT8:
+ id3_field_setint(field, pic->type);
+ break;
+ case ID3_FIELD_TYPE_BINARYDATA:
+ id3_field_setbinarydata(field, pic->data, pic->size);
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (pic->description)
+ id3taglib_set_field(frame, pic->description, ID3_FIELD_TYPE_STRING, 0, 0, 0);
+
+ strip_tags = FALSE;
+ pic = pic->next;
+ }
+ }
+
+ /****************************************
+ * File length (in milliseconds) DISCARD*
+ ****************************************/
+
+ /*********************************
+ * Update id3v1.x and id3v2 tags *
+ *********************************/
+ error |= etag_write_tags(filename, v1tag, v2tag, strip_tags);
+
+ if (v1tag)
+ id3_tag_delete(v1tag);
+ if (v2tag)
+ id3_tag_delete(v2tag);
+
+ if (error == 0)
+ {
+ basename_utf8 = g_path_get_basename(filename_utf8);
+ Log_Print(_("Updated tag of '%s'"),basename_utf8);
+ g_free(basename_utf8);
+ }
+
+ if (error) return FALSE;
+ else return TRUE;
+
+}
+
+/* Dele all frames with 'name'
+ * begining with frame num 'start' (0-based)
+ * from tag 'tag'
+ */
+static void
+Id3tag_delete_frames(struct id3_tag *tag, const gchar *name, int start)
+{
+ struct id3_frame *frame;
+
+ if (!tag || !name || !*name)
+ return;
+
+ while ((frame = id3_tag_findframe(tag, name, start)))
+ {
+ id3_tag_detachframe(tag, frame);
+ id3_frame_delete(frame);
+ }
+
+}
+
+static void
+Id3tag_delete_txxframes(struct id3_tag *tag, const gchar *param1, int start)
+{
+ int i;
+ struct id3_frame *frame;
+ union id3_field *field;
+ const id3_ucs4_t *ucs4string;
+ gchar *str;
+
+ if (!tag || !param1 || !*param1)
+ return;
+
+ for (i = start; (frame = id3_tag_findframe(tag, "TXXX", i)); )
+ if ( (field = id3_frame_field(frame, 1))
+ && (ucs4string = id3_field_getstring(field)) )
+ {
+ str = NULL;
+ if ((str = (gchar *)id3_ucs4_latin1duplicate(ucs4string))
+ && (strcasestr(str, param1) == str) )
+ {
+ g_free(str);
+ id3_tag_detachframe(tag, frame);
+ id3_frame_delete(frame);
+ }else
+ {
+ i++;
+ g_free(str);
+ }
+ }else
+ i++;
+}
+
+/* Find first frame with name 'name' in tag 'tag'
+ * create new if not found
+ */
+static struct id3_frame *
+Id3tag_findncreate_frame(struct id3_tag *tag, const gchar *name)
+{
+ struct id3_frame *frame;
+
+ if (!tag || !name || !*name)
+ return NULL;
+
+ frame = id3_tag_findframe(tag, name, 0);
+ if (!frame)
+ {
+ if ((frame = id3_frame_new(name)) == NULL)
+ return NULL;
+ id3_tag_attachframe(tag, frame);
+ }
+
+ return frame;
+}
+
+/* Find first "TXX" (user defined text information) frame in tag 'tag'
+ * with first string parameter (name) 'param'
+ * create new if not found
+ */
+static struct id3_frame *
+Id3tag_findncreate_txxframe(struct id3_tag *tag, const gchar *param1)
+{
+ const id3_ucs4_t *ucs4string;
+ struct id3_frame *frame;
+ union id3_field *field;
+ int i;
+ gchar *str;
+
+ if (!tag || !param1 || !*param1)
+ return NULL;
+
+ for (i = 0; (frame = id3_tag_findframe(tag, "TXXX", i)); i++)
+ if ( (field = id3_frame_field(frame, 1))
+ && (ucs4string = id3_field_getstring(field)) )
+ {
+ str = NULL;
+ if ((str = (gchar *)id3_ucs4_latin1duplicate(ucs4string))
+ && (strcasestr(str, param1) == str) )
+ {
+ g_free(str);
+ break;
+ }else
+ g_free(str);
+ }
+
+ if (frame == NULL)
+ {
+ if ((frame = id3_frame_new("TXXX")) == NULL)
+ return NULL;
+ id3_tag_attachframe(tag, frame);
+ }
+
+ return frame;
+}
+
+static int
+id3taglib_set_field(struct id3_frame *frame, const gchar *str,
+ enum id3_field_type type,
+ int num, int clear, int id3v1)
+{
+ union id3_field *field;
+ enum id3_field_type curtype;
+ id3_ucs4_t *buf;
+ gchar *latinstr, *encname;
+ enum id3_field_textencoding enc_field;
+ unsigned i;
+ unsigned is_set;
+
+ latinstr = NULL, buf = NULL;
+ is_set = 0;
+ enc_field = ID3_FIELD_TEXTENCODING_ISO_8859_1;
+
+ if (str)
+ {
+ /* Prepare str for writing according to easytag charset coversion settings */
+ if ((FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET == 0)
+ || (type == ID3_FIELD_TYPE_LATIN1)
+ || (type == ID3_FIELD_TYPE_LATIN1FULL)
+ || id3v1)
+ {
+ encname = NULL;
+ /* id3v1 fields converted using its own character set and iconv options */
+ if ( id3v1 )
+ {
+ if ( !FILE_WRITING_ID3V1_ICONV_OPTIONS_NO )
+ encname = g_strconcat(
+ FILE_WRITING_ID3V1_CHARACTER_SET,
+ FILE_WRITING_ID3V1_ICONV_OPTIONS_TRANSLIT ? "//TRANSLIT" : "//IGNORE",
+ NULL);
+ else
+ encname = g_strdup(FILE_WRITING_ID3V1_CHARACTER_SET);
+ } else
+ {
+ /* latin1 fields (such as URL) always converted with ISO-8859-1*/
+ if ((type != ID3_FIELD_TYPE_LATIN1) && (type != ID3_FIELD_TYPE_LATIN1FULL))
+ {
+ if ( FILE_WRITING_ID3V2_ICONV_OPTIONS_NO == 0)
+ encname = g_strconcat(
+ FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET,
+ FILE_WRITING_ID3V2_ICONV_OPTIONS_TRANSLIT ? "//TRANSLIT" : "//IGNORE",
+ NULL);
+ else
+ encname = g_strdup(FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET);
+ }
+ }
+
+ latinstr = convert_string(str, "UTF-8", encname ? encname : "ISO-8859-1//IGNORE", TRUE);
+ free(encname);
+ buf = id3_latin1_ucs4duplicate((id3_latin1_t const *)latinstr);
+ } else
+ {
+ if (!strcmp(FILE_WRITING_ID3V2_UNICODE_CHARACTER_SET, "UTF-16"))
+ {
+ enc_field = ID3_FIELD_TEXTENCODING_UTF_16;
+ buf = id3_utf8_ucs4duplicate((id3_utf8_t const *)str);
+ }else
+ {
+ enc_field = ID3_FIELD_TEXTENCODING_UTF_8;
+ buf = id3_utf8_ucs4duplicate((id3_utf8_t const *)str);
+ }
+ }
+ }
+
+ if (frame)
+ frame->flags &= ~ID3_FRAME_FLAG_FORMATFLAGS;
+
+ for (i = 0; (field = id3_frame_field(frame, i)); i++)
+ {
+ if (is_set && !clear)
+ break;
+
+ switch (curtype = id3_field_type(field))
+ {
+ case ID3_FIELD_TYPE_TEXTENCODING:
+ id3_field_settextencoding(field, enc_field);
+ break;
+ case ID3_FIELD_TYPE_LATIN1:
+ if (clear)
+ id3_field_setlatin1(field, NULL);
+ if ((type == curtype) && !is_set)
+ {
+ if (num == 0)
+ {
+ id3_field_setlatin1(field, (id3_latin1_t const *)latinstr);
+ is_set = 1;
+ }else
+ num--;
+ }
+ break;
+ case ID3_FIELD_TYPE_LATIN1FULL:
+ if (clear)
+ id3_field_setfulllatin1(field, NULL);
+ if ((type == curtype) && !is_set)
+ {
+ if (num == 0)
+ {
+ id3_field_setfulllatin1(field, (id3_latin1_t const *)latinstr);
+ is_set = 1;
+ }else
+ num--;
+ }
+ break;
+ case ID3_FIELD_TYPE_STRING:
+ if (clear)
+ id3_field_setstring(field, NULL);
+ if ((type == curtype) && !is_set)
+ {
+ if (num == 0)
+ {
+ id3_field_setstring(field, buf);
+ is_set = 1;
+ }else
+ num--;
+ }
+ break;
+ case ID3_FIELD_TYPE_STRINGFULL:
+ if (clear)
+ id3_field_setfullstring(field, NULL);
+ if ((type == curtype) && !is_set)
+ {
+ if (num == 0)
+ {
+ id3_field_setfullstring(field, buf);
+ is_set = 1;
+ }else
+ num--;
+ }
+ break;
+ case ID3_FIELD_TYPE_STRINGLIST:
+ if (clear)
+ id3_field_setstrings(field, 0, NULL);
+ if ((type == curtype) && !is_set)
+ {
+ if ((num == 0) && (buf))
+ {
+ id3_field_addstring(field, buf);
+ is_set = 1;
+ }else
+ num--;
+ }
+ break;
+ default:
+ break;
+ }
+ if (is_set)
+ {
+ free(latinstr);
+ free(buf);
+ latinstr = NULL, buf = NULL;
+ }
+ }
+
+ if (latinstr || buf)
+ {
+ free(latinstr);
+ free(buf);
+ return 1;
+ } else
+ return 0;
+}
+
+
+static int
+etag_set_tags(const gchar *str,
+ const char *frame_name,
+ enum id3_field_type field_type,
+ struct id3_tag *v1tag,
+ struct id3_tag *v2tag,
+ gboolean *strip_tags)
+{
+ struct id3_frame *ftmp;
+
+ if ( str && *str )
+ {
+ *strip_tags = FALSE;
+
+ if (v2tag
+ && (ftmp = Id3tag_findncreate_frame(v2tag, frame_name)))
+ id3taglib_set_field(ftmp, str, field_type, 0, 1, 0);
+ if (v1tag
+ && (ftmp = Id3tag_findncreate_frame(v1tag, frame_name)))
+ id3taglib_set_field(ftmp, str, field_type, 0, 1, 1);
+ }else
+ if (v2tag)
+ Id3tag_delete_frames(v2tag, frame_name, 0);
+
+ return 0;
+}
+
+static int
+etag_write_tags(const gchar *filename, const struct id3_tag *v1tag, const struct id3_tag *v2tag, gboolean strip_tags)
+{
+ id3_byte_t *v1buf, *v2buf;
+ id3_length_t v1size = 0, v2size = 0;
+ char tmp[ID3_TAG_QUERYSIZE];
+ int fd;
+ int curpos;
+ long filev2size, ctxsize;
+ char *ctx = NULL;
+ int err = 0;
+
+ v1buf = v2buf = NULL;
+ if ( !strip_tags )
+ {
+ /* Render v1 tag */
+ if (v1tag)
+ {
+ v1size = id3_tag_render(v1tag, NULL);
+ if (v1size == 128)
+ {
+ v1buf = g_try_malloc(v1size);
+ if (id3_tag_render(v1tag, v1buf) != v1size)
+ {
+ /* NOTREACHED */
+ g_free(v1buf);
+ v1buf = NULL;
+ }
+ }
+ }
+
+ /* Render v2 tag */
+ if (v2tag)
+ {
+ v2size = id3_tag_render(v2tag, NULL);
+ if (v2size > 10)
+ {
+ v2buf = g_try_malloc0(v2size);
+ if ((v2size = id3_tag_render(v2tag, v2buf)) == 0)
+ {
+ /* NOTREACHED */
+ g_free(v2buf);
+ v2buf = NULL;
+ }
+ }
+ }
+ }
+ if (v1buf == NULL)
+ v1size = 0;
+ if (v2buf == NULL)
+ v2size = 0;
+
+ if ((fd = open(filename, O_RDWR)) < 0)
+ {
+ err = errno;
+ g_free(v1buf);
+ g_free(v2buf);
+ return (err);
+ }
+
+ err = 1;
+
+ /* Handle Id3v1 tag */
+ if (lseek(fd, -128, SEEK_END) < 0)
+ goto out;
+ if (read(fd, tmp, ID3_TAG_QUERYSIZE) != ID3_TAG_QUERYSIZE)
+ goto out;
+
+ if ( (tmp[0] == 'T')
+ && (tmp[1] == 'A')
+ && (tmp[2] == 'G')
+ )
+ {
+ if (lseek(fd, -128, SEEK_END) < 0)
+ goto out;
+ }else
+ if (lseek(fd, 0, SEEK_END) < 0)
+ goto out;
+
+ /* Search id3v2 tags at the end of the file (before any ID3v1 tag) */
+ /* XXX: Unsafe */
+ if (lseek(fd, -ID3_TAG_QUERYSIZE, SEEK_CUR) >= 0)
+ {
+ if (read(fd, tmp, ID3_TAG_QUERYSIZE) != ID3_TAG_QUERYSIZE)
+ goto out;
+ filev2size = id3_tag_query((id3_byte_t const *)tmp, ID3_TAG_QUERYSIZE);
+ if ((filev2size > 10)
+ && lseek(fd, -filev2size, SEEK_CUR))
+ {
+ if (read(fd, tmp, ID3_TAG_QUERYSIZE) != ID3_TAG_QUERYSIZE)
+ goto out;
+ if (id3_tag_query((id3_byte_t const *)tmp, ID3_TAG_QUERYSIZE) != filev2size)
+ lseek(fd, -ID3_TAG_QUERYSIZE - filev2size, SEEK_CUR);
+ else
+ lseek(fd, -ID3_TAG_QUERYSIZE, SEEK_CUR);
+ }
+ }
+
+ /* Write id3v1 tag */
+ if (v1buf)
+ if ( write(fd, v1buf, v1size) != v1size)
+ goto out;
+
+ /* Truncate file (strip tags) */
+ if ((curpos = lseek(fd, 0, SEEK_CUR)) <= 0 )
+ goto out;
+ if ((err = ftruncate(fd, curpos)))
+ goto out;
+
+ /* Handle Id3v2 tag */
+ if (lseek(fd, 0, SEEK_SET) < 0)
+ goto out;
+
+ if (read(fd, tmp, ID3_TAG_QUERYSIZE) != ID3_TAG_QUERYSIZE)
+ goto out;
+
+ filev2size = id3_tag_query((id3_byte_t const *)tmp, ID3_TAG_QUERYSIZE);
+
+ if ( (filev2size == 0)
+ && (v2size == 0))
+ goto out;
+
+ if (filev2size == v2size)
+ {
+ if (lseek(fd, 0, SEEK_SET) < 0)
+ goto out;
+ if (write(fd, v2buf, v2size) != v2size)
+ goto out;
+ }else
+ {
+ /* XXX */
+ ctxsize = lseek(fd, 0, SEEK_END) - filev2size;
+ if ((ctx = g_try_malloc(ctxsize)) == NULL)
+ goto out;
+ if (lseek(fd, filev2size, SEEK_SET) < 0)
+ goto out;
+ if (read(fd, ctx, ctxsize) != ctxsize)
+ goto out;
+ if (lseek(fd, 0, SEEK_SET) < 0)
+ goto out;
+ if (v2buf)
+ write(fd, v2buf, v2size);
+
+ if (write(fd, ctx, ctxsize) != ctxsize)
+ {
+ g_print("OOPS\n");
+ goto out;
+ }
+
+ if ((curpos = lseek(fd, 0, SEEK_CUR)) <= 0 )
+ goto out;
+ if ((err = ftruncate(fd, curpos)))
+ goto out;
+ }
+
+ err = 0;
+out:
+ g_free(ctx);
+ lseek(fd, 0, SEEK_SET);
+ close(fd);
+ g_free(v1buf);
+ g_free(v2buf);
+ return err;
+}
+
+#endif /* ENABLE_MP3 */
diff --git a/src/libapetag/COPYING.LGPL b/src/libapetag/COPYING.LGPL
new file mode 100755
index 0000000..cf9b6b9
--- /dev/null
+++ b/src/libapetag/COPYING.LGPL
@@ -0,0 +1,510 @@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard. To achieve this, non-free programs must
+be allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+^L
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+^L
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+ Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/src/libapetag/Makefile.am b/src/libapetag/Makefile.am
new file mode 100755
index 0000000..61b0f9c
--- /dev/null
+++ b/src/libapetag/Makefile.am
@@ -0,0 +1,22 @@
+CFLAGS = @CFLAGS@ @GTK_CFLAGS@
+
+noinst_LIBRARIES = libapetag.a
+
+INCLUDES = -DLOCALE=\"$(localedir)\"
+
+
+libapetag_a_SOURCES = \
+ apetaglib.c \
+ apetaglib.h \
+ is_tag.c \
+ is_tag.h \
+ info_mac.c \
+ info_mac.h \
+ info_mpc.c \
+ info_mpc.h
+
+EXTRA_DIST = \
+ COPYING.LGPL \
+ README.apetag \
+ id3v2_read.c \
+ id3v2_read.h
diff --git a/src/libapetag/Makefile.in b/src/libapetag/Makefile.in
new file mode 100644
index 0000000..68858ad
--- /dev/null
+++ b/src/libapetag/Makefile.in
@@ -0,0 +1,471 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/libapetag
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libapetag_a_AR = $(AR) $(ARFLAGS)
+libapetag_a_LIBADD =
+am_libapetag_a_OBJECTS = apetaglib.$(OBJEXT) is_tag.$(OBJEXT) \
+ info_mac.$(OBJEXT) info_mpc.$(OBJEXT)
+libapetag_a_OBJECTS = $(am_libapetag_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libapetag_a_SOURCES)
+DIST_SOURCES = $(libapetag_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@ @GTK_CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
+WAVPACK_LIBS = @WAVPACK_LIBS@
+XGETTEXT = @XGETTEXT@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LIBRARIES = libapetag.a
+INCLUDES = -DLOCALE=\"$(localedir)\"
+libapetag_a_SOURCES = \
+ apetaglib.c \
+ apetaglib.h \
+ is_tag.c \
+ is_tag.h \
+ info_mac.c \
+ info_mac.h \
+ info_mpc.c \
+ info_mpc.h
+
+EXTRA_DIST = \
+ COPYING.LGPL \
+ README.apetag \
+ id3v2_read.c \
+ id3v2_read.h
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libapetag/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/libapetag/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libapetag.a: $(libapetag_a_OBJECTS) $(libapetag_a_DEPENDENCIES)
+ -rm -f libapetag.a
+ $(libapetag_a_AR) libapetag.a $(libapetag_a_OBJECTS) $(libapetag_a_LIBADD)
+ $(RANLIB) libapetag.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apetaglib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info_mac.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info_mpc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_tag.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/libapetag/README.apetag b/src/libapetag/README.apetag
new file mode 100755
index 0000000..9b3d311
--- /dev/null
+++ b/src/libapetag/README.apetag
@@ -0,0 +1,12 @@
+"apetaglib (in source) easytag" editon 0.5-pre1
+
+For current source mail to [artii <at> o2 <dot> pl]
+
+If you develop some nice patches or found some bugs
+please send me info ;-)
+
+All documentation fixes please send too (check all *.h files)
+
+this will be on dual licences GPL/LGPL (propably)
+
+now is LGPL
diff --git a/src/libapetag/apetaglib.c b/src/libapetag/apetaglib.c
new file mode 100755
index 0000000..1f5012e
--- /dev/null
+++ b/src/libapetag/apetaglib.c
@@ -0,0 +1,1065 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: apetaglib.c,v 1.44 2003/04/16 21:06:27 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <stdarg.h>
+#include <string.h>
+#include <limits.h>
+#include <assert.h>
+#include <math.h>
+#ifndef __BORLANDC__
+# include <unistd.h>
+#endif
+#include "apetaglib.h"
+#include "../genres.h"
+
+#include "is_tag.h"
+#ifdef ID3V2_READ
+# include "id3v2_read.h"
+#endif
+
+/* LOCAL STRUCTURES */
+
+/**
+ \struct _apetag_footer
+ \brief structure of APETAGEXT footer or/and header tag
+*/
+struct _apetag_footer
+{
+ unsigned char id[8]; /**< magic should equal 'APETAGEX' */
+ unsigned char version[4]; /**< version 1000 (v1.0) or 2000 (v 2.0) */
+ unsigned char length[4]; /**< the complete size of the tag, including footer, but no header for v2.0 */
+ unsigned char tagCount[4]; /**< the number of fields in the tag */
+ unsigned char flags[4]; /**< the tag flags (none currently defined for v 1.0) */
+ unsigned char reserved[8]; /**< reserved for later use */
+};
+
+/**
+ \struct _ape_mem_cnt
+ \brief internal structure for apetag
+*/
+struct _ape_mem_cnt
+{
+ struct tag **tag;
+ int countTag;
+ int memTagAlloc; // for mem container;
+ char *filename; // for info
+ struct _apetag_footer ape_header;
+ struct _apetag_footer ape_footer;
+ int currentPosition;
+};
+
+/* *
+ \struct _id3v1Tag
+ \brief for id3v1 tag
+*/
+struct _id3v1Tag
+{
+ char magic[3]; // `TAG`
+ char title[30];
+ char artist[30];
+ char album[30];
+ char year[4];
+ char comment[30]; // if ([28]==0 and [29]!=0) track = [29]
+ unsigned char genre;
+};
+
+/* LOCAL FUNCTION prototypes */
+unsigned long
+ape2long (unsigned char *p);
+void
+long2ape (unsigned char *p, const unsigned long value);
+struct tag *
+libapetag_maloc_cont_int (apetag *mem_cnt, struct tag *mTag);
+int
+libapetag_maloc_cont_text (apetag *mem_cnt, unsigned long flags,
+ long sizeName, char *name, long sizeValue, char *value);
+int
+libapetag_maloc_cont (apetag *mem_cnt, unsigned long flags,
+ long sizeName, char *name, long sizeValue, char *value);
+static int
+libapetag_qsort (struct tag **a, struct tag **b);
+int
+make_id3v1_tag(apetag *mem_cnt, struct _id3v1Tag *m);
+
+
+unsigned long
+ape2long (unsigned char *p)
+{
+ return (((unsigned long) p[0] << 0) |
+ ((unsigned long) p[1] << 8) |
+ ((unsigned long) p[2] << 16) |
+ ((unsigned long) p[3] << 24) );
+}
+
+void
+long2ape (unsigned char *p, const unsigned long value)
+{
+ p[0] = (unsigned char) (value >> 0);
+ p[1] = (unsigned char) (value >> 8);
+ p[2] = (unsigned char) (value >> 16);
+ p[3] = (unsigned char) (value >> 24);
+}
+
+
+/*
+ PL: funkcja troszczaca sie o odpowiedni± ilosc zalokowanej pamieci dla tablicy
+ PL: %mTag% przy okazji alokuje z wyprzedzeniem troche wiecej pamieci [mniej %realoc%]
+ PL: zwraca %mTag[]%
+ :NON_USER:!!!
+ */
+#define LIBAPETAG_MEM_ALLOC_AHEAD 16 /* 15 it's good for normal #of tag, Aver 4-8 */
+struct tag *
+libapetag_maloc_cont_int (apetag *mem_cnt, struct tag *mTag)
+{
+ struct tag **tag_tmp = mem_cnt->tag;
+
+ if (mem_cnt->memTagAlloc == 0) { /* init */
+ mem_cnt->tag = (struct tag **)
+ malloc (((sizeof (struct tag **)) * (LIBAPETAG_MEM_ALLOC_AHEAD)));
+ mem_cnt->memTagAlloc = LIBAPETAG_MEM_ALLOC_AHEAD;
+ mem_cnt->countTag = 0;
+ if (mem_cnt->tag == NULL) {
+ mem_cnt->memTagAlloc = mem_cnt->countTag = 0;
+ PRINT_ERR ( "ERROR->libapetag->libapetag_maloc_cont_int:malloc\n");
+ return NULL;
+ }
+ }
+
+ if ((mem_cnt->memTagAlloc) <= (mem_cnt->countTag + 1)) {
+ mem_cnt->tag = (struct tag **) realloc (mem_cnt->tag, ((sizeof (struct tag **)) *
+ (mem_cnt->memTagAlloc + LIBAPETAG_MEM_ALLOC_AHEAD)));
+ mem_cnt->memTagAlloc += LIBAPETAG_MEM_ALLOC_AHEAD;
+ }
+
+ if (mem_cnt->tag == NULL) {
+ int n;
+
+ PRINT_ERR ( "ERROR->libapetag->libapetag_maloc_cont_int:malloc\n");
+ /* free old all */
+ for (n = mem_cnt->countTag-1; n >= 0; n--) {
+ free (tag_tmp[n]->value);
+ free (tag_tmp[n]->name);
+ free (tag_tmp[n]);
+ }
+ free (tag_tmp);
+ mem_cnt->memTagAlloc = mem_cnt->countTag = 0;
+ return NULL;
+ }
+
+ mem_cnt->tag[mem_cnt->countTag] = mTag;
+ mem_cnt->countTag++;
+ return mTag;
+
+}
+#undef LIBAPETAG_MEM_ALLOC_AHEAD
+
+
+/*
+ PL: alocuje pamiec dla %mTag% przypisuje odpowiednio wartosci
+ PL: dodaje %\0% do stringów [na wszelki wypadek]
+ PL: nie dopisuje takich samych
+ PL: wszystkie sizy maja byc bez \0 (jak bedzie to doliczy jeszcze jeden)
+ :NON_USER:!!!
+ */
+int
+libapetag_maloc_cont (apetag *mem_cnt, unsigned long flags,
+ long sizeName, char *name, long sizeValue, char *value)
+{
+ struct tag *mTag;
+ // TODO:: zadbac o to zeby tu czyscilo istniejace tagi jesli value=NULL
+ if (!sizeName || !sizeValue)
+ return ATL_BADARG;
+
+ if (apefrm_getstr (mem_cnt, name) == NULL) {
+ mTag = (struct tag *) malloc (sizeof (struct tag));
+
+ if (mTag == NULL)
+ return ATL_MALOC;
+
+ mTag->value = (char *) malloc (sizeValue + 1);
+ if (mTag->value==NULL) {
+ free (mTag);
+ return ATL_MALOC;
+ }
+
+ mTag->name = (char *) malloc (sizeName + 1);
+ if (mTag->name==NULL) {
+ free (mTag->value);
+ free (mTag);
+ return ATL_MALOC;
+ }
+
+ memcpy (mTag->value, value, sizeValue);
+ memcpy (mTag->name, name, sizeName);
+ mTag->value[sizeValue] = '\0';
+ mTag->name[sizeName] = '\0';
+ mTag->sizeName = sizeName;
+ mTag->sizeValue = sizeValue;
+ mTag->flags = flags;
+
+ if (libapetag_maloc_cont_int (mem_cnt, mTag)==NULL) {
+ PRINT_ERR(">apetaglib>libapetag_maloc_cont>> int==NULL");
+ return ATL_MALOC;
+ }
+ }
+
+ return 0;
+}
+
+/*
+ PL: jezeli nie istnieje to dodaje taga, pomija ostatnie biale znaki
+ PL: pomija jesli pusty
+ PL: ! zmienia tekst wej¶ciowy
+ :NON_USER:!!!
+*/
+int
+libapetag_maloc_cont_text (apetag *mem_cnt, unsigned long flags,
+ long sizeName, char *name, long sizeValue,
+ char *value)
+{
+ int n = sizeValue;
+
+ if (value != NULL && value[0] != '\0' && apefrm_getstr (mem_cnt, name) == NULL) {
+ while (value[--n] == ' ' || value[n] == '\0' || value[n] == '\n') {
+ value[n] = '\0';
+ }
+ return libapetag_maloc_cont (mem_cnt, flags, sizeName, name, n + 1, value);
+ }
+
+ return 0;
+}
+
+
+/*
+ PL: dodaje taga do istniejeacych o ustawionych wartosciach %flag% %name% i %value%
+ PL: wylicza odpowiednio rozmiary przy pomocy strlen!!
+ PL: wraper na %libapetag_maloc_cont%
+ PL: wszystko kopiuje sobie do pamieci
+ PL: musi byc juz w UTF-8 dla v2
+ PL: Nadpisuje istniejace
+ */
+/**
+ \brief Add text frame
+
+ add text frame/field to object apetag (if exist then overwrite)
+
+ \param mem_cnt object #apetag
+ \param flags flags stored in frame
+ \param name name of frame
+ \param value value of frame
+ \return 0 - OK else check #atl_return
+*/
+int
+apefrm_add (apetag *mem_cnt, unsigned long flags, char *name,
+ char *value)
+{
+ apefrm_remove_real (mem_cnt, name);
+ return libapetag_maloc_cont (mem_cnt, flags, strlen (name), name, strlen (value), value);
+}
+
+/*
+ PL: Prosty wraperek na maloc_cont - do zapisu binarnych
+*/
+/**
+ \brief add binary frame
+
+ add binary frame/field to object apetag (if exist then overwrite)
+
+ \param mem_cnt object #apetag
+ \param flags flags stored in frame
+ \param sizeName size of name
+ \param name name of frame
+ \param sizeValue size of value
+ \param value value of frame
+ \return 0 - OK else check #atl_return
+*/
+int
+apefrm_add_bin (apetag *mem_cnt, unsigned long flags,
+ long sizeName, char *name,
+ long sizeValue, char *value)
+{
+ apefrm_remove_real (mem_cnt, name);
+ return libapetag_maloc_cont (mem_cnt, flags, sizeName, name, sizeValue, value);
+}
+
+/*
+ PL: jak %apefrm_add ()% z tym ze nie nadpisuje istniejacych
+*/
+/**
+ \brief add frame if other (the same name) no exist
+
+ if exist "name" in ape_mem then do nothing else add frame/field to ape_mem
+
+ \param mem_cnt object #apetag
+ \param flags flags stored in frame
+ \param name name of frame
+ \param value value of frame
+ \return 0 - OK else check #atl_return
+*/
+int
+apefrm_add_noreplace (apetag *mem_cnt, unsigned long flags,
+ char *name, char *value)
+{
+ if ( apefrm_getstr (mem_cnt, name) == NULL )
+ return apefrm_add (mem_cnt, flags, name, value);
+
+ return 0;
+}
+
+/*
+ PL: wyszukuje taga o nazwie %name% i zwraca structure %struct tag%
+ PL: %APE_TAG_LIB_FIRST% i %APE_TAG_LIB_NEXT% to ulatwienie dla
+ PL: przesukiwania wszystkich istniejacych tagów
+ PL: %APE_TAG_LIB_FIRST% ustawia znacznik na pierwszy tag [0] i zwraca jego warto¶æ
+ PL: %APE_TAG_LIB_NEXT% podaje nastepny tag i zwieksza znacznik, po ostatnim funkcja zwraca %NULL%
+ PL: UWAGA!!! zwraca pointer do wewnetrznej struktury
+ PL: niczego nie zmieniac i nie free()-jowac skopiowac i dopiero
+ PL: zwraca teksty w UTF-8
+ */
+/**
+ \brief search in apetag for name and return tag
+
+ 2 special names \a APE_TAG_LIB_FIRST and \a APE_TAG_LIB_NEXT.
+ FIRST return first frame and set counter to 1
+ NEXT return ++counter frame
+\code
+for ((framka = apefrm_get(ape, APE_TAG_LIB_FIRST)); framka!=NULL;) {
+ do_something();
+ framka = apefrm_get(ape, APE_TAG_LIB_NEXT);
+}
+\endcode
+ return NULL if no more frame exist
+
+ \param mem_cnt object #apetag
+ \param name frame name for search
+ \return pointer to struct tag if name exist or NULL if don't
+ \warning don't change anything in this struct make copy and work
+*/
+struct tag *
+apefrm_get (apetag *mem_cnt, char *name)
+{
+ int n;
+ struct tag **mTag;
+
+ mTag = (mem_cnt->tag);
+
+ if (mem_cnt->countTag == 0)
+ return NULL;
+
+ if (strcmp (name, APE_TAG_LIB_FIRST) == 0) {
+ mem_cnt->currentPosition = 0;
+ return (mTag[mem_cnt->currentPosition++]);
+ }
+
+ if (strcmp (name, APE_TAG_LIB_NEXT) == 0) {
+ if (mem_cnt->currentPosition >= mem_cnt->countTag)
+ return NULL;
+ return (mTag[mem_cnt->currentPosition++]);
+ }
+
+ for (n = 0; (mem_cnt->countTag) > n; n++) {
+ if (strcasecmp (mTag[n]->name, name) == 0) {
+ return (mTag[n]);
+ }
+ }
+
+ return NULL;
+}
+
+/*
+ PL:zwraca %mem_cnt->tag[x]->value% o ile znajdzie nazwe %name% taga
+ PL: prosty wraper na %apefrm_get %
+ PL: UWAGA zwraca pointer z wewnetrznych struktur niczego bezposrednio nie zmieniac
+ PL: i nie free()-jowac bo sie rozsypie
+ PL: zwraca tekst w UTF-8
+ */
+/**
+ \brief search in apetag for name and return string
+
+ \param mem_cnt object #apetag
+ \param name frame name for search
+ \return pointer to value of frame if name exist or NULL if don't
+ \warning don't change that string make copy before any action
+ \todo check if frame type isn't binary
+*/
+char *
+apefrm_getstr (apetag *mem_cnt, char *name)
+{
+ struct tag *mTag;
+
+ mTag = apefrm_get (mem_cnt, name);
+
+ if (mTag == NULL)
+ return NULL;
+
+ return (mTag->value);
+}
+
+/*
+ PL: usuwanie taga o nazwie zdefiniowanej w %name%
+ PL:lub wszystkich jezeli %name%=%APE_TAG_LIB_DEL_ALL%
+ PL:UWAGA mozna to napisac inaczej (sprawdzanie czy %name% OR %%special%) ale to w v1.0
+ */
+/**
+ \brief remove frame from memory
+
+ (real) remove frame from ape_mem.
+ Check #apefrm_remove for more info
+
+ \param mem_cnt object #apetag
+ \param name frame name for search and remove
+*/
+void
+apefrm_remove_real (apetag *mem_cnt, char *name)
+{
+ int n;
+ struct tag **mTag;
+
+ mTag = (mem_cnt->tag);
+
+ /* Delete all */
+ if (strcmp (name, APE_TAG_LIB_DEL_ALL) == 0) {
+ for (n = mem_cnt->countTag-1; n >= 0; n--) {
+ free (mTag[n]->name);
+ free (mTag[n]->value);
+ free (mTag[n]);
+ --mem_cnt->countTag;
+ }
+ return;
+ }
+ /* Delete only one */
+ for (n = mem_cnt->countTag-1; n >= 0; n--) {
+ if (strcasecmp (mTag[n]->name, name) == 0) {
+ free (mTag[n]->name);
+ free (mTag[n]->value);
+ free (mTag[n]);
+ mTag[n] = mTag[mem_cnt->countTag];
+ --mem_cnt->countTag;
+ /* !no return; search for all */
+ }
+ }
+
+ return;
+}
+/*
+ PL: tak jakby frejuje framke oznacza do kasacji jednak tego nie robi
+ PL: mechanizm ten g³ownie jest wykorzystywany do wczytania innych tagów
+ PL: poza wczesniej zkasowanymi aby to usun±c uzyj apefrm_remove_real
+*/
+/**
+ \brief set frame to remove
+
+ Create fake name and empty value (and set don't save flag).
+ If you use apefrm_add_norepleace then you don't change
+ this not_save_flag.
+ Only apefrm_add overwrite this.
+ [it's for id3v1 but you may using this for remove frames]
+
+ \param mem_cnt object #apetag
+ \param name frame name for search and remove
+*/
+void
+apefrm_remove (apetag *mem_cnt, char *name)
+{
+ int n;
+ struct tag **mTag;
+
+ apefrm_add (mem_cnt, 0 , name, "delete me");
+
+ mTag = (mem_cnt->tag);
+
+ for (n = 0; (mem_cnt->countTag) > n; n++) {
+ if (strcasecmp (mTag[n]->name, name) == 0) {
+ mTag[n]->sizeValue=0;
+ return;
+ }
+ }
+
+ return;
+}
+
+/*
+ PL:Wypisuje na ekran wszystko to co potrzebne do debugu
+ :NON_USER:!!!
+*/
+/**
+ debug function print all tags exclude bin (print only size for bin)
+*/
+void
+libapetag_print_mem_cnt (apetag *mem_cnt)
+{
+ int n;
+ struct tag **mTag;
+
+ mTag = (mem_cnt->tag);
+ for (n = 0; (mem_cnt->countTag) > n; n++) {
+ if ( (mTag[n]->flags & ~ITEM_TEXT) == 0 ||
+ (mTag[n]->flags & ~ITEM_LINK) == 0 ) {
+ printf (">apetaglib>PRINT>>F=%li SN=%li SV=%li N[%s] V[%s]\n",
+ mTag[n]->flags,
+ (long) mTag[n]->sizeName, (long) mTag[n]->sizeValue,
+ mTag[n]->name, mTag[n]->value);
+ } else {
+ printf (">apetaglib>PRINT>>F=%li SN=%li SV=%li N[%s] V=BINARY\n",
+ mTag[n]->flags,
+ (long) mTag[n]->sizeName, (long) mTag[n]->sizeValue,
+ mTag[n]->name);
+ }
+ }
+
+ return;
+}
+
+/*
+ PL: alokuje pamiec dla glównej struktury %struct ape_mem_cnt%
+ PL: i zeruje wszystko co trzeba
+ PL: z jakiegos powodu (mojej niewiedzy) memset nie dziala
+ PL: a w sumie dziala czyszczac troche za duzo
+*/
+/**
+ \brief initialise new object #apetag and return
+ \return new initialised object #apetag
+*/
+apetag *
+apetag_init (void)
+{
+ apetag * mem_cnt;
+
+ mem_cnt = (apetag *) malloc (sizeof (apetag));
+ if (mem_cnt == NULL) {
+ PRINT_ERR ("ERROR->libapetag->apetag_init:malloc\n");
+ return NULL;
+ }
+ mem_cnt->memTagAlloc = 0;
+ mem_cnt->countTag = 0;
+ mem_cnt->filename = NULL;
+ mem_cnt->currentPosition = 0;
+ mem_cnt->tag = NULL;
+
+ return mem_cnt;
+}
+
+/*
+ PL: Czysci z sila wodospadu wszystko co zostalo do czyszczenia
+ PL: z %struct ape_mem_cnt% wlacznie, wcze¶niej to nie by³o jasne
+*/
+/**
+ \brief free all work
+ \param mem_cnt object #apetag
+*/
+void
+apetag_free (apetag *mem_cnt)
+{
+ int n;
+
+ for (n = mem_cnt->countTag-1; n >= 0; n--)
+ {
+ free (mem_cnt->tag[n]->value);
+ free (mem_cnt->tag[n]->name);
+ free (mem_cnt->tag[n]);
+ }
+ free (mem_cnt->tag);
+ free (mem_cnt);
+ mem_cnt = NULL;
+
+ return;
+
+}
+
+
+/**
+ \brief read id3v1 and add frames
+
+ read id3v1 and add frames to ape_mem.
+ Using #apefrm_add_norepleace
+
+ \param mem_cnt object #apetag
+ \param fp file pointer
+ \return 0 - OK else check #atl_return
+*/
+int
+readtag_id3v1_fp (apetag *mem_cnt, FILE * fp)
+{
+ struct _id3v1Tag m;
+
+ if (!is_id3v1(fp))
+ return 0; /* TODO:: 0 or no_id3v1*/
+
+ fseek(fp, -128, SEEK_END);
+ if (sizeof (struct _id3v1Tag)!=fread(&m, 1, sizeof (struct _id3v1Tag), fp)){
+ PRINT_ERR( "ERROR->libapetag->readtag_id3v1_fp:fread\n");
+ return ATL_FREAD;
+ }
+
+ libapetag_maloc_cont_text(mem_cnt, 0, 5, "Title", 30, m.title);
+ libapetag_maloc_cont_text(mem_cnt, 0, 6, "Artist", 30, m.artist);
+ libapetag_maloc_cont_text(mem_cnt, 0, 5, "Album", 30, m.album);
+ libapetag_maloc_cont_text(mem_cnt, 0, 4, "Year", 4, m.year);
+ if (m.comment[28] == 0 && m.comment[29] != 0) {
+ char track[20];
+ snprintf(track, 19, "%i", m.comment[29]);
+ libapetag_maloc_cont_text(mem_cnt, 0, 5, "Track", strlen(track), track);
+ libapetag_maloc_cont_text(mem_cnt, 0, 7, "Comment", 28, m.comment);
+ } else {
+ libapetag_maloc_cont_text(mem_cnt, 0, 7, "Comment", 30, m.comment);
+ }
+ libapetag_maloc_cont_text(mem_cnt, 0, 5, "Genre",
+ strlen(genre_no(m.genre)), genre_no(m.genre));
+
+ return 0;
+}
+
+/*
+ PL: wczytuje odpowiednie fra(mk)gi do pamieci w razie koniecznosci przyciecia
+ PL: dodaje "..." na koniec
+ PL: TODO genre
+
+ PL: macro COMPUTE_ID3V1_TAG
+*/
+#define COMPUTE_ID3V1_TAG(FramkA, TagNamE, SizE, TagValuE) \
+ FramkA = apefrm_get(mem_cnt, TagNamE); \
+ if (FramkA != NULL) { \
+ memcpy (TagValuE, FramkA->value, \
+ ((FramkA->sizeValue) > SizE) ? SizE : FramkA->sizeValue ); \
+ if ((FramkA->sizeValue) > SizE) { \
+ TagValuE[SizE-1]='.'; TagValuE[SizE-2]='.'; TagValuE[SizE-3]='.'; \
+ } \
+ }
+
+int
+make_id3v1_tag(apetag *mem_cnt, struct _id3v1Tag *m)
+{
+ struct tag * framka;
+
+ if (m == NULL)
+ return ATL_BADARG;
+
+ memset(m, '\0', sizeof(struct _id3v1Tag));
+
+ memcpy (m->magic,"TAG",3);
+ COMPUTE_ID3V1_TAG(framka, "Title", 30, m->title);
+ COMPUTE_ID3V1_TAG(framka, "Artist", 30, m->artist);
+ COMPUTE_ID3V1_TAG(framka, "Album", 30, m->album);
+ COMPUTE_ID3V1_TAG(framka, "Year", 4, m->year);
+
+ if ((framka=apefrm_get(mem_cnt, "Track"))!=NULL) {
+ m->comment[29]=(unsigned char) atoi(framka->value);
+ m->comment[28]='\0';
+ COMPUTE_ID3V1_TAG(framka, "Comment", 28, m->comment);
+ } else {
+ COMPUTE_ID3V1_TAG(framka, "Comment", 30, m->comment);
+ }
+
+ return 0;
+}
+
+/*
+ PL: silnik tego liba
+ PL: %filename% jest w tej chwili tylko dla id3v2 f..k
+ PL: %ape_mem_cnt% moze byc nie zainicjalizowany ale wtedy musi byc = NULL
+*/
+/**
+ \brief read file and add frames
+
+ \param mem_cnt object #apetag
+ \param filename
+ \param fp
+ \param flag
+ \return 0 - OK else check #atl_return
+*/
+int
+apetag_read_fp(apetag *mem_cnt, FILE * fp, char *filename, int flag)
+{
+ int id3v1 = 0;
+ int apeTag2 = 0;
+ unsigned char *buff;
+ struct _apetag_footer ape_footer;
+ size_t savedFilePosition, buffLength;
+
+ unsigned char *end;
+ unsigned long tagCount;
+ unsigned char *p;
+
+ savedFilePosition = ftell(fp);
+
+ id3v1 = is_id3v1(fp);
+
+ if (mem_cnt == NULL) {
+ PRINT_ERR( ">apetaglib>READ_FP>FATAL>apetag_init()\n");
+ fseek(fp, savedFilePosition, SEEK_SET);
+ return ATL_NOINIT;
+ }
+
+ fseek(fp, id3v1 ? -128 - sizeof (ape_footer) : -sizeof (ape_footer), SEEK_END);
+ if (sizeof (ape_footer) != fread(&ape_footer, 1, sizeof (ape_footer), fp)){
+ PRINT_ERR( "ERROR->libapetag->apetag_read_fp:fread1\n");
+ fseek(fp, savedFilePosition, SEEK_SET);
+ return ATL_FREAD;
+ }
+
+ if (!(flag & DONT_READ_TAG_APE) &&
+ (memcmp(ape_footer.id, "APETAGEX", sizeof (ape_footer.id)) == 0))
+ {
+ PRINT_D9(">apetaglib>READ_FP>>%s: ver %li len %li # %li fl %lx v1=%i v2=%i ape=%i[v%i]\n",
+ filename, ape2long(ape_footer.version),
+ ape2long(ape_footer.length),
+ ape2long(ape_footer.tagCount),
+ ape2long(ape_footer.flags),
+ is_id3v1 (fp), is_id3v2 (fp), is_ape (fp), is_ape_ver (fp));
+
+ apeTag2 = ape2long(ape_footer.version);
+ buffLength = is_ape(fp) + 128;
+ buff = (unsigned char *) malloc(buffLength);
+ if (buff == NULL) {
+ PRINT_ERR( "ERROR->libapetag->apetag_read_fp:malloc\n");
+ return ATL_MALOC;
+ }
+
+ fseek(fp, id3v1 ? -ape2long(ape_footer.length) -
+ 128 : -ape2long(ape_footer.length), SEEK_END);
+ memset(buff, 0, buffLength);
+ if (ape2long(ape_footer.length) != fread(buff, 1, ape2long(ape_footer.length), fp)) {
+ PRINT_ERR( "ERROR->libapetag->apetag_read_fp:fread2\n");
+ fseek(fp, savedFilePosition, SEEK_SET);
+ free(buff);
+ return ATL_FREAD;
+ }
+
+ tagCount = ape2long(ape_footer.tagCount);
+
+ end = buff + ape2long(ape_footer.length) - sizeof (ape_footer);
+
+ for (p = buff; p < end && tagCount--;) {
+ /* 8 = sizeof( sizeValue+flags ) */
+ unsigned long flag = ape2long(p + 4);
+ unsigned long sizeValue = ape2long(p);
+ unsigned long sizeName;
+ char *name = p + 8;
+ char *value;
+
+ sizeName = strlen(p + 8);
+ value = p + sizeName + 8 + 1;
+ if (apeTag2 == 1000 && value[sizeValue - 1] == '\0') {
+ libapetag_maloc_cont(mem_cnt, flag,
+ sizeName, name,
+ sizeValue - 1, value);
+ } else {
+ libapetag_maloc_cont(mem_cnt, flag,
+ sizeName, name,
+ sizeValue, value);
+ }
+ p += (sizeName + sizeValue + 8 + 1);
+ }
+
+ free(buff);
+ } else { /* if no ape tag */
+ PRINT_D5(">apetaglib>READ_FP>>%s: v1=%i v2=%i ape=%i[v%i]\n",
+ filename, is_id3v1 (fp), is_id3v2 (fp), is_ape (fp), is_ape_ver (fp));
+ }
+
+#ifdef ID3V2_READ
+ if (!(flag & DONT_READ_TAG_ID3V2) && filename!=NULL && is_id3v2(fp)!=0) {
+ readtag_id3v2(mem_cnt, filename);
+ }
+#endif
+ if (!(flag & DONT_READ_TAG_ID3V1) && (id3v1)) {
+ readtag_id3v1_fp(mem_cnt, fp);
+ }
+
+ fseek(fp, savedFilePosition, SEEK_SET);
+ return 0;
+}
+
+/*
+ PL: wraper na apetag_read_fp
+ PL: otwiera plik wczytuje co trzeba i zamyka
+ PL: dobre do wczytywania informacji ktore sa potrzebne pozniej bez fatygi otwierania pliku
+*/
+/**
+ \brief read file and add frames
+
+ \param mem_cnt object #apetag
+ \param filename file name
+ \param flag
+ \return 0 - OK else check #atl_return
+*/
+int
+apetag_read (apetag *mem_cnt, char *filename,int flag)
+{
+ FILE *fp;
+
+ if (mem_cnt==NULL) {
+ PRINT_ERR(">apetaglib>READ>FATAL>apetag_init()\n");
+ return ATL_NOINIT;
+ }
+
+ fp = fopen (filename, "rb");
+ if (fp == NULL)
+ return ATL_FOPEN;
+
+ apetag_read_fp (mem_cnt, fp, filename,flag);
+
+ fclose (fp);
+
+ return 0;
+}
+
+/*
+ PL: Funkcja dla qsorta ze specjalnymi wyjatkami
+ PL: uzywana w apetag_save
+ :NON_USER:!!!
+*/
+static int
+libapetag_qsort (struct tag **a, struct tag **b)
+{
+ char *sorting[] = { "Artist", "Year", "Album", "Track", "Title", "Genre", NULL, NULL };
+ int n, m;
+
+ if (!a || !b || !*a || !*b) {
+ PRINT_ERR ("ERROR->libapetag->apetag_qsort:*a ||*b = NULL : FATAL PLEASE REPORT!!!\n");
+ return 0;
+ }
+ for (n = 0; sorting[n] != NULL; n++) {
+ if (strcasecmp ((*a)->name, sorting[n]) == 0)
+ break;
+ }
+ if (sorting[n] == NULL)
+ n += (*a)->sizeValue + 1; /* n = max entries of sorting + size of tag */
+
+ for (m = 0; sorting[m] != NULL; m++) {
+ if (strcasecmp ((*b)->name, sorting[m]) == 0)
+ break;
+ }
+ if (sorting[m] == NULL)
+ m += (*b)->sizeValue + 1; /* m = max entries */
+
+ if (n == m)
+ return 0;
+ if (n > m)
+ return 1;
+ else
+ return -1;
+}
+
+#ifdef USE_CHSIZE
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <io.h>
+/* on winblows we don't have truncate (and ftruncate) but have chsize() */
+void
+truncate (char *filename, size_t fileSize)
+{
+ int handle;
+
+ handle = open (filename, O_RDWR | O_CREAT,
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+ if (handle != -1) {
+ if (chsize (handle, fileSize) != 0) {
+ PRINT_ERR ("Error truncatng file\n");
+ }
+ close (handle);
+ }
+
+}
+
+#endif
+
+/*
+ PL: domyslne %flag% = APE_TAG_V2 + SAVE_NEW_OLD_APE_TAG
+*/
+/**
+ \brief save apetag to file
+
+ \param filename file name
+ \param mem_cnt object #apetag
+ \param flag flags for read/save
+ \return 0 - OK else check #atl_return
+ \warning for ape tag v 1 you must add frames in iso-1
+ for v 2 this must be in utf-8
+ \todo PL: v9 sprawdzac flagi w footer i na tej podstawie zmieniac skipBytes
+ bez domniemywania ze v2 ma zawsze oba
+
+*/
+int
+apetag_save (char *filename, apetag *mem_cnt, int flag)
+{
+ FILE *fp;
+ struct _id3v1Tag id3v1_tag;
+ int id3v1;
+ int apeTag, saveApe2;
+ int tagCount = 0;
+ int realCountTag = 0;
+ struct _apetag_footer ape_footer;
+ long skipBytes;
+ unsigned char *buff, *p;
+ struct tag **mTag;
+ size_t tagSSize = 32;
+ int n;
+ char temp[4];
+
+ if (mem_cnt==NULL) {
+ PRINT_ERR("ERROR->apetaglib>apetag_save::apetag_init()\n");
+ return ATL_NOINIT;
+ }
+
+ fp = fopen (filename, "rb+");
+ if (fp == NULL) {
+ PRINT_ERR ( "ERROR->apetaglib->apetag_save::fopen (r+)\n");
+ return ATL_FOPEN;
+ }
+
+ skipBytes = 0;
+ id3v1 = is_id3v1 (fp);
+ apeTag = is_ape (fp);
+ saveApe2 = !(flag & APE_TAG_V1); // (flag & APE_TAG_V2) ? 1 : (flag & APE_TAG_V1);
+
+ if (id3v1) {
+ fseek (fp, -128, SEEK_END);
+ fread (&id3v1_tag, 1, sizeof (struct _id3v1Tag), fp);
+ skipBytes += id3v1;
+ }
+ skipBytes += apeTag;
+
+ if (!(flag & SAVE_NEW_APE_TAG)) {
+ apetag_read_fp (mem_cnt, fp, filename, flag);
+ }
+
+ mTag = (mem_cnt->tag);
+ qsort( mTag , mem_cnt->countTag , sizeof(struct tag *),
+ (int (*)(const void *,const void *))libapetag_qsort);
+
+ for (n = 0; (mem_cnt->countTag) > n; n++) {
+ if (mTag[n]->sizeValue != 0) {
+ tagSSize += ((long) mTag[n]->sizeName + (long) mTag[n]->sizeValue);
+ tagSSize += 4 + 4 + 1 + (saveApe2 ? 0 : 1); // flag & sizeValue & \0
+ realCountTag++; // count not deleted tag (exl. not real)
+ }
+ }
+ if (!!(flag & SAVE_CREATE_ID3V1_TAG )) {
+ make_id3v1_tag(mem_cnt, &id3v1_tag);
+ tagSSize += 128;
+ }
+ //PRINT_D4 (">apetaglib>SAVE>>: size %li %i %i %i\n", tagSSize,
+ // mem_cnt->countTag, flag, saveApe2);
+ buff = (unsigned char *) malloc (tagSSize + (saveApe2 ? 32 : 0));
+ p = buff;
+
+ if (buff == NULL) {
+ PRINT_ERR ("ERROR->libapetag->apetag_save::malloc");
+ return ATL_MALOC;
+ }
+ memset (ape_footer.id, 0, sizeof (ape_footer));
+ memcpy (ape_footer.id, "APETAGEX", sizeof (ape_footer.id));
+ long2ape (ape_footer.flags, 0l);
+ if (!!(flag & SAVE_CREATE_ID3V1_TAG ))
+ long2ape (ape_footer.length, tagSSize-128);
+ else
+ long2ape (ape_footer.length, tagSSize);
+ //long2ape(ape_footer.tagCount, mem_cnt->countTag);
+ long2ape(ape_footer.tagCount, realCountTag);
+ long2ape (ape_footer.version, (saveApe2 ? 2000 : 1000));
+ if (saveApe2) {
+ long2ape (ape_footer.flags, HEADER_THIS_IS + HEADER_IS + FOOTER_IS);
+ memcpy (p, ape_footer.id, sizeof (ape_footer));
+ p += sizeof (ape_footer);
+ }
+
+ mTag = (mem_cnt->tag);
+ for (n = 0; (mem_cnt->countTag) > n; n++) {
+ if (saveApe2) {
+ long2ape (temp, mTag[n]->sizeValue);
+ } else {
+ /* TODO:convert UTF8 to ASCII mTag[n]->value */
+ long2ape (temp, (mTag[n]->sizeValue) + 1);
+ }
+
+ if (mTag[n]->sizeValue != 0) {
+ memcpy (p, temp, 4);
+ p += 4;
+ long2ape (temp, (saveApe2!=0) ? mTag[n]->flags : 0l );
+ memcpy (p, temp, 4);
+ p += 4;
+
+ memcpy (p, mTag[n]->name, mTag[n]->sizeName);
+ p += mTag[n]->sizeName;
+ memcpy (p, "\0", 1);
+ p++;
+ memcpy (p, mTag[n]->value, mTag[n]->sizeValue);
+ p += mTag[n]->sizeValue;
+
+ if (!saveApe2) {
+ memcpy (p, "\0", 1);
+ p++;
+ }
+ tagCount++;
+ }
+ } /* for */
+
+ if (saveApe2)
+ long2ape (ape_footer.flags, FOOTER_THIS_IS + FOOTER_IS + HEADER_IS);
+
+ memcpy (p, ape_footer.id, sizeof (ape_footer));
+ p += sizeof (ape_footer);
+
+ if (!!(flag & SAVE_CREATE_ID3V1_TAG )) {
+ memcpy (p, &id3v1_tag , sizeof (struct _id3v1Tag));
+ }
+
+ /* write tag to file and truncate */
+ if (!(flag & SAVE_FAKE_SAVE)) {
+ size_t fileSize;
+ size_t newFileSize;
+ size_t writedBytes;
+
+ fseek (fp, 0, SEEK_END);
+ fileSize = ftell (fp);
+ fseek (fp, fileSize - skipBytes, SEEK_SET);
+ if (tagCount != 0) {
+ newFileSize = (fileSize - skipBytes + tagSSize + (saveApe2 ? 32 : 0));
+ writedBytes = fwrite (buff, 1, tagSSize + (saveApe2 ? 32 : 0), fp);
+ if (writedBytes != tagSSize + (saveApe2 ? 32 : 0)) {
+ PRINT_ERR ("FATAL_ERROR->libapetag->apetag_save::fwrite [data lost]");
+ fclose (fp);
+ free (buff);
+ return ATL_FWRITE;
+ }
+ fseek (fp, newFileSize, SEEK_SET);
+ PRINT_D4 (">apetaglib>SAVE>> write:%i == tag:%i file: %i->%i\n",
+ writedBytes, tagSSize + (saveApe2 ? 32 : 0), fileSize, newFileSize);
+ } else {
+ newFileSize = (fileSize - skipBytes);
+ }
+ fflush (fp);
+ fclose (fp);
+ /* ftruncate don't work */
+ truncate (filename, newFileSize);
+ } else { /* !!SAVE_FAKE_SAVE */
+ libapetag_print_mem_cnt (mem_cnt);
+ }
+ free (buff);
+
+ return 0;
+}
diff --git a/src/libapetag/apetaglib.h b/src/libapetag/apetaglib.h
new file mode 100755
index 0000000..15ec6e9
--- /dev/null
+++ b/src/libapetag/apetaglib.h
@@ -0,0 +1,277 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: apetaglib.h,v 1.30 2003/04/16 21:06:27 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifndef _APETAGLIB_H
+#define _APETAGLIB_H
+
+/** \file
+ \brief All function related to apetag
+*/
+
+// Uncomment this line to enable debug messages
+//#define APE_TAG_DEBUG
+
+#ifdef __WATCOMC__ // Watcom don't like || in ifdef and use #if define() || define()
+#define USE_CHSIZE
+#define strcasecmp(a,b) stricmp(a,b)
+#define index(a,b) strchr(a,b)
+#endif
+
+#ifdef __WIN32__
+#define USE_CHSIZE
+#define strcasecmp(a,b) stricmp(a,b)
+#define index(a,b) strchr(a,b)
+#define S_IRGRP S_IRUSR
+#define S_IWGRP S_IWUSR
+#endif
+
+/**\{*/
+#ifdef APE_TAG_DEBUG
+#define PRINT_D(x) fprintf( stdout, x )
+#define PRINT_D1(x,a) fprintf( stdout, x, a )
+#define PRINT_D2(x,a,b) fprintf( stdout, x, a,b)
+#define PRINT_D3(x,a,b,c) fprintf( stdout, x, a,b,c)
+#define PRINT_D4(x,a,b,c,d) fprintf( stdout, x, a,b,c,d)
+#define PRINT_D5(x,a,b,c,d,e) fprintf( stdout, x, a,b,c,d,e)
+#define PRINT_D6(x,a,b,c,d,e,f) fprintf( stdout, x, a,b,c,d,e,f)
+#define PRINT_D7(x,a,b,c,d,e,f,g) fprintf( stdout, x, a,b,c,d,e,f,g)
+#define PRINT_D8(x,a,b,c,d,e,f,g,i) fprintf( stdout, x, a,b,c,d,e,f,g,i)
+#define PRINT_D9(x,a,b,c,d,e,f,g,i,j) fprintf( stdout, x ,a,b,c,d,e,f,g,i,j )
+#else
+#define PRINT_D(x)
+#define PRINT_D1(x,a)
+#define PRINT_D2(x,a,b)
+#define PRINT_D3(x,a,b,c)
+#define PRINT_D4(x,a,b,c,d)
+#define PRINT_D5(x,a,b,c,d,e)
+#define PRINT_D6(x,a,b,c,d,e,f)
+#define PRINT_D7(x,a,b,c,d,e,f,g)
+#define PRINT_D8(x,a,b,c,d,e,f,g,i)
+#define PRINT_D9(x,a,b,c,d,e,f,g,i,j)
+#endif /*APE_TAG_DEBUG*/
+
+#define PRINT_ERR(x) fprintf( stderr, x )
+#define PRINT_ERR1(x, a) fprintf( stderr, x ,a)
+/**\}*/
+
+/** version of apetaglib defined in one place */
+#define APETAGLIB_VERSION "0.5pre1"
+
+
+/*from winamp mpc plugin*/
+/** \name frame names */
+/**\{*/
+#define APE_TAG_FIELD_TITLE "Title"
+#define APE_TAG_FIELD_SUBTITLE "Subtitle"
+#define APE_TAG_FIELD_ARTIST "Artist"
+#define APE_TAG_FIELD_ALBUM "Album"
+#define APE_TAG_FIELD_DEBUTALBUM "Debut Album"
+#define APE_TAG_FIELD_PUBLISHER "Publisher"
+#define APE_TAG_FIELD_CONDUCTOR "Conductor"
+#define APE_TAG_FIELD_COMPOSER "Composer"
+#define APE_TAG_FIELD_COMMENT "Comment"
+#define APE_TAG_FIELD_YEAR "Year"
+#define APE_TAG_FIELD_RECORDDATE "Record Date"
+#define APE_TAG_FIELD_RECORDLOCATION "Record Location"
+#define APE_TAG_FIELD_TRACK "Track"
+#define APE_TAG_FIELD_GENRE "Genre"
+#define APE_TAG_FIELD_COVER_ART_FRONT "Cover Art (front)"
+#define APE_TAG_FIELD_NOTES "Notes"
+#define APE_TAG_FIELD_LYRICS "Lyrics"
+#define APE_TAG_FIELD_COPYRIGHT "Copyright"
+#define APE_TAG_FIELD_PUBLICATIONRIGHT "Publicationright"
+#define APE_TAG_FIELD_FILE "File"
+#define APE_TAG_FIELD_MEDIA "Media"
+#define APE_TAG_FIELD_EANUPC "EAN/UPC"
+#define APE_TAG_FIELD_ISRC "ISRC"
+#define APE_TAG_FIELD_RELATED_URL "Related"
+#define APE_TAG_FIELD_ABSTRACT_URL "Abstract"
+#define APE_TAG_FIELD_BIBLIOGRAPHY_URL "Bibliography"
+#define APE_TAG_FIELD_BUY_URL "Buy URL"
+#define APE_TAG_FIELD_ARTIST_URL "Artist URL"
+#define APE_TAG_FIELD_PUBLISHER_URL "Publisher URL"
+#define APE_TAG_FIELD_FILE_URL "File URL"
+#define APE_TAG_FIELD_COPYRIGHT_URL "Copyright URL"
+#define APE_TAG_FIELD_INDEX "Index"
+#define APE_TAG_FIELD_INTROPLAY "Introplay"
+#define APE_TAG_FIELD_MJ_METADATA "Media Jukebox Metadata"
+#define APE_TAG_FIELD_DUMMY "Dummy"
+/**\}*/
+
+#define APE_TAG_LIB_FIRST "\02" /**< is using by #apefrm_get to get first frame */
+#define APE_TAG_LIB_NEXT "\03" /**< is using by #apefrm_get to get next frame you may check all frames this way */
+#define APE_TAG_LIB_DEL_ALL "\04" /**< is using by #apefrm_remove_real for removing all frames */
+
+
+/**
+ \name #apetag_save flags
+ \note default is #APE_TAG_V2 + #SAVE_NEW_OLD_APE_TAG + #SAVE_REMOVE_ID3V1
+*/
+/**\{*/
+#define APE_TAG_V1 (1 << 1)
+#define APE_TAG_V2 (1 << 2)
+#define SAVE_NEW_APE_TAG (1 << 3)
+#define SAVE_NEW_OLD_APE_TAG (1 << 4)
+#define SAVE_REMOVE_ID3V1 (1 << 5)
+#define SAVE_CREATE_ID3V1_TAG (1 << 6)
+#define SAVE_FAKE_SAVE (1 << 7)
+/* apetag_read(_fp) flags - default read all (ape,id3v1,id3v2(if compiled)) */
+#define DONT_READ_TAG_APE (1 << 8)
+#define DONT_READ_TAG_ID3V1 (1 << 9)
+#define DONT_READ_TAG_ID3V2 (1 << 10)
+/**\}*/
+
+
+/**
+ \name #atl_return
+ \brief return codes from all functions
+ \{
+*/
+#define ATL_OK 0 /**< not using :) */
+#define ATL_FOPEN 1 /**< can't open file */
+#define ATL_FREAD 2 /**< can't read from file */
+#define ATL_FWRITE 3 /**< can't write to file (written bytes != bytes to write) */
+#define ATL_MALOC 4 /**< can't allocate memory */
+#define ATL_BADARG 5 /**< bad function argument */
+#define ATL_NOINIT 6 /**< not inited struct by apetag_init */
+/** \} */
+
+/**
+ \struct tag
+ \brief tag structure
+
+ i you get this <b>don't</b> change anything. copy all values/strings
+*/
+struct tag
+{
+ char *name; /**< name of tag */
+ char *value; /**< value of tag */
+ size_t sizeName; /**< size of name in tag */
+ size_t sizeValue; /**< size of value in tag */
+ unsigned long flags; /**< flags of tag */
+};
+
+
+/**
+ object apetag used to store information about tag.
+ main object store **#tag , number of frames, current position for
+ APE_TAG_LIB_NEXT, etc
+ \brief object apetag used to store information about tag
+**/
+typedef struct _ape_mem_cnt apetag;
+
+
+/*
+ * function:
+ * apetag_*: for load/save/init file and structure
+ * apefrm_*: for add del edit one (or more)
+ * frame(, field, entry) in tag
+ */
+
+/* read file and add frames */
+int
+apetag_read (apetag *mem_cnt, char *filename, int flag) ;
+
+/* read file and add frames */
+int
+apetag_read_fp (apetag *mem_cnt, FILE * fp, char *filename, int flag) ;
+
+/* initialise new object #apetag and return */
+apetag *
+apetag_init (void) ;
+
+/* free #apetag object */
+void
+apetag_free (apetag *mem_cnt) ;
+
+/* save apetag to file */
+int
+apetag_save (char *filename, apetag *mem_cnt, int flag) ;
+
+
+/* Add text frame */
+int
+apefrm_add (apetag *mem_cnt, unsigned long flags, char *name, char *value) ;
+
+/* add binary frame */
+int
+apefrm_add_bin (apetag *mem_cnt, unsigned long flags,
+ long sizeName, char *name, long sizeValue, char *value);
+
+/* add frame if other (the same name) no exist */
+int
+apefrm_add_noreplace (apetag *mem_cnt, unsigned long flags, char *name, char *value) ;
+
+/* search in apetag for name and return tag */
+struct tag *
+apefrm_get (apetag *mem_cnt, char *name) ;
+
+/* search in apetag for name and return string */
+char *
+apefrm_getstr (apetag *mem_cnt, char *name) ;
+
+/* remove frame from memory */
+void
+apefrm_remove_real (apetag *mem_cnt, char *name) ;
+
+
+/**
+ \def apefrm_fake_remove(mem_cnt,name)
+ \brief set frame to remove
+ \deprecated remove in 0.5
+*/
+#define apefrm_fake_remove(mem_cnt,name) apefrm_remove(mem_cnt,name)
+
+/* set frame to remove */
+void
+apefrm_remove (apetag *mem_cnt, char *name);
+
+/* read id3v1 and add frames */
+int
+readtag_id3v1_fp (apetag *mem_cnt, FILE * fp) ;
+
+/** \name flags in frames and headers */
+/**\{*/
+//================================
+#define HEADER_IS 0x80000000
+#define HEADER_NOT 0x00000000
+#define HEADER_THIS_IS 0x20000000
+//================================
+#define FOOTER_IS 0x00000000
+#define FOOTER_NOT 0x40000000
+#define FOOTER_THIS_IS 0x00000000
+//================================
+#define ITEM_TEXT 0x00000000
+#define ITEM_BIN 0x00000002
+#define ITEM_LINK 0x00000004
+#define ITEM_URL 0x00000004 // for compability ITEM_LINK
+//================================
+#define TAG_RW 0x00000000
+#define TAG_RO 0x00000001
+/**\}*/
+
+/* debug function print all tags exclude bin (print only size for bin) */
+void
+libapetag_print_mem_cnt (apetag *mem_cnt);
+
+#endif /* _APETAGLIB_H */
diff --git a/src/libapetag/id3v2_read.c b/src/libapetag/id3v2_read.c
new file mode 100755
index 0000000..f4c8a64
--- /dev/null
+++ b/src/libapetag/id3v2_read.c
@@ -0,0 +1,385 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: id3v2_read.c,v 1.16 2003/04/13 11:24:10 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifdef ID3V2_READ
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <stdarg.h>
+#include <string.h>
+#include <limits.h>
+#include <assert.h>
+#include <math.h>
+#ifndef __BORLANDC__
+# include <unistd.h>
+#endif
+
+#include "apetaglib.h"
+#include <id3.h>
+
+struct id3vtwo2ape {
+ ID3_FrameID frame; //ID3FID_ALBUM etc
+ ID3_FieldID field_type; //ID3FN_TEXT etc
+ const char *APEName;
+ int special; // 0-no 1-???
+};
+
+#define APETAG_TYPE_COMMENT 1
+#define APETAG_TYPE_USER 2
+#define APETAG_TYPE_GENRE 3
+
+
+struct id3vtwo2ape convert[] = {
+ {ID3FID_ALBUM, ID3FN_TEXT, APE_TAG_FIELD_ALBUM,0},
+ {ID3FID_BAND, ID3FN_TEXT, "Band",0},
+ {ID3FID_BPM, ID3FN_TEXT, "BPM",0},
+ {ID3FID_COMPOSER, ID3FN_TEXT, APE_TAG_FIELD_COMPOSER,0},
+ {ID3FID_CONDUCTOR, ID3FN_TEXT, APE_TAG_FIELD_CONDUCTOR,0},
+ {ID3FID_CONTENTGROUP, ID3FN_TEXT, "Content Group",0},
+ {ID3FID_COPYRIGHT, ID3FN_TEXT, APE_TAG_FIELD_COPYRIGHT,0},
+ {ID3FID_DATE, ID3FN_TEXT, APE_TAG_FIELD_RECORDDATE,0},
+ {ID3FID_ENCODEDBY, ID3FN_TEXT, "Encoded By",0},
+ {ID3FID_ENCODERSETTINGS, ID3FN_TEXT, "Encoder",0},
+ {ID3FID_FILEOWNER, ID3FN_TEXT, "File Owner",0},
+ {ID3FID_FILETYPE, ID3FN_TEXT, "File Type",0},
+ {ID3FID_INITIALKEY, ID3FN_TEXT, "Initial Key",0},
+ {ID3FID_ISRC, ID3FN_TEXT, APE_TAG_FIELD_ISRC,0},
+ {ID3FID_LANGUAGE, ID3FN_TEXT, "Language",0},
+ {ID3FID_LEADARTIST, ID3FN_TEXT, APE_TAG_FIELD_ARTIST,0},
+ {ID3FID_LYRICIST, ID3FN_TEXT, "Lyricist",0},
+ {ID3FID_MEDIATYPE, ID3FN_TEXT, APE_TAG_FIELD_MEDIA,0},
+ {ID3FID_MIXARTIST, ID3FN_TEXT, "Mix Artist",0},
+ {ID3FID_NETRADIOOWNER, ID3FN_TEXT, "Internet Radio Owner",0},
+ {ID3FID_NETRADIOSTATION, ID3FN_TEXT, "Internet Radio Station",0},
+ {ID3FID_ORIGALBUM, ID3FN_TEXT, "Original Album",0},
+ {ID3FID_ORIGARTIST, ID3FN_TEXT, "Original Artist",0},
+ {ID3FID_ORIGFILENAME, ID3FN_TEXT, "Original Filename",0},
+ {ID3FID_ORIGLYRICIST, ID3FN_TEXT, "Original Lyricist",0},
+ {ID3FID_ORIGYEAR, ID3FN_TEXT, "Original Artist",0},
+ {ID3FID_PARTINSET, ID3FN_TEXT, "Part",0},
+ {ID3FID_PLAYLISTDELAY, ID3FN_TEXT, "Playlist Delay",0},
+ {ID3FID_PUBLISHER, ID3FN_TEXT, APE_TAG_FIELD_PUBLISHER,0},
+ {ID3FID_RECORDINGDATES, ID3FN_TEXT, APE_TAG_FIELD_RECORDDATE,0},
+ {ID3FID_SIZE, ID3FN_TEXT, "Size",0},
+// {ID3FID_SONGLEN, ID3FN_TEXT, "Song Length",0}, // don't like this in apetag
+ {ID3FID_SUBTITLE, ID3FN_TEXT, APE_TAG_FIELD_SUBTITLE,0},
+ {ID3FID_TIME, ID3FN_TEXT, "Time",0},
+ {ID3FID_TITLE, ID3FN_TEXT, APE_TAG_FIELD_TITLE,0},
+ {ID3FID_TRACKNUM, ID3FN_TEXT, APE_TAG_FIELD_TRACK,0},
+ {ID3FID_YEAR, ID3FN_TEXT, APE_TAG_FIELD_YEAR,0},
+
+ {ID3FID_WWWAUDIOFILE, ID3FN_URL , APE_TAG_FIELD_FILE_URL,0},
+ {ID3FID_WWWARTIST, ID3FN_URL , APE_TAG_FIELD_ARTIST_URL,0},
+ {ID3FID_WWWAUDIOSOURCE, ID3FN_URL , "Source URL",0},
+ {ID3FID_WWWCOMMERCIALINFO, ID3FN_URL , APE_TAG_FIELD_BUY_URL,0},
+ {ID3FID_WWWCOPYRIGHT, ID3FN_URL , APE_TAG_FIELD_COPYRIGHT_URL,0},
+ {ID3FID_WWWPUBLISHER, ID3FN_URL , APE_TAG_FIELD_PUBLISHER_URL,0},
+ {ID3FID_WWWPAYMENT, ID3FN_URL , "Payment",0},
+ {ID3FID_WWWRADIOPAGE, ID3FN_URL , "Web Radio URL",0},
+
+ {ID3FID_COMMENT, ID3FN_TEXT, APE_TAG_FIELD_COMMENT, APETAG_TYPE_COMMENT},
+ {ID3FID_UNSYNCEDLYRICS, ID3FN_TEXT, APE_TAG_FIELD_LYRICS, APETAG_TYPE_COMMENT},
+ {ID3FID_USERTEXT, ID3FN_TEXT, "dummy", APETAG_TYPE_USER},
+ {ID3FID_WWWUSER, ID3FN_URL , APE_TAG_FIELD_RELATED_URL, APETAG_TYPE_USER},
+ {ID3FID_CONTENTTYPE, ID3FN_TEXT, APE_TAG_FIELD_GENRE, APETAG_TYPE_GENRE},
+
+
+
+// {ID3FID_PICTURE, ID3FN_DATA, ,0},
+// {ID3FID_SYNCEDLYRICS, ID3FN_DATA, APE_TAG_FIELD_LYRICS,0},
+// {ID3FID_INVOLVEDPEOPLE, ID3FN_DATA, "Involved People",0}, // type ?
+// {ID3FID_CDID, ID3FN_DATA, "CDID",0}, // ???
+// {ID3FID_TERMSOFUSE, ID3FN_TEXT, "Terms Of Use",0}, // type ?
+};
+
+int
+libapetag_convertID3v2toAPE(const ID3Frame * frame,
+ char **item_, size_t *item_len,
+ char **value_, size_t *value_len,
+ unsigned long *flags);
+
+
+/*
+ use ALOCATE to alocate dynamic memory for frame value
+ this check size of frame and alocate mem and zeroed this mem
+*/
+
+#define ALOCATE(FielD,ValuE,SizeValuE) \
+ SizeValuE = ID3Field_Size(FielD); \
+ ValuE = (SizeValuE!=0) ? (char *) malloc((SizeValuE)+1) : NULL ; \
+ if ((SizeValuE)!=0) ValuE[0] = '\0';
+/*
+ ALOCATE_ITEM its the same ase ALOCATE but for frame name (Item)
+*/
+#define ALOCATE_ITEM(IteM, APENamE, ItemSizE) \
+ ItemSizE = strlen(APENamE) ; \
+ IteM = (ItemSizE!=0) ? (char *) malloc((ItemSizE)+1) : NULL ; \
+ if ((ItemSizE)!=0) IteM[0] = '\0';
+
+int
+libapetag_convertID3v2toAPE (const ID3Frame * frame,
+ char **item_, size_t * item_len,
+ char **value_, size_t * value_len,
+ unsigned long *flags)
+{
+ ID3Field *text;
+ ID3Field *desc;
+ ID3Field *url;
+// ID3Field *bin; // will be implemented some day
+
+ char *item = NULL;
+ char *value = NULL;
+
+ ID3_FrameID frameid = ID3Frame_GetID (frame);
+ unsigned int i;
+
+ *flags = ITEM_TEXT;
+
+ for (i = 0; i < sizeof (convert) / sizeof (struct id3vtwo2ape); i++)
+ if (frameid == convert[i].frame)
+ break;
+
+
+ if (convert[i].field_type == ID3FN_TEXT) {
+ switch (convert[i].special) {
+ case APETAG_TYPE_COMMENT: /* Comments and unsynced lyrics */
+ if ((text = ID3Frame_GetField(frame, ID3FN_TEXT)) != NULL) {
+ ALOCATE(text, value, *value_len);
+ ID3Field_GetASCII(text, value, *value_len);
+ }
+ ALOCATE_ITEM(item, convert[i].APEName, *item_len);
+ strncpy(item, convert[i].APEName, *item_len);
+ item[*item_len]='\0';
+ //break;
+ if ((text = ID3Frame_GetField (frame, ID3FN_DESCRIPTION)) != NULL) {
+ char *value_ds=NULL;
+ int value_len2;
+ if (ID3Field_Size(text) != 0) {
+ ALOCATE(text, value_ds, value_len2);
+ ID3Field_GetASCII(text, value_ds, value_len2);
+ if ( strcmp(value_ds, STR_V1_COMMENT_DESC) == 0 ) {
+ value_len2 = 0;
+ value[0]='\0';
+ } else {
+ item = (char *) realloc( item, (*item_len) + value_len2 + 3);
+ item[(*item_len)++]='-'; item[(*item_len)]='\0';
+ strncpy(item + (*item_len),value_ds ,(value_len2 + 1));
+ (*item_len)+=value_len2;
+ }
+ free(value_ds);
+ }
+ }
+ break;
+
+ case APETAG_TYPE_USER: /* User texts */
+ if ((text = ID3Frame_GetField(frame, ID3FN_TEXT)) != NULL) {
+ ALOCATE(text, value, *value_len);
+ ID3Field_GetASCII(text, value, *value_len);
+ }
+ if ((desc = ID3Frame_GetField(frame, ID3FN_DESCRIPTION)) != NULL) {
+ ALOCATE(desc, item, *item_len);
+ ID3Field_GetASCII(desc, item, *item_len);
+ }
+ break;
+
+ case APETAG_TYPE_GENRE: /* genre */
+ if ((text = ID3Frame_GetField(frame, ID3FN_TEXT)) != NULL) {
+ char *p;
+ int j;
+ ALOCATE(text, value, *value_len);
+ ID3Field_GetASCII(text, value, *value_len);
+ ALOCATE_ITEM(item, convert[i].APEName, *item_len);
+ strncpy(item, convert[i].APEName, *item_len);
+ value[*value_len]='\0';
+ p = value;
+ if (*p == '(') {
+ p++;
+ while (*p && (*p >= '0' && *p <= '9'))
+ p++;
+ if (*p && *p == ')') {
+ p++;
+ } else {
+ p = value;
+ }
+ *value_len -= (p-value); // corect lenght of frame
+ if (*p != '\0') { // copy in place
+ for (j = 0; *p != '\0'; j++) {
+ value[j] = *p;
+ p++;
+ }
+ value[j] = '\0';
+ }
+ }
+ }
+ break;
+
+ default: /* normal text tags */
+ if ((text = ID3Frame_GetField(frame, ID3FN_TEXT)) != NULL) {
+ ALOCATE(text, value, *value_len);
+ ID3Field_GetASCII(text, value, *value_len);
+ ALOCATE_ITEM(item, convert[i].APEName, *item_len);
+ strncpy(item, convert[i].APEName, *item_len);
+ }
+ break;
+
+ } /* <- switch( convert[i].special ) */
+
+ item[*item_len]='\0';
+ value[*value_len]='\0';
+ } else
+ if (convert[i].field_type == ID3FN_URL) {
+ *flags = ITEM_URL;
+ /* TODO: set ape_tag_URL in flag */
+ /* user url */
+ if (convert[i].special == APETAG_TYPE_USER) {
+ if ((url = ID3Frame_GetField(frame, ID3FN_URL)) != NULL) {
+ ALOCATE(url, value, *value_len);
+ ID3Field_GetASCII(url, value, *value_len);
+ }
+ if ((desc = ID3Frame_GetField(frame, ID3FN_DESCRIPTION)) != NULL) {
+ ALOCATE(desc, item, *item_len);
+ ID3Field_GetASCII(desc, item, *item_len);
+ }
+ /* normal url */
+ } else {
+ if ((url = ID3Frame_GetField (frame, ID3FN_URL)) != NULL) {
+ ALOCATE(url, value, *value_len);
+ ID3Field_GetASCII(url, value, *value_len);
+ ALOCATE_ITEM(item, convert[i].APEName, *item_len);
+ strncpy(item, convert[i].APEName, *item_len);
+ }
+ }
+
+ item[*item_len]='\0';
+ value[*value_len]='\0';
+ } else { //convert[i].field_type
+ item = NULL;
+ value = NULL;
+ PRINT_D (">id3v2_read>other\n");
+ }
+ *item_ = item;
+ *value_ = value;
+
+ if (!(value==NULL || (*value_len)==0) && value[(*value_len)-1]=='\0')
+ (*value_len)--;
+
+ return 0;
+}
+
+// Reads ID3v2.x tag
+// idea of this come from "tag" by Case <case@mobiili.net>
+int readtag_id3v2 ( apetag *mem_cnt, char* fileName )
+{
+ ID3Tag* tag;
+ ID3Frame* frame;
+ ID3TagIterator* iter;
+ char* item = NULL;
+ int itemSize;
+ char* value = NULL;
+ int valueSize;
+ unsigned long flags;
+
+ // first - check of id3tag v2 and init
+ if ( (tag = ID3Tag_New ()) == NULL )
+ return 1;
+ // on some casses its weerrryyy slooowwwwlyyy 65k file take 2-5 sec
+ ID3Tag_LinkWithFlags ( tag, fileName, ID3TT_ID3V2 );
+
+ if ( tag == NULL ) {
+ ID3Tag_Delete (tag);
+ return 0;
+ }
+
+ if ( !ID3Tag_HasTagType ( tag, ID3TT_ID3V2 ) ) {
+ ID3Tag_Delete (tag);
+ return 0;
+ }
+
+ if ( (iter = ID3Tag_CreateIterator (tag)) == NULL ) {
+ ID3Tag_Delete (tag);
+ return 0;
+ }
+
+ while ( (frame = ID3TagIterator_GetNext (iter)) != NULL ) {
+
+ libapetag_convertID3v2toAPE ( frame, &item, &itemSize, &value, &valueSize, &flags);
+
+ if ( !item || !value || item[0] == '\0' || value[0] == '\0' )
+ continue;
+
+ if ( !value || value[0] != '\0' ) {
+ PRINT_D4(">id3v2_read>[i%i]%s: [v%i]'%s'\n",itemSize,item,valueSize,value);
+ if ( apefrm_getstr (mem_cnt, item) == NULL ) /* noreplece !!! */
+ apefrm_add_bin (mem_cnt, flags, itemSize, item, valueSize ,value);
+ }
+ free ( value );
+ free ( item );
+ }
+
+ ID3TagIterator_Delete (iter);
+ ID3Tag_Delete (tag);
+
+ return 0;
+}
+
+#endif // ID3V2_READ
+
+
+
+#if 0
+static ID3_FrameDef ID3_FrameDefs[] =
+{
+ /* frames to implement */
+ // short long
+ // frame id id id field defs description
+ {ID3FID_AUDIOCRYPTO, "CRA", "AENC",ID3FD_Unimplemented, "Audio encryption"},
+ {ID3FID_BUFFERSIZE, "BUF", "RBUF",ID3FD_Unimplemented, "Recommended buffer size"},
+ {ID3FID_CDID, "MCI", "MCDI",ID3FD_Unimplemented, "Music CD identifier"},
+ {ID3FID_COMMERCIAL, "" , "COMR",ID3FD_Unimplemented, "Commercial"},
+ {ID3FID_CRYPTOREG, "" , "ENCR",ID3FD_Registration, "Encryption method registration"},
+ {ID3FID_EQUALIZATION, "EQU", "EQUA",ID3FD_Unimplemented, "Equalization"},
+ {ID3FID_EVENTTIMING, "ETC", "ETCO",ID3FD_Unimplemented, "Event timing codes"},
+ {ID3FID_GENERALOBJECT, "GEO", "GEOB",ID3FD_GEO, "General encapsulated object"},
+ {ID3FID_GROUPINGREG, "" , "GRID",ID3FD_Registration, "Group identification registration"},
+ {ID3FID_INVOLVEDPEOPLE, "IPL", "IPLS",ID3FD_InvolvedPeople,"Involved people list"},
+ {ID3FID_LINKEDINFO, "LNK", "LINK",ID3FD_LinkedInfo, "Linked information"},
+ {ID3FID_METACOMPRESSION, "CDM", "" ,ID3FD_CDM, "Compressed data meta frame"},
+ {ID3FID_METACRYPTO, "CRM", "" ,ID3FD_Unimplemented, "Encrypted meta frame"},
+ {ID3FID_MPEGLOOKUP, "MLL", "MLLT",ID3FD_Unimplemented, "MPEG location lookup table"},
+ {ID3FID_OWNERSHIP, "" , "OWNE",ID3FD_Unimplemented, "Ownership frame"},
+ {ID3FID_PICTURE, "PIC", "APIC",ID3FD_Picture, "Attached picture"},
+ {ID3FID_PLAYCOUNTER, "CNT", "PCNT",ID3FD_PlayCounter, "Play counter"},
+ {ID3FID_POPULARIMETER, "POP", "POPM",ID3FD_Popularimeter, "Popularimeter"},
+ {ID3FID_POSITIONSYNC, "" , "POSS",ID3FD_Unimplemented, "Position synchronisation frame"},
+ {ID3FID_PRIVATE, "" , "PRIV",ID3FD_Private, "Private frame"},
+ {ID3FID_REVERB, "REV", "RVRB",ID3FD_Unimplemented, "Reverb"},
+ {ID3FID_SYNCEDLYRICS, "SLT", "SYLT",ID3FD_SyncLyrics, "Synchronized lyric/text"},
+ {ID3FID_SYNCEDTEMPO, "STC", "SYTC",ID3FD_Unimplemented, "Synchronized tempo codes"},
+ {ID3FID_TERMSOFUSE, "" , "USER",ID3FD_TermsOfUse, "Terms of use"},
+ {ID3FID_UNIQUEFILEID, "UFI", "UFID",ID3FD_UFI, "Unique file identifier"},
+ {ID3FID_VOLUMEADJ, "RVA", "RVAD",ID3FD_Unimplemented, "Relative volume adjustment"},
+
+};
+#endif // 0
diff --git a/src/libapetag/id3v2_read.h b/src/libapetag/id3v2_read.h
new file mode 100755
index 0000000..16d433d
--- /dev/null
+++ b/src/libapetag/id3v2_read.h
@@ -0,0 +1,42 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: id3v2_read.h,v 1.6 2003/04/04 20:06:40 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifndef _ID3V2_READ_H
+#define _ID3V2_READ_H
+
+/** \file id3v2_read.h
+ \brief reading id3v2 tag to ape_cnt
+*/
+
+#ifdef ID3V2_READ
+/**
+ reading id3v2 tag to #mem_cnt
+
+ \param mem_cnt stucture ape_mem_cnt
+ \param fileName file name (no file pointer becase libid3 using filename in c mode)
+*/
+int readtag_id3v2 ( apetag *mem_cnt, char* fileName );
+#endif
+
+#endif /* _ID3V2_READ_H */
+
diff --git a/src/libapetag/info_mac.c b/src/libapetag/info_mac.c
new file mode 100755
index 0000000..1b8b5e2
--- /dev/null
+++ b/src/libapetag/info_mac.c
@@ -0,0 +1,151 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: info_mac.c,v 1.15 2003/04/13 11:24:10 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "info_mac.h"
+#include "is_tag.h"
+
+#define MAC_FORMAT_FLAG_8_BIT 1 // 8-bit wave
+#define MAC_FORMAT_FLAG_CRC 2 // new CRC32 error detection
+#define MAC_FORMAT_FLAG_HAS_PEAK_LEVEL 4 // u-long Peak_Level after the header
+#define MAC_FORMAT_FLAG_24_BIT 8 // 24-bit wave
+#define MAC_FORMAT_FLAG_HAS_SEEK_ELEMENTS 16 // number of seek elements after the peak level
+#define MAC_FORMAT_FLAG_CREATE_WAV_HEADER 32 // wave header not stored
+
+struct macHeader {
+ char id[4]; // should equal 'MAC '
+ unsigned short ver; // version number * 1000 (3.81 = 3810)
+ unsigned short compLevel; // the compression level
+ unsigned short formatFlags; // any format flags (for future use)
+ unsigned short channels; // the number of channels (1 or 2)
+ unsigned long sampleRate; // the sample rate (typically 44100)
+ unsigned long headerBytesWAV; // the bytes after the MAC header that compose the WAV header
+ unsigned long terminatingBytesWAV; // the bytes after that raw data (for extended info)
+ unsigned long totalFrames; // the number of frames in the file
+ unsigned long finalFrameBlocks; // the number of samples in the final frame
+ unsigned long peakLevel;
+ unsigned short seekElements;
+};
+
+
+// local prototypes
+static int
+monkey_samples_per_frame(unsigned int versionid, unsigned int compressionlevel);
+static const char *
+monkey_stringify(unsigned int profile);
+
+static const char *
+monkey_stringify(unsigned int profile)
+{
+ static const char na[] = "unknown";
+ static const char *Names[] = {
+ na, "Fast", "Normal", "High", "Extra-High", "Insane"
+ };
+ unsigned int profile2 = profile/1000;
+
+ return (profile2 >= sizeof (Names) / sizeof (*Names)) ? na : Names[(profile2)];
+}
+
+
+static int
+monkey_samples_per_frame(unsigned int versionid, unsigned int compressionlevel)
+{
+ if (versionid >= 3950) {
+ return 294912; // 73728 * 4
+ } else if (versionid >= 3900) {
+ return 73728;
+ } else if ((versionid >= 3800) && (compressionlevel == COMPRESSION_LEVEL_EXTRA_HIGH)) {
+ return 73728;
+ } else {
+ return 9216;
+ }
+}
+
+/*
+ return 0; Info has all info
+ return 1; File not found
+ return 2; no MAC file
+*/
+int
+info_mac_read(const char *fn, StreamInfoMac * Info)
+{
+ unsigned int HeaderData[32];
+ FILE *tmpFile = NULL;
+ long SkipSizeID3;
+ struct macHeader * header;
+
+ // load file
+ tmpFile = fopen(fn, "rb");
+
+ if (tmpFile == NULL)
+ return 1; // file not found or read-protected
+
+ // skip id3v2
+ SkipSizeID3 = is_id3v2(tmpFile);
+ fseek(tmpFile, SkipSizeID3, SEEK_SET);
+ fread((void *) HeaderData, sizeof (int), 16, tmpFile);
+ fseek(tmpFile, 0, SEEK_END);
+ Info->FileSize = ftell(tmpFile);
+ fclose(tmpFile);
+
+ if (0 != memcmp(HeaderData, "MAC", 3))
+ return 2; // no monkeyAudio file
+
+ header= (struct macHeader *) HeaderData;
+
+ Info->Version = Info->EncoderVersion = header->ver;
+ Info->Channels = header->channels;
+ Info->SampleFreq = header->sampleRate;
+ Info->Flags = header->formatFlags;
+ Info->SamplesPerFrame = monkey_samples_per_frame(header->ver, header->compLevel);
+ Info->BitsPerSample = (header->formatFlags & MAC_FORMAT_FLAG_8_BIT)
+ ? 8 : ((header->formatFlags & MAC_FORMAT_FLAG_24_BIT) ? 24 : 16);
+
+ Info->PeakLevel = header->peakLevel;
+// Info->PeakRatio = Info->PakLevel / pow(2, Info->bitsPerSample - 1);
+ Info->Frames = header->totalFrames;
+ Info->Samples = (Info->Frames - 1) * Info->SamplesPerFrame +
+ header->finalFrameBlocks;
+
+ Info->Duration = Info->SampleFreq > 0 ?
+ ((float)Info->Samples / Info->SampleFreq)*1000 : 0;
+
+ Info->Compresion = header->compLevel;
+ Info->CompresionName = monkey_stringify(Info->Compresion);
+
+ Info->UncompresedSize = Info->Samples * Info->Channels *
+ (Info->BitsPerSample / 8);
+
+ Info->CompresionRatio =
+ (Info->UncompresedSize + header->headerBytesWAV) > 0 ?
+ Info->FileSize / (float) (Info->UncompresedSize +
+ header->headerBytesWAV) : 0. ;
+
+ Info->Bitrate = Info->Duration > 0 ? (((Info->Samples *
+ Info->Channels * Info->BitsPerSample) / (float) Info->Duration) *
+ Info->CompresionRatio) * 1000 : 0;
+
+ Info->PeakRatio=Info->ByteLength=0;
+ return 0;
+}
diff --git a/src/libapetag/info_mac.h b/src/libapetag/info_mac.h
new file mode 100755
index 0000000..a17e47c
--- /dev/null
+++ b/src/libapetag/info_mac.h
@@ -0,0 +1,96 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: info_mac.h,v 1.6 2003/04/13 11:24:10 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifndef INFO_MAC_H
+#define INFO_MAC_H
+
+/** \file info_mac.h
+ \brief Get information from MonkeyAudio file.
+
+ Usage:
+ \code
+ StreamInfoMac Info;
+
+ if (info_mac_read(fn, &Info)) {
+ printf("File \"%s\" not found or is read protected!\n", fn);
+ return;
+ }
+ printf("%",Info.fields...);
+ \endcode
+*/
+
+/**
+ \name Compression level
+*/
+/*\{*/
+#define COMPRESSION_LEVEL_FAST 1000 /**< fast */
+#define COMPRESSION_LEVEL_NORMAL 2000 /**< optimal average time/compression ratio */
+#define COMPRESSION_LEVEL_HIGH 3000 /**< higher compression ratio */
+#define COMPRESSION_LEVEL_EXTRA_HIGH 4000 /**< very slowly */
+#define COMPRESSION_LEVEL_INSANE 5000 /**< ??? */
+/*\}*/
+
+/** All information from mac file
+ * \struct StreamInfoMac
+**/
+typedef struct
+{
+ unsigned int ByteLength; /**< file length - tags size */
+ unsigned int FileSize; /**< real file size */
+ int SampleFreq; /**< sample frequency */
+ unsigned int Channels; /**< number of chanels */
+ int Duration; /**< duratiom in ms */
+
+ unsigned int Version; /**< version of current file */
+ unsigned int Bitrate; /**< bitrate of current file (bps) */
+ unsigned int Compresion; /**< compresion profile */
+ unsigned int Flags; /**< flags */
+
+ unsigned int Frames; /**< number of frames */
+ unsigned int SamplesPerFrame; /**< samples per frame */
+ unsigned int Samples; /**< number of samples */
+ unsigned int BitsPerSample; /**< bits per sample */
+ unsigned int UncompresedSize; /**< uncomprese size of file */
+ float CompresionRatio; /**< compresion ratio */
+
+ unsigned int PeakLevel; /**< peak level */
+ float PeakRatio; /**< peak ratio */
+
+ const char *CompresionName; /**< compresion profile as string */
+
+ unsigned int EncoderVersion; /**< version of encoder used */
+} StreamInfoMac;
+
+/**
+ Read all mac info from filename
+
+ \param fn File name
+ \param Info StreamInfoMac Structure for all information
+ \retval 0 ok
+ \retval 1 file not found or write protected
+ \retval 2 not monkey's audio file
+*/
+int
+info_mac_read(const char *fn, StreamInfoMac * Info);
+
+#endif /* INFO_MAC_H */
diff --git a/src/libapetag/info_mpc.c b/src/libapetag/info_mpc.c
new file mode 100755
index 0000000..18ee71b
--- /dev/null
+++ b/src/libapetag/info_mpc.c
@@ -0,0 +1,198 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: info_mpc.c,v 1.12 2003/04/13 11:24:10 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+/*
+ Some portions of code or/and ideas come from
+ winamp plugins, xmms plugins, mppdec decoder
+ thanks:
+ -Frank Klemm <Frank.Klemm@uni-jena.de>
+ -Andree Buschmann <Andree.Buschmann@web.de>
+ -Thomas Juerges <thomas.juerges@astro.ruhr-uni-bochum.de>
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "info_mpc.h"
+#include "is_tag.h"
+
+
+/*
+*.MPC,*.MP+,*.MPP
+*/
+static const char *
+profile_stringify(unsigned int profile); // profile is 0...15, where 7...13 is used
+
+
+static const char *
+profile_stringify(unsigned int profile) // profile is 0...15, where 7...13 is used
+{
+ static const char na[] = "n.a.";
+ static const char *Names[] = {
+ na, "Experimental", na, na,
+ na, na, na, "Telephone",
+ "Thumb", "Radio", "Standard", "Xtreme",
+ "Insane", "BrainDead", "BrainDead+", "BrainDead++"
+ };
+
+ return profile >=
+ sizeof (Names) / sizeof (*Names) ? na : Names[profile];
+}
+
+int
+read_file_header_fp(FILE *fp, StreamInfoMpc * Info)
+{
+
+return 0;
+}
+
+/*
+ return 0; Info has all info
+ return 1; File not found
+ return 2; no Mpc file
+*/
+int
+info_mpc_read(const char *fn, StreamInfoMpc * Info)
+{
+ unsigned int HeaderData[16];
+ FILE *tmpFile = NULL;
+ long SkipSizeID3;
+
+ // load file
+ tmpFile = fopen(fn, "rb");
+
+ if (tmpFile == NULL)
+ return 1; // file not found or read-protected
+ // skip id3v2
+ SkipSizeID3=is_id3v2(tmpFile);
+ fseek(tmpFile,SkipSizeID3 , SEEK_SET);
+ fread((void *) HeaderData, sizeof (int), 16, tmpFile);
+ fseek(tmpFile, 0, SEEK_END);
+ Info->FileSize=ftell(tmpFile);
+ // stream size
+ Info->ByteLength = Info->FileSize-is_id3v1(tmpFile)-is_ape(tmpFile)-SkipSizeID3;
+
+ fclose(tmpFile);
+
+ if (0 != memcmp(HeaderData, "MP+", 3))
+ return 2; // no musepack file
+
+ Info->StreamVersion = HeaderData[0] >> 24;
+ if (Info->StreamVersion >= 7) {
+ const long samplefreqs[4] = { 44100, 48000, 37800, 32000 };
+
+ // read the file-header (SV7 and above)
+ Info->Bitrate = 0;
+ Info->Frames = HeaderData[1];
+ Info->SampleFreq = samplefreqs[(HeaderData[2] >> 16) & 0x0003];
+ Info->MaxBand = (HeaderData[2] >> 24) & 0x003F;
+ Info->MS = (HeaderData[2] >> 30) & 0x0001;
+ Info->Profile = (HeaderData[2] << 8) >> 28;
+ Info->IS = (HeaderData[2] >> 31) & 0x0001;
+ Info->BlockSize = 1;
+
+ Info->EncoderVersion = (HeaderData[6] >> 24) & 0x00FF;
+ Info->Channels = 2;
+ // gain
+ Info->EstPeakTitle = HeaderData[2] & 0xFFFF; // read the ReplayGain data
+ Info->GainTitle = (HeaderData[3] >> 16) & 0xFFFF;
+ Info->PeakTitle = HeaderData[3] & 0xFFFF;
+ Info->GainAlbum = (HeaderData[4] >> 16) & 0xFFFF;
+ Info->PeakAlbum = HeaderData[4] & 0xFFFF;
+ // gaples
+ Info->IsTrueGapless = (HeaderData[5] >> 31) & 0x0001; // true gapless: used?
+ Info->LastFrameSamples = (HeaderData[5] >> 20) & 0x07FF; // true gapless: valid samples for last frame
+
+ if (Info->EncoderVersion == 0) {
+ sprintf(Info->Encoder, "<= 1.05"); // Buschmann 1.7.x, Klemm <= 1.05
+ } else {
+ switch (Info->EncoderVersion % 10) {
+ case 0:
+ sprintf(Info->Encoder, "%u.%u",
+ Info->EncoderVersion / 100,
+ Info->EncoderVersion / 10 % 10);
+ break;
+ case 2:
+ case 4:
+ case 6:
+ case 8:
+ sprintf(Info->Encoder, "%u.%02u Beta",
+ Info->EncoderVersion / 100,
+ Info->EncoderVersion % 100);
+ break;
+ default:
+ sprintf(Info->Encoder, "%u.%02u Alpha",
+ Info->EncoderVersion / 100,
+ Info->EncoderVersion % 100);
+ break;
+ }
+ }
+ // estimation, exact value needs too much time
+ Info->Bitrate = (long) (Info->ByteLength) * 8. * Info->SampleFreq / (1152 * Info->Frames - 576);
+
+ } else {
+ // read the file-header (SV6 and below)
+ Info->Bitrate = ((HeaderData[0] >> 23) & 0x01FF) * 1000; // read the file-header (SV6 and below)
+ Info->MS = (HeaderData[0] >> 21) & 0x0001;
+ Info->IS = (HeaderData[0] >> 22) & 0x0001;
+ Info->StreamVersion = (HeaderData[0] >> 11) & 0x03FF;
+ Info->MaxBand = (HeaderData[0] >> 6) & 0x001F;
+ Info->BlockSize = (HeaderData[0]) & 0x003F;
+
+ Info->Profile = 0;
+ //gain
+ Info->GainTitle = 0; // not supported
+ Info->PeakTitle = 0;
+ Info->GainAlbum = 0;
+ Info->PeakAlbum = 0;
+ //gaples
+ Info->LastFrameSamples = 0;
+ Info->IsTrueGapless = 0;
+
+ if (Info->StreamVersion >= 5)
+ Info->Frames = HeaderData[1]; // 32 bit
+ else
+ Info->Frames = (HeaderData[1] >> 16); // 16 bit
+
+ Info->EncoderVersion = 0;
+ Info->Encoder[0] = '\0';
+#if 0
+ if (Info->StreamVersion == 7)
+ return ERROR_CODE_SV7BETA; // are there any unsupported parameters used?
+ if (Info->Bitrate != 0)
+ return ERROR_CODE_CBR;
+ if (Info->IS != 0)
+ return ERROR_CODE_IS;
+ if (Info->BlockSize != 1)
+ return ERROR_CODE_BLOCKSIZE;
+#endif
+ if (Info->StreamVersion < 6) // Bugfix: last frame was invalid for up to SV5
+ Info->Frames -= 1;
+
+ Info->SampleFreq = 44100; // AB: used by all files up to SV7
+ Info->Channels = 2;
+ }
+
+ Info->ProfileName=profile_stringify(Info->Profile);
+
+ Info->Duration = (int) (Info->Frames * 1152 / (Info->SampleFreq/1000.0));
+ return 0;
+}
diff --git a/src/libapetag/info_mpc.h b/src/libapetag/info_mpc.h
new file mode 100755
index 0000000..330cbf0
--- /dev/null
+++ b/src/libapetag/info_mpc.h
@@ -0,0 +1,96 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: info_mpc.h,v 1.8 2003/04/13 11:24:10 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifndef INFO_MPC_H
+#define INFO_MPC_H
+
+/** \file info_mpc.h
+ \brief Get information from MusePack file.
+
+ Usage:
+ \code
+ StreamInfoMpc Info;
+
+ if (info_mpc_read(fn, &Info)) {
+ printf("File \"%s\" not found or is read protected!\n", fn);
+ return;
+ }
+ printf("%",Info.fields);
+ \endcode
+*/
+
+
+/** All information from mpc file
+ * \struct StreamInfoMpc
+**/
+typedef struct
+{
+ unsigned int ByteLength; /**< file length - tags size */
+ unsigned int FileSize; /**< real file size */
+ int SampleFreq; /**< Sample frequency */
+ unsigned int Channels; /**< channels =2 */
+ int Duration; /**< duratiom in ms */
+
+ unsigned int StreamVersion; /**< Streamversion of current file */
+ unsigned int Bitrate; /**< bitrate of current file (bps) */
+ unsigned int Frames; /**< number of frames contained */
+ unsigned int MS; /**< Mid/Side Stereo (0: off, 1: on) */
+ unsigned int Profile; /**< quality profile */
+ unsigned int MaxBand; /**< maximum band-index used (0...31) */
+ unsigned int IS; /**< Intensity Stereo (0: off, 1: on) */
+ unsigned int BlockSize; /**< only needed for SV4...SV6 -> not supported */
+
+ const char *ProfileName; /**< Profile name */
+ unsigned int EncoderVersion; /**< version of encoder used */
+ char Encoder[256]; /**< Encoder Version in string */
+
+ // ReplayGain related data
+ short GainTitle; /**< Gain Title */
+ short GainAlbum; /**< Gain Album */
+ unsigned short PeakAlbum; /**< Peak value of Album */
+ unsigned short PeakTitle; /**< Peak value of Title */
+ unsigned short EstPeakTitle; /**< Estimated Peak value of Title */
+
+ // true gapless stuff
+ unsigned int IsTrueGapless; /**< is true gapless used? */
+ unsigned int LastFrameSamples; /**< number of valid samples within last frame */
+} StreamInfoMpc;
+
+/** \def StreamInfo is only for compatible before 0.4alpha4
+ \deprecated removed in 0.5
+*/
+#define StreamInfo StreamInfoMpc
+
+/**
+ Read all mpc info from filename
+
+ \param fn File name
+ \param Info StreamInfoMpc Structure for all information
+ \retval 0 ok
+ \retval 1 file not found or write protected
+ \retval 2 not musepack audio file
+*/
+int
+info_mpc_read(const char *fn, StreamInfoMpc *Info);
+
+#endif /* INFO_MPC_H */
diff --git a/src/libapetag/is_tag.c b/src/libapetag/is_tag.c
new file mode 100755
index 0000000..dc56023
--- /dev/null
+++ b/src/libapetag/is_tag.c
@@ -0,0 +1,175 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: is_tag.c,v 1.10 2003/04/16 21:06:27 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <stdarg.h>
+#include <string.h>
+#include <limits.h>
+#include <assert.h>
+#include "is_tag.h"
+
+unsigned long
+is_tag_ape2long (unsigned char *p);
+
+/*
+ PL: czy dany plik ma taga odpowiednio id3v1, id3v2 i ape ???
+ PL: nie zmienia pozycji w pliku !!!
+*/
+
+/**
+ return size of all id3v1 tags (some bugy tagers add this again and
+ again tag) 0 no tag at all
+
+ \param fp File pointer
+ \return Return size of id3v1 tag (in bytes) 0 no tag at all
+*/
+int
+is_id3v1 (FILE * fp)
+{
+ int n=0;
+ char buf[16];
+ size_t savedFilePosition;
+
+ savedFilePosition = ftell (fp);
+ fseek (fp, 0, SEEK_END);
+ do {
+ n++;
+ memset (buf, 0, sizeof (buf));
+ fseek (fp, ((-128)*n) - 3 , SEEK_END);
+ fread (&buf, 1, sizeof (buf), fp);
+ if (memcmp (buf, "APETAGEX",8) == 0) /*APE.TAG.EX*/
+ break;
+ } while (memcmp (buf+3, "TAG", 3) == 0);
+
+ fseek (fp, savedFilePosition, SEEK_SET);
+ return (n-1)*128;
+}
+
+/**
+ return size of tag id3v2 on begining of file.
+ check for buggy tagers (2 or more tags)
+
+ \param fp File pointer
+ \return Return size of id3v2 tag (in bytes)
+ (some bugy tagers add this again and again ) 0 no tag at all
+*/
+int
+is_id3v2 (FILE * fp)
+{
+ char buf[16];
+ size_t savedFilePosition;
+ long id3v2size=0;
+
+ savedFilePosition = ftell (fp);
+ fseek (fp, 0, SEEK_SET);
+ do {
+ memset (buf, 0, sizeof (buf));
+ fseek (fp, id3v2size, SEEK_SET);
+ fread (&buf, 1, sizeof (buf), fp);
+ if (memcmp (buf, "ID3", 3) != 0) {
+ break;
+ }
+ /* ID3v2 tag skipeer $49 44 33 yy yy xx zz zz zz zz [zz size + this 10 bytes] */
+ id3v2size += 10 + (((long) (buf[9])) | ((long) (buf[8]) << 7) |
+ ((long) (buf[7]) << 14) | ((long) (buf[6]) << 21));
+ } while(memcmp (buf, "ID3", 3) == 0);
+
+ fseek (fp, savedFilePosition, SEEK_SET);
+ return (int) id3v2size;
+}
+
+
+/**
+ return 0 or 1000 or 2000 this is version of ape tag 0 no tag
+
+ \param fp File pointer
+ \return Version of ape tag if any, else 0
+*/
+int
+is_ape_ver (FILE * fp)
+{
+ char unsigned buf[32];
+ size_t savedFilePosition;
+
+ savedFilePosition = ftell (fp);
+ memset (buf, 0, sizeof (buf));
+
+ fseek (fp, (is_id3v1 (fp) ? -32 - 128 : -32), SEEK_END);
+ fread (&buf, 1, sizeof (buf), fp);
+ if (memcmp (buf, "APETAGEX", 8) != 0) {
+ fseek (fp, savedFilePosition, SEEK_SET);
+ return 0;
+ }
+
+ fseek (fp, savedFilePosition, SEEK_SET);
+ return (int) is_tag_ape2long (buf + 8);
+}
+
+#define IS_TAG_FOOTER_NOT 0x40000000
+
+/**
+ return size of ape tag id3v1 is not counting
+
+ \param fp File pointer
+ \return Size of ape tag if any, else 0
+*/
+int
+is_ape (FILE * fp)
+{
+ char unsigned buf[32];
+ size_t savedFilePosition;
+
+ savedFilePosition = ftell (fp);
+ memset (buf, 0, sizeof (buf));
+
+ fseek (fp, (is_id3v1 (fp) ? -32 - 128 : -32), SEEK_END);
+ fread (&buf, 1, sizeof (buf), fp);
+ if (memcmp (buf, "APETAGEX", 8) != 0) {
+ fseek (fp, savedFilePosition, SEEK_SET);
+ return 0;
+ }
+
+ fseek (fp, savedFilePosition, SEEK_SET);
+ /* WARNING! macabra code */
+ return (int) (is_tag_ape2long (buf + 8 + 4) +
+ (
+ ( (is_tag_ape2long (buf + 8) == 2000) &&
+ !(is_tag_ape2long (buf + 8 + 4 + 8) & IS_TAG_FOOTER_NOT)
+ ) ? 32 : 0
+ ) /* footer size = 32 */
+ );
+}
+
+
+unsigned long
+is_tag_ape2long (unsigned char *p)
+{
+
+ return (((unsigned long) p[0] << 0) |
+ ((unsigned long) p[1] << 8) |
+ ((unsigned long) p[2] << 16) |
+ ((unsigned long) p[3] << 24) );
+
+}
diff --git a/src/libapetag/is_tag.h b/src/libapetag/is_tag.h
new file mode 100755
index 0000000..bb04061
--- /dev/null
+++ b/src/libapetag/is_tag.h
@@ -0,0 +1,41 @@
+/********************************************************************
+*
+* Copyright (c) 2002 Artur Polaczynski (Ar't) All rights reserved.
+* <artii@o2.pl> LGPL-2.1
+* $ArtId: is_tag.h,v 1.7 2003/04/13 11:24:10 art Exp $
+********************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifndef _IS_TAG_H
+#define _IS_TAG_H
+
+/** \file is_tag.h
+ \brief Function for check if tag is avilable
+
+ All is_* function restore file positon on return
+*/
+
+int is_id3v1 (FILE * fp);
+
+int is_id3v2 (FILE * fp);
+
+int is_ape (FILE * fp);
+
+int is_ape_ver (FILE * fp);
+
+#endif /* _IS_TAG_H */
diff --git a/src/libmpg123/Makefile.am b/src/libmpg123/Makefile.am
new file mode 100755
index 0000000..697fa03
--- /dev/null
+++ b/src/libmpg123/Makefile.am
@@ -0,0 +1,24 @@
+CFLAGS = @CFLAGS@ @GTK_CFLAGS@
+
+noinst_LIBRARIES = libmpg123.a
+
+INCLUDES = -DLOCALE=\"$(localedir)\"
+
+
+libmpg123_a_SOURCES = \
+ common.c \
+ dxhead.h \
+ dxhead.c \
+ getbits.c \
+ getbits.h \
+ huffman.h \
+ l2tables.h \
+ layer1.c \
+ layer2.c \
+ layer3.c \
+ mpg123.c \
+ mpg123.h
+
+
+EXTRA_DIST = \
+ README
diff --git a/src/libmpg123/Makefile.in b/src/libmpg123/Makefile.in
new file mode 100644
index 0000000..203fdc7
--- /dev/null
+++ b/src/libmpg123/Makefile.in
@@ -0,0 +1,476 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/libmpg123
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libmpg123_a_AR = $(AR) $(ARFLAGS)
+libmpg123_a_LIBADD =
+am_libmpg123_a_OBJECTS = common.$(OBJEXT) dxhead.$(OBJEXT) \
+ getbits.$(OBJEXT) layer1.$(OBJEXT) layer2.$(OBJEXT) \
+ layer3.$(OBJEXT) mpg123.$(OBJEXT)
+libmpg123_a_OBJECTS = $(am_libmpg123_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libmpg123_a_SOURCES)
+DIST_SOURCES = $(libmpg123_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@ @GTK_CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
+WAVPACK_LIBS = @WAVPACK_LIBS@
+XGETTEXT = @XGETTEXT@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LIBRARIES = libmpg123.a
+INCLUDES = -DLOCALE=\"$(localedir)\"
+libmpg123_a_SOURCES = \
+ common.c \
+ dxhead.h \
+ dxhead.c \
+ getbits.c \
+ getbits.h \
+ huffman.h \
+ l2tables.h \
+ layer1.c \
+ layer2.c \
+ layer3.c \
+ mpg123.c \
+ mpg123.h
+
+EXTRA_DIST = \
+ README
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libmpg123/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/libmpg123/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libmpg123.a: $(libmpg123_a_OBJECTS) $(libmpg123_a_DEPENDENCIES)
+ -rm -f libmpg123.a
+ $(libmpg123_a_AR) libmpg123.a $(libmpg123_a_OBJECTS) $(libmpg123_a_LIBADD)
+ $(RANLIB) libmpg123.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxhead.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getbits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpg123.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/libmpg123/README b/src/libmpg123/README
new file mode 100644
index 0000000..1a66a66
--- /dev/null
+++ b/src/libmpg123/README
@@ -0,0 +1,35 @@
+/*
+ * Code taken from :
+ */
+
+/*
+ * Mpeg Layer-3 audio decoder
+ * --------------------------
+ * copyright (c) 1995-1999 by Michael Hipp.
+ * All rights reserved.
+ *
+ */
+
+/*
+ * and :
+ */
+
+/* XMMS - Cross-platform multimedia player
+ * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies
+ * Copyright (C) 1999,2000 Håvard Kvålen
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
diff --git a/src/libmpg123/common.c b/src/libmpg123/common.c
new file mode 100755
index 0000000..80c299d
--- /dev/null
+++ b/src/libmpg123/common.c
@@ -0,0 +1,746 @@
+/***
+#include <ctype.h>
+#include <stdlib.h>
+#include <signal.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "config.h"
+***/
+
+/* #ifdef HAVE_MMAP */
+/***
+# if 0
+#include <sys/mman.h>
+#ifndef MAP_FAILED
+#define MAP_FAILED ( (void *) -1 )
+#endif
+#endif
+***/
+
+#include "mpg123.h"
+/***
+#include "id3.h"
+#include "id3_header.h"
+***/
+
+/* max = 1728 */
+#define MAXFRAMESIZE 1792
+
+int tabsel_123[2][3][16] =
+{
+ {
+ {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448,},
+ {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384,},
+ {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,}},
+
+ {
+ {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256,},
+ {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,},
+ {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,}}
+};
+
+long mpg123_freqs[9] =
+{44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000};
+
+struct bitstream_info bsi;
+
+extern gint mpg123_bitrate, mpg123_frequency, mpg123_length;
+extern gchar *mpg123_title, *mpg123_filename;
+extern gboolean mpg123_stereo;
+
+static int fsizeold = 0, ssize;
+static unsigned char bsspace[2][MAXFRAMESIZE + 512]; /* MAXFRAMESIZE */
+static unsigned char *bsbuf = bsspace[1], *bsbufold;
+///static int bsnum = 0;
+
+unsigned char *mpg123_pcm_sample;
+int mpg123_pcm_point = 0;
+
+static FILE *filept;
+///static int filept_opened;
+
+///static int get_fileinfo(void);
+
+/***
+static int fullread(FILE * fd, unsigned char *buf, int count)
+{
+ int ret, cnt = 0;
+
+ while (cnt < count)
+ {
+ if (fd)
+ ret = fread(buf + cnt, 1, count - cnt, fd);
+ else
+ ret = mpg123_http_read(buf + cnt, count - cnt);
+ if (ret < 0)
+ return ret;
+ if (ret == 0)
+ break;
+ cnt += ret;
+ }
+ return cnt;
+}
+
+#define HDRCMPMASK 0xfffffd00
+***/
+
+/* #ifdef HAVE_MMAP */
+# if 0
+/***
+static unsigned char *mapbuf;
+static unsigned char *mappnt;
+static unsigned char *mapend;
+
+static int stream_init(void)
+{
+ long len;
+
+ len = get_fileinfo();
+ if (len < 0)
+ return -1;
+
+ mappnt = mapbuf =
+ mmap(NULL, len, PROT_READ, MAP_SHARED, filept, 0);
+ if (!mapbuf || mapbuf == MAP_FAILED)
+ return -1;
+
+ mapend = mapbuf + len;
+
+ return 0;
+}
+
+static void stream_rewind(void)
+{
+ mappnt = mapbuf;
+}
+
+void mpg123_stream_close(void)
+{
+ if (filept)
+ {
+ munmap(mapbuf, mapend - mapbuf);
+ close(filept);
+ }
+ else
+ mpg123_http_close();
+
+}
+
+static int stream_head_read(unsigned long *newhead)
+{
+ unsigned long nh;
+
+ if (filept)
+ {
+
+ if (mappnt + 4 > mapend)
+ return FALSE;
+
+ nh = (*mappnt++) << 24;
+ nh |= (*mappnt++) << 16;
+ nh |= (*mappnt++) << 8;
+ nh |= (*mappnt++);
+
+ *newhead = nh;
+
+ }
+ else
+ {
+ unsigned char hbuf[4];
+
+ if (fullread(filept, hbuf, 4) != 4)
+ return FALSE;
+
+ *newhead = ((unsigned long) hbuf[0] << 24) |
+ ((unsigned long) hbuf[1] << 16) |
+ ((unsigned long) hbuf[2] << 8) |
+ (unsigned long) hbuf[3];
+ }
+ return TRUE;
+
+}
+
+static int stream_head_shift(unsigned long *head)
+{
+
+ if (filept)
+ {
+ if (mappnt + 1 > mapend)
+ return FALSE;
+ *head <<= 8;
+ *head |= *mappnt++;
+ *head &= 0xffffffff;
+ }
+ else
+ {
+ unsigned char hbuf;
+
+ if (fullread(filept, &hbuf, 1) != 1)
+ return 0;
+ *head <<= 8;
+ *head |= hbuf;
+ *head &= 0xffffffff;
+ }
+ return TRUE;
+}
+
+static int stream_mpg123_read_frame_body(unsigned char *buf,
+ int size)
+{
+ if (filept)
+ {
+#if 1
+ if (mappnt + size > mapend)
+ return FALSE;
+#else
+ long l;
+
+ if (size > (mapend - mappnt))
+ {
+ l = mapend - mappnt;
+ memcpy(buf, mappnt, l);
+ memset(buf + l, 0, size - l);
+ }
+ else
+#endif
+ memcpy(buf, mappnt, size);
+
+ mappnt += size;
+ }
+ else
+ {
+ long l;
+
+ if ((l = fullread(filept, buf, size)) != size)
+ {
+ if (l <= 0)
+ return 0;
+ memset(buf + l, 0, size - l);
+ }
+ }
+
+ return TRUE;
+}
+
+static int stream_back_bytes(int bytes)
+{
+ if ((mappnt - bytes) < mapbuf || (mappnt - bytes + 4) > mapend)
+ return -1;
+ mappnt -= bytes;
+ return 0;
+}
+
+static long stream_tell(void)
+{
+ return mappnt - mapbuf;
+}
+
+void mpg123_stream_jump_to_frame(struct frame *fr, int frame)
+{
+ if (mapbuf + frame * (fr->framesize + 4) < mapend)
+ {
+ mpg123__init();
+ stream_rewind();
+ mpg123_read_frame(fr);
+ mappnt = mapbuf + frame * (fr->framesize + 4);
+
+ mpg123_read_frame(fr);
+ }
+}
+
+void mpg123_stream_jump_to_byte(struct frame *fr, int byte)
+{
+ if (mapbuf + byte < mapend)
+ {
+ mappnt = mapbuf + byte;
+ mpg123_read_frame(fr);
+ }
+}
+
+int mpg123_stream_check_for_xing_header(struct frame *fr, XHEADDATA * xhead)
+{
+ unsigned char *head_data;
+ int ret = 0;
+
+ stream_back_bytes(fr->framesize + 4);
+
+ if (mappnt + (fr->framesize + 4) < mapend)
+ {
+ ret = mpg123_get_xing_header(xhead, mappnt);
+ mappnt += fr->framesize + 4;
+ }
+ return ret;
+}
+***/
+#else
+/***
+static int stream_init(void)
+{
+ if (get_fileinfo() < 0)
+ return -1;
+ return 0;
+}
+
+void mpg123_stream_close(void)
+{
+*//* if (flags & READER_FD_OPENED) *//*
+ if (filept)
+ fclose(filept);
+ else
+ mpg123_http_close();
+}
+***/
+
+/****************************************
+ * HACK,HACK,HACK: step back <num> frames
+ * can only work if the 'stream' isn't a real stream but a file
+ */
+/***
+static int stream_back_bytes(int bytes)
+{
+ if (fseek(filept, -bytes, SEEK_CUR) < 0)
+ return -1;
+ return 0;
+}
+
+static int stream_head_read(unsigned long *newhead)
+{
+ unsigned char hbuf[4];
+
+ if (fullread(filept, hbuf, 4) != 4)
+ return FALSE;
+
+ *newhead = ((unsigned long) hbuf[0] << 24) |
+ ((unsigned long) hbuf[1] << 16) |
+ ((unsigned long) hbuf[2] << 8) |
+ (unsigned long) hbuf[3];
+
+ return TRUE;
+}
+
+static int stream_head_shift(unsigned long *head)
+{
+ unsigned char hbuf;
+
+ if (fullread(filept, &hbuf, 1) != 1)
+ return 0;
+ *head <<= 8;
+ *head |= hbuf;
+ *head &= 0xffffffff;
+ return 1;
+}
+
+static int stream_mpg123_read_frame_body(unsigned char *buf,
+ int size)
+{
+ long l;
+
+ if ((l = fullread(filept, buf, size)) != size)
+ {
+ if (l <= 0)
+ return 0;
+ memset(buf + l, 0, size - l);
+ }
+ return 1;
+}
+
+static long stream_tell(void)
+{
+ return ftell(filept);
+}
+
+static void stream_rewind(void)
+{
+ fseek(filept, 0, SEEK_SET);
+}
+
+int mpg123_stream_jump_to_frame(struct frame *fr, int frame)
+{
+ if (!filept)
+ return -1;
+ mpg123_read_frame_init();
+ fseek(filept, frame * (fr->framesize + 4), SEEK_SET);
+ mpg123_read_frame(fr);
+ return 0;
+}
+
+int mpg123_stream_jump_to_byte(struct frame *fr, int byte)
+{
+ if (!filept)
+ return -1;
+ fseek(filept, byte, SEEK_SET);
+ mpg123_read_frame(fr);
+ return 0;
+}
+***/
+
+int mpg123_stream_check_for_xing_header(struct frame *fr, XHEADDATA * xhead)
+{
+ unsigned char *head_data;
+ int ret;
+
+ fseek(filept, -(fr->framesize + 4), SEEK_CUR);
+ head_data = g_malloc(fr->framesize + 4);
+ fread(head_data, 1, fr->framesize + 4, filept);
+ ret = mpg123_get_xing_header(xhead, head_data);
+ g_free(head_data);
+ return ret;
+}
+
+#endif
+
+/***
+static int get_fileinfo(void)
+{
+ guchar buf[3];
+
+ if (filept == NULL)
+ return -1;
+ if (fseek(filept, 0, SEEK_END) < 0)
+ return -1;
+
+ mpg123_info->filesize = ftell(filept);
+ if (fseek(filept, -128, SEEK_END) < 0)
+ return -1;
+ if (fullread(filept, buf, 3) != 3)
+ return -1;
+ if (!strncmp(buf, "TAG", 3))
+ mpg123_info->filesize -=128;
+ if (fseek(filept, 0, SEEK_SET) < 0)
+ return -1;
+
+ if (mpg123_info->filesize <= 0)
+ return -1;
+
+ return mpg123_info->filesize;
+}
+***/
+
+/***
+void mpg123_read_frame_init(void)
+{
+ memset(bsspace[0],0,MAXFRAMESIZE + 512);
+ memset(bsspace[1],0,MAXFRAMESIZE + 512);
+ mpg123_info->output_audio = FALSE;
+}
+***/
+
+/*
+ * Function read_id3v2_tag (head)
+ *
+ * Read ID3v2 tag from stream. Return TRUE upon success, or FALSE if
+ * an error occurred.
+ *
+ */
+/***
+static gboolean read_id3v2_tag(unsigned long head)
+{
+ struct
+ {
+ char id3[3];
+ struct id3_taghdr_t tag;
+ } id3header;
+ char *id3buf;
+ int hdrsize;
+ id3_t *id3d;
+ struct id3tag_t tag;
+ *//*
+ * Read ID3tag header.
+ *//*
+ *(unsigned long *) &id3header = g_htonl(head);
+ if (fullread(filept, ((char *) &id3header) + sizeof (head),
+ sizeof (id3header) - sizeof (head))
+ != sizeof (id3header) - sizeof (head))
+ return FALSE;
+
+ hdrsize = ID3_GET_SIZE28(g_ntohl(id3header.tag.th_size));
+
+ *//*
+ * A invalid header could fool us into requesting insane
+ * amounts of memory. Make sure the header size is
+ * reasonable.
+ *//*
+ if ((mpg123_info->filesize && hdrsize > mpg123_info->filesize) ||
+ (!mpg123_info->filesize && hdrsize > 1000000))
+ return FALSE;
+
+ if (mpg123_cfg.disable_id3v2)
+ {
+ guint8 *tmp = g_malloc(hdrsize);
+ gboolean ret;
+ ret = (fullread(filept, tmp, hdrsize) == hdrsize);
+ g_free(tmp);
+ return ret;
+ }
+
+ id3buf = g_malloc(hdrsize + sizeof (id3header));
+ memcpy(id3buf, &id3header, sizeof (id3header));
+
+ *//*
+ * Read ID3tag body.
+ *//*
+ if (fullread(filept, id3buf + sizeof (id3header), hdrsize) != hdrsize)
+ {
+ g_free(id3buf);
+ return FALSE;
+ }
+
+ *//*
+ * Get info from tag.
+ *//*
+ if ((id3d = id3_open_mem(id3buf, 0)) != NULL)
+ {
+ mpg123_get_id3v2(id3d, &tag);
+ if (!mpg123_info->first_frame)
+ {
+ char *songname = mpg123_title;
+ mpg123_title =
+ mpg123_format_song_title(&tag, mpg123_filename);
+ mpg123_ip.set_info(mpg123_title, mpg123_length,
+ mpg123_bitrate * 1000,
+ mpg123_frequency, mpg123_stereo);
+ if (songname)
+ g_free(songname);
+ }
+ else
+ {
+ mpg123_title = mpg123_format_song_title(&tag,
+ mpg123_filename);
+ }
+ id3_close(id3d);
+ }
+ g_free(id3buf);
+
+ return TRUE;
+}
+***/
+
+int mpg123_head_check(unsigned long head)
+{
+ if ((head & 0xffe00000) != 0xffe00000)
+ return FALSE;
+ if (!((head >> 17) & 3))
+ return FALSE;
+ if (((head >> 12) & 0xf) == 0xf)
+ return FALSE;
+ if (!((head >> 12) & 0xf))
+ return FALSE;
+ if (((head >> 10) & 0x3) == 0x3)
+ return FALSE;
+ if (((head >> 19) & 1) == 1 && ((head >> 17) & 3) == 3 && ((head >> 16) & 1) == 1)
+ return FALSE;
+ if ((head & 0xffff0000) == 0xfffe0000)
+ return FALSE;
+
+ return TRUE;
+}
+
+/*****************************************************************
+ * read next frame
+ */
+/***
+int mpg123_read_frame(struct frame *fr)
+{
+ unsigned long newhead;
+
+ fsizeold = fr->framesize; *//* for Layer3 *//*
+
+ if (!stream_head_read(&newhead))
+ return FALSE;
+
+ if (!mpg123_head_check(newhead) || !mpg123_decode_header(fr, newhead))
+ {
+ int try = 0;
+
+ do
+ {
+ try++;
+ if ((newhead & 0xffffff00) == ('I' << 24) + ('D' << 16) + ('3' << 8))
+ {
+ read_id3v2_tag(newhead);
+ if (!stream_head_read(&newhead))
+ return FALSE;
+ }
+ else if (!stream_head_shift(&newhead))
+ return 0;
+
+ }
+ while ((!mpg123_head_check(newhead) ||
+ !mpg123_decode_header(fr,newhead)) &&
+ try < (256 * 1024));
+ if(try >= (256 * 1024))
+ return FALSE;
+
+ mpg123_info->filesize -= try;
+ }
+ *//* flip/init buffer for Layer 3 *//*
+ bsbufold = bsbuf;
+ bsbuf = bsspace[bsnum] + 512;
+ bsnum = (bsnum + 1) & 1;
+
+ if (!stream_mpg123_read_frame_body(bsbuf, fr->framesize))
+ return 0;
+
+ bsi.bitindex = 0;
+ bsi.wordpointer = (unsigned char *) bsbuf;
+
+
+ return 1;
+
+}
+***/
+
+/*
+ * the code a header and write the information
+ * into the frame structure
+ */
+int mpg123_decode_header(struct frame *fr, unsigned long newhead)
+{
+ if (newhead & (1 << 20))
+ {
+ fr->lsf = (newhead & (1 << 19)) ? 0x0 : 0x1;
+ fr->mpeg25 = 0;
+ }
+ else
+ {
+ fr->lsf = 1;
+ fr->mpeg25 = 1;
+ }
+ fr->lay = 4 - ((newhead >> 17) & 3);
+ if (fr->mpeg25)
+ {
+ fr->sampling_frequency = 6 + ((newhead >> 10) & 0x3);
+ }
+ else
+ fr->sampling_frequency = ((newhead >> 10) & 0x3) + (fr->lsf * 3);
+ fr->error_protection = ((newhead >> 16) & 0x1) ^ 0x1;
+
+ if (fr->mpeg25) /* allow Bitrate change for 2.5 ... */
+ fr->bitrate_index = ((newhead >> 12) & 0xf);
+
+ fr->bitrate_index = ((newhead >> 12) & 0xf);
+ fr->padding = ((newhead >> 9) & 0x1);
+ fr->extension = ((newhead >> 8) & 0x1);
+ fr->mode = ((newhead >> 6) & 0x3);
+ fr->mode_ext = ((newhead >> 4) & 0x3);
+ fr->copyright = ((newhead >> 3) & 0x1);
+ fr->original = ((newhead >> 2) & 0x1);
+ fr->emphasis = newhead & 0x3;
+
+ fr->stereo = (fr->mode == MPG_MD_MONO) ? 1 : 2;
+
+ ssize = 0;
+
+ if (!fr->bitrate_index)
+ return (0);
+
+ switch (fr->lay)
+ {
+ case 1:
+ fr->do_layer = mpg123_do_layer1;
+ mpg123_init_layer2(); /* inits also shared tables with layer1 */
+ fr->framesize = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000;
+ fr->framesize /= mpg123_freqs[fr->sampling_frequency];
+ fr->framesize = ((fr->framesize + fr->padding) << 2) - 4;
+ break;
+ case 2:
+ fr->do_layer = mpg123_do_layer2;
+ mpg123_init_layer2(); /* inits also shared tables with layer1 */
+ fr->framesize = (long) tabsel_123[fr->lsf][1][fr->bitrate_index] * 144000;
+ fr->framesize /= mpg123_freqs[fr->sampling_frequency];
+ fr->framesize += fr->padding - 4;
+ break;
+ case 3:
+ fr->do_layer = mpg123_do_layer3;
+ if (fr->lsf)
+ ssize = (fr->stereo == 1) ? 9 : 17;
+ else
+ ssize = (fr->stereo == 1) ? 17 : 32;
+ if (fr->error_protection)
+ ssize += 2;
+ fr->framesize = (long) tabsel_123[fr->lsf][2][fr->bitrate_index] * 144000;
+ fr->framesize /= mpg123_freqs[fr->sampling_frequency] << (fr->lsf);
+ fr->framesize = fr->framesize + fr->padding - 4;
+ break;
+ default:
+ return (0);
+ }
+ if(fr->framesize > MAXFRAMESIZE)
+ return 0;
+ return 1;
+}
+
+/***
+void mpg123_open_stream(char *bs_filenam, int fd)
+{
+ filept_opened = 1;
+ if (!strncasecmp(bs_filenam, "http://", 7))
+ {
+ filept = NULL;
+ mpg123_http_open(bs_filenam);
+ mpg123_info->filesize = 0;
+ }
+ else
+ {
+ if ((filept = fopen(bs_filenam, "rb")) != NULL)
+ {
+ if (stream_init() == -1)
+ {
+ mpg123_info->eof = 1;
+ }
+ }
+ else
+ mpg123_info->eof = 1;
+ }
+
+}
+***/
+
+void mpg123_set_pointer(long backstep)
+{
+ bsi.wordpointer = bsbuf + ssize - backstep;
+ if (backstep)
+ memcpy(bsi.wordpointer, bsbufold + fsizeold - backstep, backstep);
+ bsi.bitindex = 0;
+}
+
+double mpg123_compute_bpf(struct frame *fr)
+{
+ double bpf;
+
+ switch (fr->lay)
+ {
+ case 1:
+ bpf = tabsel_123[fr->lsf][0][fr->bitrate_index];
+ bpf *= 12000.0 * 4.0;
+ bpf /= mpg123_freqs[fr->sampling_frequency] << (fr->lsf);
+ break;
+ case 2:
+ case 3:
+ bpf = tabsel_123[fr->lsf][fr->lay - 1][fr->bitrate_index];
+ bpf *= 144000;
+ bpf /= mpg123_freqs[fr->sampling_frequency] << (fr->lsf);
+ break;
+ default:
+ bpf = 1.0;
+ }
+
+ return bpf;
+}
+
+/***
+int mpg123_calc_numframes(struct frame *fr)
+{
+ return (int) (mpg123_info->filesize / mpg123_compute_bpf(fr));
+}
+
+double mpg123_relative_pos(void)
+{
+ if (!filept || !mpg123_info->filesize)
+ return 0;
+ return ((double) stream_tell()) / mpg123_info->filesize;
+}
+***/
diff --git a/src/libmpg123/dxhead.c b/src/libmpg123/dxhead.c
new file mode 100755
index 0000000..21b5ceb
--- /dev/null
+++ b/src/libmpg123/dxhead.c
@@ -0,0 +1,165 @@
+/* ---- DXhead.c --------------------------------------------
+ *
+ *
+ * decoder MPEG Layer III handle Xing header
+ *
+ * mod 12/7/98 add vbr scale
+ *
+ * Copyright 1998 Xing Technology Corp.
+ * -----------------------------------------------------------
+ */
+#include <stdlib.h>
+#include <stdio.h>
+#include <float.h>
+#include <math.h>
+#include "dxhead.h"
+
+/* 4 Xing
+ * 4 flags
+ * 4 frames
+ * 4 bytes
+ * 100 toc
+ */
+
+/*-------------------------------------------------------------*/
+static int ExtractI4(unsigned char *buf)
+{
+ int x;
+
+ /* big endian extract */
+ x = buf[0];
+ x <<= 8;
+ x |= buf[1];
+ x <<= 8;
+ x |= buf[2];
+ x <<= 8;
+ x |= buf[3];
+ return x;
+}
+
+/*-------------------------------------------------------------*/
+int mpg123_get_xing_header(XHEADDATA * X, unsigned char *buf)
+{
+ int i, head_flags;
+ int h_id, h_mode, h_sr_index;
+ static int sr_table[4] =
+ {44100, 48000, 32000, 99999};
+
+ /* get Xing header data */
+ X->flags = 0; /* clear to null incase fail */
+
+ /* get selected MPEG header data */
+ h_id = (buf[1] >> 3) & 1;
+ h_sr_index = (buf[2] >> 2) & 3;
+ h_mode = (buf[3] >> 6) & 3;
+
+
+
+ /* determine offset of header */
+ if (h_id)
+ { /* mpeg1 */
+ if (h_mode != 3)
+ buf += (32 + 4);
+ else
+ buf += (17 + 4);
+ }
+ else
+ { /* mpeg2 */
+ if (h_mode != 3)
+ buf += (17 + 4);
+ else
+ buf += (9 + 4);
+ }
+
+ if (buf[0] != 'X')
+ return 0; /* fail */
+ if (buf[1] != 'i')
+ return 0; /* header not found */
+ if (buf[2] != 'n')
+ return 0;
+ if (buf[3] != 'g')
+ return 0;
+ buf += 4;
+
+ X->h_id = h_id;
+ X->samprate = sr_table[h_sr_index];
+ if (h_id == 0)
+ X->samprate >>= 1;
+ head_flags = X->flags = ExtractI4(buf);
+ buf += 4; /* get flags */
+
+ if (head_flags & FRAMES_FLAG)
+ {
+ X->frames = ExtractI4(buf);
+ buf += 4;
+ }
+ if (head_flags & BYTES_FLAG)
+ {
+ X->bytes = ExtractI4(buf);
+ buf += 4;
+ }
+
+ if (head_flags & TOC_FLAG)
+ {
+ if (X->toc != NULL)
+ {
+ for (i = 0; i < 100; i++)
+ X->toc[i] = buf[i];
+ }
+ buf += 100;
+ }
+
+ X->vbr_scale = -1;
+ if (head_flags & VBR_SCALE_FLAG)
+ {
+ X->vbr_scale = ExtractI4(buf);
+ buf += 4;
+ }
+
+
+/*if( X->toc != NULL ) {
+ *for(i=0;i<100;i++) {
+ * if( (i%10) == 0 ) printf("\n");
+ * printf(" %3d", (int)(X->toc[i]));
+ *}
+ *}
+ */
+
+ return 1; /* success */
+}
+
+/*-------------------------------------------------------------*/
+int mpg123_seek_point(unsigned char TOC[100], int file_bytes, float percent)
+{
+
+ /* interpolate in TOC to get file seek point in bytes */
+ int a, seekpoint;
+ float fa, fb, fx;
+
+ if (percent < 0.0f)
+ percent = 0.0f;
+
+ if (percent > 100.0f)
+ percent = 100.0f;
+
+ a = (int) percent;
+
+ if (a > 99)
+ a = 99;
+ fa = TOC[a];
+
+ if (a < 99)
+ {
+ fb = TOC[a + 1];
+ }
+ else
+ {
+ fb = 256.0f;
+ }
+
+ fx = fa + (fb - fa) * (percent - a);
+ seekpoint = (int) ((1.0f / 256.0f) * fx * file_bytes);
+ return seekpoint;
+}
+
+/*-------------------------------------------------------------*/
diff --git a/src/libmpg123/dxhead.h b/src/libmpg123/dxhead.h
new file mode 100755
index 0000000..bcbc66a
--- /dev/null
+++ b/src/libmpg123/dxhead.h
@@ -0,0 +1,60 @@
+/*---- DXhead.h --------------------------------------------
+
+decoder MPEG Layer III
+handle Xing header
+
+Copyright 1998 Xing Technology Corp.
+-----------------------------------------------------------*/
+/* A Xing header may be present in the ancillary
+ * data field of the first frame of an mp3 bitstream
+ * The Xing header (optionally) contains
+ * frames total number of audio frames in the bitstream
+ * bytes total number of bytes in the bitstream
+ * toc table of contents
+
+ * toc (table of contents) gives seek points
+ * for random access
+ * the ith entry determines the seek point for
+ * i-percent duration
+ * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes
+ * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes
+ */
+
+#define FRAMES_FLAG 0x0001
+#define BYTES_FLAG 0x0002
+#define TOC_FLAG 0x0004
+#define VBR_SCALE_FLAG 0x0008
+
+#define FRAMES_AND_BYTES (FRAMES_FLAG | BYTES_FLAG)
+
+/* structure to receive extracted header
+ * toc may be NULL
+ */
+typedef struct
+{
+ int h_id; /* from MPEG header, 0=MPEG2, 1=MPEG1 */
+ int samprate; /* determined from MPEG header */
+ int flags; /* from Xing header data */
+ int frames; /* total bit stream frames from Xing header data */
+ int bytes; /* total bit stream bytes from Xing header data */
+ int vbr_scale; /* encoded vbr scale from Xing header data */
+ unsigned char *toc; /* pointer to unsigned char toc_buffer[100] */
+ /* may be NULL if toc not desired */
+}
+XHEADDATA;
+
+int mpg123_get_xing_header(XHEADDATA * X, unsigned char *buf);
+
+/* return 0=fail, 1=success
+ * X structure to receive header data (output)
+ * buf bitstream input
+ */
+
+int mpg123_seek_point(unsigned char TOC[100], int file_bytes, float percent);
+
+/* return seekpoint in bytes (may be at eof if percent=100.0)
+ * TOC = table of contents from Xing header
+ * file_bytes = number of bytes in mp3 file
+ * percent = play time percentage of total playtime. May be
+ * fractional (e.g. 87.245)
+ */
diff --git a/src/libmpg123/getbits.c b/src/libmpg123/getbits.c
new file mode 100755
index 0000000..a071b5e
--- /dev/null
+++ b/src/libmpg123/getbits.c
@@ -0,0 +1,126 @@
+#include "mpg123.h"
+
+#if 0
+static void check_buffer_range(int size)
+{
+ int pos = (bsi.wordpointer-bsbuf) + (size >> 3);
+
+ if( pos >= fsizeold) {
+ fprintf(stderr, "Pointer out of range (%d,%d)!\n", pos, fsizeold);
+ }
+}
+#endif
+
+void mpg123_backbits(int number_of_bits)
+{
+ bsi.bitindex -= number_of_bits;
+ bsi.wordpointer += (bsi.bitindex>>3);
+ bsi.bitindex &= 0x7;
+}
+
+int mpg123_getbitoffset(void)
+{
+ return (-bsi.bitindex)&0x7;
+}
+
+int mpg123_getbyte(void)
+{
+#ifdef DEBUG_GETBITS
+ if(bsi.bitindex)
+ fprintf(stderr,"getbyte called unsynched!\n");
+#endif
+ return *bsi.wordpointer++;
+}
+
+unsigned int mpg123_getbits(int number_of_bits)
+{
+ unsigned long rval;
+
+#ifdef DEBUG_GETBITS
+ fprintf(stderr, "g%d", number_of_bits);
+#endif
+
+ if(!number_of_bits)
+ return 0;
+
+#if 0
+ check_buffer_range(number_of_bits + bsi.bitindex);
+#endif
+
+ {
+ rval = bsi.wordpointer[0];
+ rval <<= 8;
+ rval |= bsi.wordpointer[1];
+ rval <<= 8;
+ rval |= bsi.wordpointer[2];
+
+ rval <<= bsi.bitindex;
+ rval &= 0xffffff;
+
+ bsi.bitindex += number_of_bits;
+
+ rval >>= (24-number_of_bits);
+
+ bsi.wordpointer += (bsi.bitindex >> 3);
+ bsi.bitindex &= 7;
+ }
+
+#ifdef DEBUG_GETBITS
+ fprintf(stderr,":%x ",rval);
+#endif
+
+ return rval;
+}
+
+unsigned int mpg123_getbits_fast(int number_of_bits)
+{
+ unsigned int rval;
+#ifdef DEBUG_GETBITS
+ fprintf(stderr,"g%d",number_of_bits);
+#endif
+
+#if 0
+ check_buffer_range(number_of_bits+bsi.bitindex);
+#endif
+
+ rval = (unsigned char) (bsi.wordpointer[0] << bsi.bitindex);
+ rval |= ((unsigned int) bsi.wordpointer[1] << bsi.bitindex) >> 8;
+ rval <<= number_of_bits;
+ rval >>= 8;
+
+ bsi.bitindex += number_of_bits;
+
+ bsi.wordpointer += (bsi.bitindex >> 3);
+ bsi.bitindex &= 7;
+
+#ifdef DEBUG_GETBITS
+ fprintf(stderr,":%x ",rval);
+#endif
+ return rval;
+}
+
+unsigned int mpg123_get1bit(void)
+{
+ unsigned char rval;
+
+#ifdef DEBUG_GETBITS
+ fprintf(stderr,"g%d",1);
+#endif
+
+#if 0
+ check_buffer_range(1+bsi.bitindex);
+#endif
+
+ rval = *bsi.wordpointer << bsi.bitindex;
+
+ bsi.bitindex++;
+ bsi.wordpointer += (bsi.bitindex >> 3);
+ bsi.bitindex &= 7;
+
+#ifdef DEBUG_GETBITS
+ fprintf(stderr,":%d ",rval >> 7);
+#endif
+
+ return rval>>7;
+}
+
diff --git a/src/libmpg123/getbits.h b/src/libmpg123/getbits.h
new file mode 100755
index 0000000..1e5cf65
--- /dev/null
+++ b/src/libmpg123/getbits.h
@@ -0,0 +1,46 @@
+
+/*
+ * This does the same as getbits.c but with defines to
+ * force inlining
+ */
+
+#define mpg123_backbits(nob) \
+do { \
+ bsi.bitindex -= nob; \
+ bsi.wordpointer += (bsi.bitindex >> 3); \
+ bsi.bitindex &= 0x7; \
+} while (0)
+
+#define mpg123_getbitoffset() ((-bsi.bitindex) & 0x7)
+#define mpg123_getbyte() (*bsi.wordpointer++)
+
+#define mpg123_getbits(nob) \
+ (rval = bsi.wordpointer[0], \
+ rval <<= 8, \
+ rval |= bsi.wordpointer[1], \
+ rval <<= 8, \
+ rval |= bsi.wordpointer[2], \
+ rval <<= bsi.bitindex, \
+ rval &= 0xffffff, \
+ bsi.bitindex += (nob), \
+ rval >>= (24-(nob)), \
+ bsi.wordpointer += (bsi.bitindex>>3), \
+ bsi.bitindex &= 7, \
+ rval)
+
+#define mpg123_getbits_fast(nob) \
+ (rval = (unsigned char) (bsi.wordpointer[0] << bsi.bitindex), \
+ rval |= ((unsigned long) bsi.wordpointer[1] << bsi.bitindex) >> 8, \
+ rval <<= (nob), \
+ rval >>= 8, \
+ bsi.bitindex += (nob), \
+ bsi.wordpointer += (bsi.bitindex >> 3), \
+ bsi.bitindex &= 7, \
+ rval)
+
+#define mpg123_get1bit() \
+ (rval_uc = *bsi.wordpointer << bsi.bitindex, \
+ bsi.bitindex++, \
+ bsi.wordpointer += (bsi.bitindex>>3), \
+ bsi.bitindex &= 7, \
+ rval_uc >> 7)
diff --git a/src/libmpg123/huffman.h b/src/libmpg123/huffman.h
new file mode 100755
index 0000000..83a230b
--- /dev/null
+++ b/src/libmpg123/huffman.h
@@ -0,0 +1,329 @@
+
+/*
+ * huffman tables ... recalcualted to work with my optimzed
+ * decoder scheme (MH)
+ *
+ * probably we could save a few bytes of memory, because the
+ * smaller tables are often the part of a bigger table
+ */
+
+struct newhuff
+{
+ unsigned int linbits;
+ short *table;
+};
+
+static short tab0[] =
+{
+ 0
+};
+
+static short tab1[] =
+{
+ -5, -3, -1, 17, 1, 16, 0
+};
+
+static short tab2[] =
+{
+ -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1,
+ 16, 0
+};
+
+static short tab3[] =
+{
+ -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1,
+ 1, 0
+};
+
+static short tab5[] =
+{
+ -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19,
+ 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16,
+ 0
+};
+
+static short tab6[] =
+{
+ -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19,
+ 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16,
+ 0
+};
+
+static short tab7[] =
+{
+ -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83,
+ -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1,
+ 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7,
+ -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18,
+ -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0
+};
+
+static short tab8[] =
+{
+ -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83,
+ -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52,
+ 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4,
+ 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1,
+ 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0
+};
+
+static short tab9[] =
+{
+ -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1,
+ 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67,
+ -1, 80, 4, -7, -3, -1, 36, 66, -1, 51, 64, -1, 20, 65, -5,
+ -3, -1, 35, 50, 19, -1, 49, -1, 3, 48, -5, -3, -1, 34, 2,
+ 18, -1, 33, 32, -3, -1, 17, 1, -1, 16, 0
+};
+
+static short tab10[] =
+{
+ -125, -121, -111, -83, -55, -35, -21, -13, -7, -3, -1, 119, 103, -1, 118,
+ 87, -3, -1, 117, 102, 71, -3, -1, 116, 86, -1, 101, 55, -9, -3,
+ -1, 115, 70, -3, -1, 85, 84, 99, -1, 39, 114, -11, -5, -3, -1,
+ 100, 7, 112, -1, 98, -1, 69, 53, -5, -1, 6, -1, 83, 68, 23,
+ -17, -5, -1, 113, -1, 54, 38, -5, -3, -1, 37, 82, 21, -1, 81,
+ -1, 52, 67, -3, -1, 22, 97, -1, 96, -1, 5, 80, -19, -11, -7,
+ -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1,
+ 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1,
+ 2, 32, 17, -1, 1, 16, 0
+};
+
+static short tab11[] =
+{
+ -121, -113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117,
+ -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55,
+ -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114,
+ -1, 100, 7, -5, -1, 113, -1, 23, 112, -3, -1, 54, 99, -1, 96,
+ -1, 68, 37, -13, -7, -5, -3, -1, 82, 5, 21, 98, -3, -1, 38,
+ 6, 22, -5, -1, 97, -1, 81, 52, -5, -1, 80, -1, 67, 51, -1,
+ 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50,
+ -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2,
+ 32, 17, -3, -1, 1, 16, 0
+};
+
+static short tab12[] =
+{
+ -115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87,
+ 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115,
+ 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7,
+ 112, -1, 54, 99, -13, -9, -3, -1, 69, 84, -1, 68, -1, 6, 5,
+ -1, 38, 98, -5, -1, 97, -1, 22, 96, -3, -1, 53, 83, -1, 37,
+ 82, -17, -7, -3, -1, 21, 81, -1, 52, 67, -5, -3, -1, 80, 4,
+ 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3,
+ -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1,
+ 2, 32, 0, 17, -1, 1, 16
+};
+
+static short tab13[] =
+{
+ -509, -503, -475, -405, -333, -265, -205, -153, -115, -83, -53, -35, -21, -13, -9,
+ -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238,
+ 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1,
+ 236, 221, -9, -5, -3, -1, 250, 205, 190, -1, 235, 159, -3, -1, 249,
+ 234, -1, 189, 219, -17, -9, -3, -1, 143, 248, -1, 204, -1, 174, 158,
+ -5, -1, 142, -1, 127, 126, 247, -5, -1, 218, -1, 173, 188, -3, -1,
+ 203, 246, 111, -15, -7, -3, -1, 232, 95, -1, 157, 217, -3, -1, 245,
+ 231, -1, 172, 187, -9, -3, -1, 79, 244, -3, -1, 202, 230, 243, -1,
+ 63, -1, 141, 216, -21, -9, -3, -1, 47, 242, -3, -1, 110, 156, 15,
+ -5, -3, -1, 201, 94, 171, -3, -1, 125, 215, 78, -11, -5, -3, -1,
+ 200, 214, 62, -1, 185, -1, 155, 170, -1, 31, 241, -23, -13, -5, -1,
+ 240, -1, 186, 229, -3, -1, 228, 140, -1, 109, 227, -5, -1, 226, -1,
+ 46, 14, -1, 30, 225, -15, -7, -3, -1, 224, 93, -1, 213, 124, -3,
+ -1, 199, 77, -1, 139, 184, -7, -3, -1, 212, 154, -1, 169, 108, -1,
+ 198, 61, -37, -21, -9, -5, -3, -1, 211, 123, 45, -1, 210, 29, -5,
+ -1, 183, -1, 92, 197, -3, -1, 153, 122, 195, -7, -5, -3, -1, 167,
+ 151, 75, 209, -3, -1, 13, 208, -1, 138, 168, -11, -7, -3, -1, 76,
+ 196, -1, 107, 182, -1, 60, 44, -3, -1, 194, 91, -3, -1, 181, 137,
+ 28, -43, -23, -11, -5, -1, 193, -1, 152, 12, -1, 192, -1, 180, 106,
+ -5, -3, -1, 166, 121, 59, -1, 179, -1, 136, 90, -11, -5, -1, 43,
+ -1, 165, 105, -1, 164, -1, 120, 135, -5, -1, 148, -1, 119, 118, 178,
+ -11, -3, -1, 27, 177, -3, -1, 11, 176, -1, 150, 74, -7, -3, -1,
+ 58, 163, -1, 89, 149, -1, 42, 162, -47, -23, -9, -3, -1, 26, 161,
+ -3, -1, 10, 104, 160, -5, -3, -1, 134, 73, 147, -3, -1, 57, 88,
+ -1, 133, 103, -9, -3, -1, 41, 146, -3, -1, 87, 117, 56, -5, -1,
+ 131, -1, 102, 71, -3, -1, 116, 86, -1, 101, 115, -11, -3, -1, 25,
+ 145, -3, -1, 9, 144, -1, 72, 132, -7, -5, -1, 114, -1, 70, 100,
+ 40, -1, 130, 24, -41, -27, -11, -5, -3, -1, 55, 39, 23, -1, 113,
+ -1, 85, 7, -7, -3, -1, 112, 54, -1, 99, 69, -3, -1, 84, 38,
+ -1, 98, 53, -5, -1, 129, -1, 8, 128, -3, -1, 22, 97, -1, 6,
+ 96, -13, -9, -5, -3, -1, 83, 68, 37, -1, 82, 5, -1, 21, 81,
+ -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, -19, -11,
+ -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3,
+ -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16,
+ 0
+};
+
+static short tab15[] =
+{
+-495, -445, -355, -263, -183, -115, -77, -43, -27, -13, -7, -3, -1, 255, 239,
+ -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237,
+ 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3,
+ -1, 235, 205, -1, 220, 159, -15, -7, -3, -1, 249, 234, -1, 189, 219,
+ -3, -1, 143, 248, -1, 204, 158, -7, -3, -1, 233, 127, -1, 247, 173,
+ -3, -1, 218, 188, -1, 111, -1, 174, 15, -19, -11, -3, -1, 203, 246,
+ -3, -1, 142, 232, -1, 95, 157, -3, -1, 245, 126, -1, 231, 172, -9,
+ -3, -1, 202, 187, -3, -1, 217, 141, 79, -3, -1, 244, 63, -1, 243,
+ 216, -33, -17, -9, -3, -1, 230, 47, -1, 242, -1, 110, 240, -3, -1,
+ 31, 241, -1, 156, 201, -7, -3, -1, 94, 171, -1, 186, 229, -3, -1,
+ 125, 215, -1, 78, 228, -15, -7, -3, -1, 140, 200, -1, 62, 109, -3,
+ -1, 214, 227, -1, 155, 185, -7, -3, -1, 46, 170, -1, 226, 30, -5,
+ -1, 225, -1, 14, 224, -1, 93, 213, -45, -25, -13, -7, -3, -1, 124,
+ 199, -1, 77, 139, -1, 212, -1, 184, 154, -7, -3, -1, 169, 108, -1,
+ 198, 61, -1, 211, 210, -9, -5, -3, -1, 45, 13, 29, -1, 123, 183,
+ -5, -1, 209, -1, 92, 208, -1, 197, 138, -17, -7, -3, -1, 168, 76,
+ -1, 196, 107, -5, -1, 182, -1, 153, 12, -1, 60, 195, -9, -3, -1,
+ 122, 167, -1, 166, -1, 192, 11, -1, 194, -1, 44, 91, -55, -29, -15,
+ -7, -3, -1, 181, 28, -1, 137, 152, -3, -1, 193, 75, -1, 180, 106,
+ -5, -3, -1, 59, 121, 179, -3, -1, 151, 136, -1, 43, 90, -11, -5,
+ -1, 178, -1, 165, 27, -1, 177, -1, 176, 105, -7, -3, -1, 150, 74,
+ -1, 164, 120, -3, -1, 135, 58, 163, -17, -7, -3, -1, 89, 149, -1,
+ 42, 162, -3, -1, 26, 161, -3, -1, 10, 160, 104, -7, -3, -1, 134,
+ 73, -1, 148, 57, -5, -1, 147, -1, 119, 9, -1, 88, 133, -53, -29,
+ -13, -7, -3, -1, 41, 103, -1, 118, 146, -1, 145, -1, 25, 144, -7,
+ -3, -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 71, -7,
+ -3, -1, 40, 130, -1, 24, 129, -7, -3, -1, 116, 8, -1, 128, 86,
+ -3, -1, 101, 55, -1, 115, 70, -17, -7, -3, -1, 39, 114, -1, 100,
+ 23, -3, -1, 85, 113, -3, -1, 7, 112, 54, -7, -3, -1, 99, 69,
+ -1, 84, 38, -3, -1, 98, 22, -3, -1, 6, 96, 53, -33, -19, -9,
+ -5, -1, 97, -1, 83, 68, -1, 37, 82, -3, -1, 21, 81, -3, -1,
+ 5, 80, 52, -7, -3, -1, 67, 36, -1, 66, 51, -1, 65, -1, 20,
+ 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48,
+ 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16,
+ 0
+};
+
+static short tab16[] =
+{
+ -509, -503, -461, -323, -103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223,
+ 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3,
+ -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5,
+ -3, -1, 95, 245, 79, -1, 244, 243, -53, -1, 240, -1, 63, -29, -19,
+ -13, -7, -5, -1, 206, -1, 236, 221, 222, -1, 233, -1, 234, 217, -1,
+ 238, -1, 237, 235, -3, -1, 190, 205, -3, -1, 220, 219, 174, -11, -5,
+ -1, 204, -1, 173, 218, -3, -1, 126, 172, 202, -5, -3, -1, 201, 125,
+ 94, 189, 242, -93, -5, -3, -1, 47, 15, 31, -1, 241, -49, -25, -13,
+ -5, -1, 158, -1, 188, 203, -3, -1, 142, 232, -1, 157, 231, -7, -3,
+ -1, 187, 141, -1, 216, 110, -1, 230, 156, -13, -7, -3, -1, 171, 186,
+ -1, 229, 215, -1, 78, -1, 228, 140, -3, -1, 200, 62, -1, 109, -1,
+ 214, 155, -19, -11, -5, -3, -1, 185, 170, 225, -1, 212, -1, 184, 169,
+ -5, -1, 123, -1, 183, 208, 227, -7, -3, -1, 14, 224, -1, 93, 213,
+ -3, -1, 124, 199, -1, 77, 139, -75, -45, -27, -13, -7, -3, -1, 154,
+ 108, -1, 198, 61, -3, -1, 92, 197, 13, -7, -3, -1, 138, 168, -1,
+ 153, 76, -3, -1, 182, 122, 60, -11, -5, -3, -1, 91, 137, 28, -1,
+ 192, -1, 152, 121, -1, 226, -1, 46, 30, -15, -7, -3, -1, 211, 45,
+ -1, 210, 209, -5, -1, 59, -1, 151, 136, 29, -7, -3, -1, 196, 107,
+ -1, 195, 167, -1, 44, -1, 194, 181, -23, -13, -7, -3, -1, 193, 12,
+ -1, 75, 180, -3, -1, 106, 166, 179, -5, -3, -1, 90, 165, 43, -1,
+ 178, 27, -13, -5, -1, 177, -1, 11, 176, -3, -1, 105, 150, -1, 74,
+ 164, -5, -3, -1, 120, 135, 163, -3, -1, 58, 89, 42, -97, -57, -33,
+ -19, -11, -5, -3, -1, 149, 104, 161, -3, -1, 134, 119, 148, -5, -3,
+ -1, 73, 87, 103, 162, -5, -1, 26, -1, 10, 160, -3, -1, 57, 147,
+ -1, 88, 133, -9, -3, -1, 41, 146, -3, -1, 118, 9, 25, -5, -1,
+ 145, -1, 144, 72, -3, -1, 132, 117, -1, 56, 131, -21, -11, -5, -3,
+ -1, 102, 40, 130, -3, -1, 71, 116, 24, -3, -1, 129, 128, -3, -1,
+ 8, 86, 55, -9, -5, -1, 115, -1, 101, 70, -1, 39, 114, -5, -3,
+ -1, 100, 85, 7, 23, -23, -13, -5, -1, 113, -1, 112, 54, -3, -1,
+ 99, 69, -1, 84, 38, -3, -1, 98, 22, -1, 97, -1, 6, 96, -9,
+ -5, -1, 83, -1, 53, 68, -1, 37, 82, -1, 81, -1, 21, 5, -33,
+ -23, -13, -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20,
+ -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1,
+ 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16,
+ 0
+};
+
+static short tab24[] =
+{
+ -451, -117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1,
+ 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9,
+ -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79,
+ 244, -71, -7, -3, -1, 63, 243, -1, 47, 242, -5, -1, 241, -1, 31,
+ 240, -25, -9, -1, 15, -3, -1, 238, 222, -1, 237, 206, -7, -3, -1,
+ 236, 221, -1, 190, 235, -3, -1, 205, 220, -1, 174, 234, -15, -7, -3,
+ -1, 189, 219, -1, 204, 158, -3, -1, 233, 173, -1, 218, 188, -7, -3,
+ -1, 203, 142, -1, 232, 157, -3, -1, 217, 126, -1, 231, 172, 255, -235,
+ -143, -77, -45, -25, -15, -7, -3, -1, 202, 187, -1, 141, 216, -5, -3,
+ -1, 14, 224, 13, 230, -5, -3, -1, 110, 156, 201, -1, 94, 186, -9,
+ -5, -1, 229, -1, 171, 125, -1, 215, 228, -3, -1, 140, 200, -3, -1,
+ 78, 46, 62, -15, -7, -3, -1, 109, 214, -1, 227, 155, -3, -1, 185,
+ 170, -1, 226, 30, -7, -3, -1, 225, 93, -1, 213, 124, -3, -1, 199,
+ 77, -1, 139, 184, -31, -15, -7, -3, -1, 212, 154, -1, 169, 108, -3,
+ -1, 198, 61, -1, 211, 45, -7, -3, -1, 210, 29, -1, 123, 183, -3,
+ -1, 209, 92, -1, 197, 138, -17, -7, -3, -1, 168, 153, -1, 76, 196,
+ -3, -1, 107, 182, -3, -1, 208, 12, 60, -7, -3, -1, 195, 122, -1,
+ 167, 44, -3, -1, 194, 91, -1, 181, 28, -57, -35, -19, -7, -3, -1,
+ 137, 152, -1, 193, 75, -5, -3, -1, 192, 11, 59, -3, -1, 176, 10,
+ 26, -5, -1, 180, -1, 106, 166, -3, -1, 121, 151, -3, -1, 160, 9,
+ 144, -9, -3, -1, 179, 136, -3, -1, 43, 90, 178, -7, -3, -1, 165,
+ 27, -1, 177, 105, -1, 150, 164, -17, -9, -5, -3, -1, 74, 120, 135,
+ -1, 58, 163, -3, -1, 89, 149, -1, 42, 162, -7, -3, -1, 161, 104,
+ -1, 134, 119, -3, -1, 73, 148, -1, 57, 147, -63, -31, -15, -7, -3,
+ -1, 88, 133, -1, 41, 103, -3, -1, 118, 146, -1, 25, 145, -7, -3,
+ -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 40, -17, -7,
+ -3, -1, 130, 24, -1, 71, 116, -5, -1, 129, -1, 8, 128, -1, 86,
+ 101, -7, -5, -1, 23, -1, 7, 112, 115, -3, -1, 55, 39, 114, -15,
+ -7, -3, -1, 70, 100, -1, 85, 113, -3, -1, 54, 99, -1, 69, 84,
+ -7, -3, -1, 38, 98, -1, 22, 97, -5, -3, -1, 6, 96, 53, -1,
+ 83, 68, -51, -37, -23, -15, -9, -3, -1, 37, 82, -1, 21, -1, 5,
+ 80, -1, 81, -1, 52, 67, -3, -1, 36, 66, -1, 51, 20, -9, -5,
+ -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1,
+ 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16,
+ 0
+};
+
+static short tab_c0[] =
+{
+ -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5,
+ 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8,
+ 0
+};
+
+static short tab_c1[] =
+{
+ -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9,
+ 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1,
+ 0
+};
+
+static struct newhuff ht[] =
+{
+ { /* 0 */ 0, tab0},
+ { /* 2 */ 0, tab1},
+ { /* 3 */ 0, tab2},
+ { /* 3 */ 0, tab3},
+ { /* 0 */ 0, tab0},
+ { /* 4 */ 0, tab5},
+ { /* 4 */ 0, tab6},
+ { /* 6 */ 0, tab7},
+ { /* 6 */ 0, tab8},
+ { /* 6 */ 0, tab9},
+ { /* 8 */ 0, tab10},
+ { /* 8 */ 0, tab11},
+ { /* 8 */ 0, tab12},
+ { /* 16 */ 0, tab13},
+ { /* 0 */ 0, tab0},
+ { /* 16 */ 0, tab15},
+
+ { /* 16 */ 1, tab16},
+ { /* 16 */ 2, tab16},
+ { /* 16 */ 3, tab16},
+ { /* 16 */ 4, tab16},
+ { /* 16 */ 6, tab16},
+ { /* 16 */ 8, tab16},
+ { /* 16 */ 10, tab16},
+ { /* 16 */ 13, tab16},
+ { /* 16 */ 4, tab24},
+ { /* 16 */ 5, tab24},
+ { /* 16 */ 6, tab24},
+ { /* 16 */ 7, tab24},
+ { /* 16 */ 8, tab24},
+ { /* 16 */ 9, tab24},
+ { /* 16 */ 11, tab24},
+ { /* 16 */ 13, tab24}
+};
+
+static struct newhuff htc[] =
+{
+ { /* 1 , 1 , */ 0, tab_c0},
+ { /* 1 , 1 , */ 0, tab_c1}
+};
diff --git a/src/libmpg123/l2tables.h b/src/libmpg123/l2tables.h
new file mode 100755
index 0000000..51eb22f
--- /dev/null
+++ b/src/libmpg123/l2tables.h
@@ -0,0 +1,997 @@
+/*
+ * Layer 2 Alloc tables ..
+ * most other tables are calculated on program start (which is (of course)
+ * not ISO-conform) ..
+ * Layer-3 huffman table is in huffman.h
+ */
+
+struct al_table alloc_0[] =
+{
+ {4, 0},
+ {5, 3},
+ {3, -3},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {3, -3},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {3, -3},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767}};
+
+struct al_table alloc_1[] =
+{
+ {4, 0},
+ {5, 3},
+ {3, -3},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {3, -3},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {3, -3},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {16, -32767}};
+
+struct al_table alloc_2[] =
+{
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63}};
+
+struct al_table alloc_3[] =
+{
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {15, -16383},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63}};
+
+struct al_table alloc_4[] =
+{
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {4, 0},
+ {5, 3},
+ {7, 5},
+ {3, -3},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {8, -127},
+ {9, -255},
+ {10, -511},
+ {11, -1023},
+ {12, -2047},
+ {13, -4095},
+ {14, -8191},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {3, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {4, -7},
+ {5, -15},
+ {6, -31},
+ {7, -63},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9},
+ {2, 0},
+ {5, 3},
+ {7, 5},
+ {10, 9}};
diff --git a/src/libmpg123/layer1.c b/src/libmpg123/layer1.c
new file mode 100755
index 0000000..057f08b
--- /dev/null
+++ b/src/libmpg123/layer1.c
@@ -0,0 +1,187 @@
+
+/*
+ * Mpeg Layer-1 audio decoder
+ * --------------------------
+ * copyright (c) 1995 by Michael Hipp, All rights reserved. See also 'README'
+ * near unoptimzed ...
+ *
+ * may have a few bugs after last optimization ...
+ *
+ */
+
+#include "mpg123.h"
+#include "getbits.h"
+
+/* Used by the getbits macros */
+static unsigned long rval;
+
+void I_step_one(unsigned int balloc[], unsigned int scale_index[2][SBLIMIT], struct frame *fr)
+{
+ unsigned int *ba = balloc;
+ unsigned int *sca = (unsigned int *) scale_index;
+
+ if (fr->stereo)
+ {
+ int i;
+ int jsbound = fr->jsbound;
+
+ for (i = 0; i < jsbound; i++)
+ {
+ *ba++ = mpg123_getbits(4);
+ *ba++ = mpg123_getbits(4);
+ }
+ for (i = jsbound; i < SBLIMIT; i++)
+ *ba++ = mpg123_getbits(4);
+
+ ba = balloc;
+
+ for (i = 0; i < jsbound; i++)
+ {
+ if ((*ba++))
+ *sca++ = mpg123_getbits(6);
+ if ((*ba++))
+ *sca++ = mpg123_getbits(6);
+ }
+ for (i = jsbound; i < SBLIMIT; i++)
+ if ((*ba++))
+ {
+ *sca++ = mpg123_getbits(6);
+ *sca++ = mpg123_getbits(6);
+ }
+ }
+ else
+ {
+ int i;
+
+ for (i = 0; i < SBLIMIT; i++)
+ *ba++ = mpg123_getbits(4);
+ ba = balloc;
+ for (i = 0; i < SBLIMIT; i++)
+ if ((*ba++))
+ *sca++ = mpg123_getbits(6);
+ }
+}
+
+void I_step_two(real fraction[2][SBLIMIT], unsigned int balloc[2 * SBLIMIT],
+ unsigned int scale_index[2][SBLIMIT], struct frame *fr)
+{
+ int i, n;
+ int smpb[2 * SBLIMIT]; /* values: 0-65535 */
+ int *sample;
+ register unsigned int *ba;
+ register unsigned int *sca = (unsigned int *) scale_index;
+
+ if (fr->stereo)
+ {
+ int jsbound = fr->jsbound;
+ register real *f0 = fraction[0];
+ register real *f1 = fraction[1];
+
+ ba = balloc;
+ for (sample = smpb, i = 0; i < jsbound; i++)
+ {
+ if ((n = *ba++))
+ *sample++ = mpg123_getbits(n + 1);
+ if ((n = *ba++))
+ *sample++ = mpg123_getbits(n + 1);
+ }
+ for (i = jsbound; i < SBLIMIT; i++)
+ if ((n = *ba++))
+ *sample++ = mpg123_getbits(n + 1);
+
+ ba = balloc;
+ for (sample = smpb, i = 0; i < jsbound; i++)
+ {
+ if ((n = *ba++))
+ *f0++ = (real) (((-1) << n) + (*sample++) + 1) * mpg123_muls[n + 1][*sca++];
+ else
+ *f0++ = 0.0;
+ if ((n = *ba++))
+ *f1++ = (real) (((-1) << n) + (*sample++) + 1) * mpg123_muls[n + 1][*sca++];
+ else
+ *f1++ = 0.0;
+ }
+ for (i = jsbound; i < SBLIMIT; i++)
+ {
+ if ((n = *ba++))
+ {
+ real samp = (((-1) << n) + (*sample++) + 1);
+
+ *f0++ = samp * mpg123_muls[n + 1][*sca++];
+ *f1++ = samp * mpg123_muls[n + 1][*sca++];
+ }
+ else
+ *f0++ = *f1++ = 0.0;
+ }
+ for (i = fr->down_sample_sblimit; i < 32; i++)
+ fraction[0][i] = fraction[1][i] = 0.0;
+ }
+ else
+ {
+ register real *f0 = fraction[0];
+
+ ba = balloc;
+ for (sample = smpb, i = 0; i < SBLIMIT; i++)
+ if ((n = *ba++))
+ *sample++ = mpg123_getbits(n + 1);
+ ba = balloc;
+ for (sample = smpb, i = 0; i < SBLIMIT; i++)
+ {
+ if ((n = *ba++))
+ *f0++ = (real) (((-1) << n) + (*sample++) + 1) * mpg123_muls[n + 1][*sca++];
+ else
+ *f0++ = 0.0;
+ }
+ for (i = fr->down_sample_sblimit; i < 32; i++)
+ fraction[0][i] = 0.0;
+ }
+}
+
+int mpg123_do_layer1(struct frame *fr)
+{
+ int i, stereo = fr->stereo;
+ unsigned int balloc[2 * SBLIMIT];
+ unsigned int scale_index[2][SBLIMIT];
+ real fraction[2][SBLIMIT];
+ int single = fr->single;
+
+ fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext << 2) + 4 : 32;
+
+ if (stereo == 1 || single == 3)
+ single = 0;
+
+ I_step_one(balloc, scale_index, fr);
+
+ for (i = 0; i < SCALE_BLOCK; i++)
+ {
+ I_step_two(fraction, balloc, scale_index, fr);
+
+ if (single >= 0)
+ {
+ (fr->synth_mono) ((real *) fraction[single], mpg123_pcm_sample, &mpg123_pcm_point);
+ }
+ else
+ {
+ int p1 = mpg123_pcm_point;
+
+ (fr->synth) ((real *) fraction[0], 0, mpg123_pcm_sample, &p1);
+ (fr->synth) ((real *) fraction[1], 1, mpg123_pcm_sample, &mpg123_pcm_point);
+ }
+
+/***
+ if (mpg123_info->output_audio)
+ {
+
+ mpg123_ip.add_vis_pcm(mpg123_ip.output->written_time(), mpg123_cfg.resolution == 16 ? FMT_S16_NE : FMT_U8,
+ mpg123_cfg.channels == 2 ? fr->stereo : 1, mpg123_pcm_point, mpg123_pcm_sample);
+ while (mpg123_ip.output->buffer_free() < mpg123_pcm_point && mpg123_info->going && mpg123_info->jump_to_time == -1)
+ xmms_usleep(10000);
+ if (mpg123_info->going && mpg123_info->jump_to_time == -1)
+ mpg123_ip.output->write_audio(mpg123_pcm_sample, mpg123_pcm_point);
+ }
+***/
+ mpg123_pcm_point = 0;
+ }
+
+ return 1;
+}
diff --git a/src/libmpg123/layer2.c b/src/libmpg123/layer2.c
new file mode 100755
index 0000000..07ce258
--- /dev/null
+++ b/src/libmpg123/layer2.c
@@ -0,0 +1,336 @@
+
+/*
+ * Mpeg Layer-2 audio decoder
+ * --------------------------
+ * copyright (c) 1995 by Michael Hipp, All rights reserved. See also 'README'
+ *
+ */
+
+#include "mpg123.h"
+#include "l2tables.h"
+#include "getbits.h"
+
+static int grp_3tab[32 * 3] =
+{0,}; /* used: 27 */
+static int grp_5tab[128 * 3] =
+{0,}; /* used: 125 */
+static int grp_9tab[1024 * 3] =
+{0,}; /* used: 729 */
+
+real mpg123_muls[27][64]; /* also used by layer 1 */
+
+/* Used by the getbits macros */
+static unsigned long rval;
+
+void mpg123_init_layer2(void)
+{
+ static double mulmul[27] = {
+ 0.0, -2.0 / 3.0, 2.0 / 3.0, 2.0 / 7.0, 2.0 / 15.0,
+ 2.0 / 31.0, 2.0 / 63.0, 2.0 / 127.0, 2.0 / 255.0,
+ 2.0 / 511.0, 2.0 / 1023.0, 2.0 / 2047.0, 2.0 / 4095.0,
+ 2.0 / 8191.0, 2.0 / 16383.0, 2.0 / 32767.0, 2.0 / 65535.0,
+ -4.0 / 5.0, -2.0 / 5.0, 2.0 / 5.0, 4.0 / 5.0, -8.0 / 9.0,
+ -4.0 / 9.0, -2.0 / 9.0, 2.0 / 9.0, 4.0 / 9.0, 8.0 / 9.0 };
+ static int base[3][9] = {
+ {1, 0, 2,},
+ {17, 18, 0, 19, 20,},
+ {21, 1, 22, 23, 0, 24, 25, 2, 26}};
+ int i, j, k, l, len;
+ real *table;
+ static int tablen[3] = {3, 5, 9};
+ static int *itable, *tables[3] =
+ {grp_3tab, grp_5tab, grp_9tab};
+
+ for (i = 0; i < 3; i++)
+ {
+ itable = tables[i];
+ len = tablen[i];
+ for (j = 0; j < len; j++)
+ for (k = 0; k < len; k++)
+ for (l = 0; l < len; l++)
+ {
+ *itable++ = base[i][l];
+ *itable++ = base[i][k];
+ *itable++ = base[i][j];
+ }
+ }
+
+ for (k = 0; k < 27; k++)
+ {
+ double m = mulmul[k];
+
+ table = mpg123_muls[k];
+ for (j = 3, i = 0; i < 63; i++, j--)
+ *table++ = m * pow(2.0, (double) j / 3.0);
+ *table++ = 0.0;
+ }
+}
+
+void II_step_one(unsigned int *bit_alloc, int *scale, struct frame *fr)
+{
+ int stereo = fr->stereo - 1;
+ int sblimit = fr->II_sblimit;
+ int jsbound = fr->jsbound;
+ int sblimit2 = fr->II_sblimit << stereo;
+ struct al_table *alloc1 = fr->alloc;
+ int i;
+ static unsigned int scfsi_buf[64];
+ unsigned int *scfsi, *bita;
+ int sc, step;
+
+ bita = bit_alloc;
+ if (stereo)
+ {
+ for (i = jsbound; i > 0; i--, alloc1 += (1 << step))
+ {
+ *bita++ = (char) mpg123_getbits(step = alloc1->bits);
+ *bita++ = (char) mpg123_getbits(step);
+ }
+ for (i = sblimit - jsbound; i > 0; i--, alloc1 += (1 << step))
+ {
+ bita[0] = (char) mpg123_getbits(step = alloc1->bits);
+ bita[1] = bita[0];
+ bita += 2;
+ }
+ bita = bit_alloc;
+ scfsi = scfsi_buf;
+ for (i = sblimit2; i; i--)
+ if (*bita++)
+ *scfsi++ = (char) mpg123_getbits_fast(2);
+ }
+ else
+ /* mono */
+ {
+ for (i = sblimit; i; i--, alloc1 += (1 << step))
+ *bita++ = (char) mpg123_getbits(step = alloc1->bits);
+ bita = bit_alloc;
+ scfsi = scfsi_buf;
+ for (i = sblimit; i; i--)
+ if (*bita++)
+ *scfsi++ = (char) mpg123_getbits_fast(2);
+ }
+
+ bita = bit_alloc;
+ scfsi = scfsi_buf;
+ for (i = sblimit2; i; i--)
+ if (*bita++)
+ switch (*scfsi++)
+ {
+ case 0:
+ *scale++ = mpg123_getbits_fast(6);
+ *scale++ = mpg123_getbits_fast(6);
+ *scale++ = mpg123_getbits_fast(6);
+ break;
+ case 1:
+ *scale++ = sc = mpg123_getbits_fast(6);
+ *scale++ = sc;
+ *scale++ = mpg123_getbits_fast(6);
+ break;
+ case 2:
+ *scale++ = sc = mpg123_getbits_fast(6);
+ *scale++ = sc;
+ *scale++ = sc;
+ break;
+ default: /* case 3 */
+ *scale++ = mpg123_getbits_fast(6);
+ *scale++ = sc = mpg123_getbits_fast(6);
+ *scale++ = sc;
+ break;
+ }
+
+}
+
+void II_step_two(unsigned int *bit_alloc, real fraction[2][4][SBLIMIT], int *scale, struct frame *fr, int x1)
+{
+ int i, j, k, ba;
+ int stereo = fr->stereo;
+ int sblimit = fr->II_sblimit;
+ int jsbound = fr->jsbound;
+ struct al_table *alloc2, *alloc1 = fr->alloc;
+ unsigned int *bita = bit_alloc;
+ int d1, step;
+
+ for (i = 0; i < jsbound; i++, alloc1 += (1 << step))
+ {
+ step = alloc1->bits;
+ for (j = 0; j < stereo; j++)
+ {
+ if ((ba = *bita++))
+ {
+ k = (alloc2 = alloc1 + ba)->bits;
+ if ((d1 = alloc2->d) < 0)
+ {
+ real cm = mpg123_muls[k][scale[x1]];
+
+ fraction[j][0][i] = ((real) ((int) mpg123_getbits(k) + d1)) * cm;
+ fraction[j][1][i] = ((real) ((int) mpg123_getbits(k) + d1)) * cm;
+ fraction[j][2][i] = ((real) ((int) mpg123_getbits(k) + d1)) * cm;
+ }
+ else
+ {
+ static int *table[] =
+ {0, 0, 0, grp_3tab, 0, grp_5tab, 0, 0, 0, grp_9tab};
+ unsigned int idx, *tab, m = scale[x1];
+
+ idx = (unsigned int) mpg123_getbits(k);
+ tab = (unsigned int *) (table[d1] + idx + idx + idx);
+ fraction[j][0][i] = mpg123_muls[*tab++][m];
+ fraction[j][1][i] = mpg123_muls[*tab++][m];
+ fraction[j][2][i] = mpg123_muls[*tab][m];
+ }
+ scale += 3;
+ }
+ else
+ fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = 0.0;
+ }
+ }
+
+ for (i = jsbound; i < sblimit; i++, alloc1 += (1 << step))
+ {
+ step = alloc1->bits;
+ bita++; /* channel 1 and channel 2 bitalloc are the same */
+ if ((ba = *bita++))
+ {
+ k = (alloc2 = alloc1 + ba)->bits;
+ if ((d1 = alloc2->d) < 0)
+ {
+ real cm;
+
+ cm = mpg123_muls[k][scale[x1 + 3]];
+ fraction[1][0][i] = (fraction[0][0][i] = (real) ((int) mpg123_getbits(k) + d1)) * cm;
+ fraction[1][1][i] = (fraction[0][1][i] = (real) ((int) mpg123_getbits(k) + d1)) * cm;
+ fraction[1][2][i] = (fraction[0][2][i] = (real) ((int) mpg123_getbits(k) + d1)) * cm;
+ cm = mpg123_muls[k][scale[x1]];
+ fraction[0][0][i] *= cm;
+ fraction[0][1][i] *= cm;
+ fraction[0][2][i] *= cm;
+ }
+ else
+ {
+ static int *table[] =
+ {0, 0, 0, grp_3tab, 0, grp_5tab, 0, 0, 0, grp_9tab};
+ unsigned int idx, *tab, m1, m2;
+
+ m1 = scale[x1];
+ m2 = scale[x1 + 3];
+ idx = (unsigned int) mpg123_getbits(k);
+ tab = (unsigned int *) (table[d1] + idx + idx + idx);
+ fraction[0][0][i] = mpg123_muls[*tab][m1];
+ fraction[1][0][i] = mpg123_muls[*tab++][m2];
+ fraction[0][1][i] = mpg123_muls[*tab][m1];
+ fraction[1][1][i] = mpg123_muls[*tab++][m2];
+ fraction[0][2][i] = mpg123_muls[*tab][m1];
+ fraction[1][2][i] = mpg123_muls[*tab][m2];
+ }
+ scale += 6;
+ }
+ else
+ {
+ fraction[0][0][i] = fraction[0][1][i] = fraction[0][2][i] =
+ fraction[1][0][i] = fraction[1][1][i] = fraction[1][2][i] = 0.0;
+ }
+/*
+ should we use individual scalefac for channel 2 or
+ is the current way the right one , where we just copy channel 1 to
+ channel 2 ??
+ The current 'strange' thing is, that we throw away the scalefac
+ values for the second channel ...!!
+ -> changed .. now we use the scalefac values of channel one !!
+ */
+ }
+
+ if (sblimit > (fr->down_sample_sblimit))
+ sblimit = fr->down_sample_sblimit;
+
+ for (i = sblimit; i < SBLIMIT; i++)
+ for (j = 0; j < stereo; j++)
+ fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = 0.0;
+
+}
+
+static void II_select_table(struct frame *fr)
+{
+ static int translate[3][2][16] = {
+ {{0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 0},
+ {0, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}},
+ {{0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ {0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
+ {{0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0},
+ {0, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}}
+ };
+
+ int table, sblim;
+ static struct al_table *tables[5] =
+ {alloc_0, alloc_1, alloc_2, alloc_3, alloc_4};
+ static int sblims[5] = { 27, 30, 8, 12, 30 };
+
+ if (fr->lsf)
+ table = 4;
+ else
+ table = translate[fr->sampling_frequency][2 - fr->stereo][fr->bitrate_index];
+ sblim = sblims[table];
+
+ fr->alloc = tables[table];
+ fr->II_sblimit = sblim;
+}
+
+
+int mpg123_do_layer2(struct frame *fr)
+{
+ int i, j;
+ int stereo = fr->stereo;
+ real fraction[2][4][SBLIMIT]; /* pick_table clears unused subbands */
+ unsigned int bit_alloc[64];
+ int scale[192];
+ int single = fr->single;
+
+ II_select_table(fr);
+ fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ?
+ (fr->mode_ext << 2) + 4 : fr->II_sblimit;
+ if (fr->jsbound > fr->II_sblimit)
+ fr->jsbound = fr->II_sblimit;
+
+ if (stereo == 1 || single == 3)
+ single = 0;
+
+ II_step_one(bit_alloc, scale, fr);
+
+ for (i = 0; i < SCALE_BLOCK; i++)
+ {
+ II_step_two(bit_alloc, fraction, scale, fr, i >> 2);
+ for (j = 0; j < 3; j++)
+ {
+ if (single >= 0)
+ {
+ (fr->synth_mono) (fraction[single][j], mpg123_pcm_sample, &mpg123_pcm_point);
+ }
+ else
+ {
+ int p1 = mpg123_pcm_point;
+
+ (fr->synth) (fraction[0][j], 0, mpg123_pcm_sample, &p1);
+ (fr->synth) (fraction[1][j], 1, mpg123_pcm_sample, &mpg123_pcm_point);
+ }
+
+ /* if(mpg123_pcm_point >= audiobufsize)
+ audio_flush(outmode,ai); */
+ }
+ }
+/***
+ if (mpg123_info->output_audio)
+ {
+
+ mpg123_ip.add_vis_pcm(mpg123_ip.output->written_time(), mpg123_cfg.resolution == 16 ? FMT_S16_NE : FMT_U8,
+ mpg123_cfg.channels == 2 ? fr->stereo : 1, mpg123_pcm_point, mpg123_pcm_sample);
+
+ while (mpg123_ip.output->buffer_free() < mpg123_pcm_point && mpg123_info->going && mpg123_info->jump_to_time == -1)
+ xmms_usleep(10000);
+ if (mpg123_info->going && mpg123_info->jump_to_time == -1)
+ mpg123_ip.output->write_audio(mpg123_pcm_sample, mpg123_pcm_point);
+
+ }
+***/
+ mpg123_pcm_point = 0;
+
+ return 1;
+}
diff --git a/src/libmpg123/layer3.c b/src/libmpg123/layer3.c
new file mode 100755
index 0000000..c7cb8cd
--- /dev/null
+++ b/src/libmpg123/layer3.c
@@ -0,0 +1,2100 @@
+
+/*
+ * Mpeg Layer-3 audio decoder
+ * --------------------------
+ * copyright (c) 1995-1999 by Michael Hipp.
+ * All rights reserved. See also 'README'
+ *
+ * Optimize-TODO: put short bands into the band-field without the stride of 3 reals
+ * Length-optimze: unify long and short band code where it is possible
+ */
+
+#include <stdlib.h>
+#include "mpg123.h"
+#include "huffman.h"
+
+#include "getbits.h"
+
+static real ispow[8207];
+static real aa_ca[8], aa_cs[8];
+static real COS1[12][6];
+static real win[4][36];
+static real win1[4][36];
+static real gainpow2[256 + 118 + 4];
+real COS9[9];
+static real COS6_1, COS6_2;
+real tfcos36[9];
+static real tfcos12[3];
+#define NEW_DCT9
+#ifdef NEW_DCT9
+static real cos9[3], cos18[3];
+#endif
+
+struct bandInfoStruct
+{
+ int longIdx[23];
+ int longDiff[22];
+ int shortIdx[14];
+ int shortDiff[13];
+};
+
+int longLimit[9][23];
+int shortLimit[9][14];
+
+/* Used by the getbits macros */
+static unsigned long rval;
+static unsigned char rval_uc;
+
+struct bandInfoStruct bandInfo[9] =
+{
+/* MPEG 1.0 */
+ { {0,4,8,12,16,20,24,30,36,44,52,62,74, 90,110,134,162,196,238,288,342,418,576},
+ {4,4,4,4,4,4,6,6,8, 8,10,12,16,20,24,28,34,42,50,54, 76,158},
+ {0,4*3,8*3,12*3,16*3,22*3,30*3,40*3,52*3,66*3, 84*3,106*3,136*3,192*3},
+ {4,4,4,4,6,8,10,12,14,18,22,30,56} } ,
+
+ { {0,4,8,12,16,20,24,30,36,42,50,60,72, 88,106,128,156,190,230,276,330,384,576},
+ {4,4,4,4,4,4,6,6,6, 8,10,12,16,18,22,28,34,40,46,54, 54,192},
+ {0,4*3,8*3,12*3,16*3,22*3,28*3,38*3,50*3,64*3, 80*3,100*3,126*3,192*3},
+ {4,4,4,4,6,6,10,12,14,16,20,26,66} } ,
+
+ { {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576} ,
+ {4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102, 26} ,
+ {0,4*3,8*3,12*3,16*3,22*3,30*3,42*3,58*3,78*3,104*3,138*3,180*3,192*3} ,
+ {4,4,4,4,6,8,12,16,20,26,34,42,12} } ,
+
+/* MPEG 2.0 */
+ { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576},
+ {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 } ,
+ {0,4*3,8*3,12*3,18*3,24*3,32*3,42*3,56*3,74*3,100*3,132*3,174*3,192*3} ,
+ {4,4,4,6,6,8,10,14,18,26,32,42,18 } } ,
+/*
+ { {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,330,394,464,540,576},
+ {6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,52,64,70,76,36 } ,
+*/
+/* changed 19th value fropm 330 to 332 */
+ { {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,332,394,464,540,576},
+ {6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36 } ,
+ {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,136*3,180*3,192*3} ,
+ {4,4,4,6,8,10,12,14,18,24,32,44,12 } } ,
+
+ { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576},
+ {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 },
+ {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,134*3,174*3,192*3},
+ {4,4,4,6,8,10,12,14,18,24,30,40,18 } } ,
+/* MPEG 2.5 */
+ { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} ,
+ {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54},
+ {0,12,24,36,54,78,108,144,186,240,312,402,522,576},
+ {4,4,4,6,8,10,12,14,18,24,30,40,18} },
+ { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} ,
+ {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54},
+ {0,12,24,36,54,78,108,144,186,240,312,402,522,576},
+ {4,4,4,6,8,10,12,14,18,24,30,40,18} },
+ { {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576},
+ {12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2},
+ {0, 24, 48, 72,108,156,216,288,372,480,486,492,498,576},
+ {8,8,8,12,16,20,24,28,36,2,2,2,26} } ,
+};
+
+static int mapbuf0[9][152];
+static int mapbuf1[9][156];
+static int mapbuf2[9][44];
+static int *map[9][3];
+static int *mapend[9][3];
+
+static unsigned int n_slen2[512]; /* MPEG 2.0 slen for 'normal' mode */
+static unsigned int i_slen2[256]; /* MPEG 2.0 slen for intensity stereo */
+
+static real tan1_1[16], tan2_1[16], tan1_2[16], tan2_2[16];
+static real pow1_1[2][16], pow2_1[2][16], pow1_2[2][16], pow2_2[2][16];
+
+/*
+ * init tables for layer-3
+ */
+void mpg123_init_layer3(int down_sample_sblimit)
+{
+ int i, j, k, l;
+
+ for (i = -256; i < 118 + 4; i++)
+ gainpow2[i + 256] = pow((double) 2.0, -0.25 * (double) (i + 210));
+
+ for (i = 0; i < 8207; i++)
+ ispow[i] = pow((double) i, (double) 4.0 / 3.0);
+
+ for (i = 0; i < 8; i++)
+ {
+ static double Ci[8] =
+ {-0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037};
+ double sq = sqrt(1.0 + Ci[i] * Ci[i]);
+
+ aa_cs[i] = 1.0 / sq;
+ aa_ca[i] = Ci[i] / sq;
+ }
+
+ for (i = 0; i < 18; i++)
+ {
+ win[0][i] = win[1][i] = 0.5 * sin(M_PI / 72.0 * (double) (2 * (i + 0) + 1)) / cos(M_PI * (double) (2 * (i + 0) + 19) / 72.0);
+ win[0][i + 18] = win[3][i + 18] = 0.5 * sin(M_PI / 72.0 * (double) (2 * (i + 18) + 1)) / cos(M_PI * (double) (2 * (i + 18) + 19) / 72.0);
+ }
+ for (i = 0; i < 6; i++)
+ {
+ win[1][i + 18] = 0.5 / cos(M_PI * (double) (2 * (i + 18) + 19) / 72.0);
+ win[3][i + 12] = 0.5 / cos(M_PI * (double) (2 * (i + 12) + 19) / 72.0);
+ win[1][i + 24] = 0.5 * sin(M_PI / 24.0 * (double) (2 * i + 13)) / cos(M_PI * (double) (2 * (i + 24) + 19) / 72.0);
+ win[1][i + 30] = win[3][i] = 0.0;
+ win[3][i + 6] = 0.5 * sin(M_PI / 24.0 * (double) (2 * i + 1)) / cos(M_PI * (double) (2 * (i + 6) + 19) / 72.0);
+ }
+
+ for (i = 0; i < 9; i++)
+ COS9[i] = cos(M_PI / 18.0 * (double) i);
+
+ for (i = 0; i < 9; i++)
+ tfcos36[i] = 0.5 / cos(M_PI * (double) (i * 2 + 1) / 36.0);
+ for (i = 0; i < 3; i++)
+ tfcos12[i] = 0.5 / cos(M_PI * (double) (i * 2 + 1) / 12.0);
+
+ COS6_1 = cos(M_PI / 6.0 * (double) 1);
+ COS6_2 = cos(M_PI / 6.0 * (double) 2);
+
+#ifdef NEW_DCT9
+ cos9[0] = cos(1.0 * M_PI / 9.0);
+ cos9[1] = cos(5.0 * M_PI / 9.0);
+ cos9[2] = cos(7.0 * M_PI / 9.0);
+ cos18[0] = cos(1.0 * M_PI / 18.0);
+ cos18[1] = cos(11.0 * M_PI / 18.0);
+ cos18[2] = cos(13.0 * M_PI / 18.0);
+#endif
+
+ for (i = 0; i < 12; i++)
+ {
+ win[2][i] = 0.5 * sin(M_PI / 24.0 * (double) (2 * i + 1)) / cos(M_PI * (double) (2 * i + 7) / 24.0);
+ for (j = 0; j < 6; j++)
+ COS1[i][j] = cos(M_PI / 24.0 * (double) ((2 * i + 7) * (2 * j + 1)));
+ }
+
+ for (j = 0; j < 4; j++)
+ {
+ static int len[4] = { 36, 36, 12, 36 };
+
+ for (i = 0; i < len[j]; i += 2)
+ win1[j][i] = +win[j][i];
+ for (i = 1; i < len[j]; i += 2)
+ win1[j][i] = -win[j][i];
+ }
+
+ for (i = 0; i < 16; i++)
+ {
+ double t = tan((double) i * M_PI / 12.0);
+
+ tan1_1[i] = t / (1.0 + t);
+ tan2_1[i] = 1.0 / (1.0 + t);
+ tan1_2[i] = M_SQRT2 * t / (1.0 + t);
+ tan2_2[i] = M_SQRT2 / (1.0 + t);
+
+ for (j = 0; j < 2; j++)
+ {
+ double base = pow(2.0, -0.25 * (j + 1.0));
+ double p1 = 1.0, p2 = 1.0;
+
+ if (i > 0)
+ {
+ if (i & 1)
+ p1 = pow(base, (i + 1.0) * 0.5);
+ else
+ p2 = pow(base, i * 0.5);
+ }
+ pow1_1[j][i] = p1;
+ pow2_1[j][i] = p2;
+ pow1_2[j][i] = M_SQRT2 * p1;
+ pow2_2[j][i] = M_SQRT2 * p2;
+ }
+ }
+
+ for (j = 0; j < 9; j++)
+ {
+ struct bandInfoStruct *bi = &bandInfo[j];
+ int *mp;
+ int cb, lwin;
+ int *bdf;
+
+ mp = map[j][0] = mapbuf0[j];
+ bdf = bi->longDiff;
+ for (i = 0, cb = 0; cb < 8; cb++, i += *bdf++)
+ {
+ *mp++ = (*bdf) >> 1;
+ *mp++ = i;
+ *mp++ = 3;
+ *mp++ = cb;
+ }
+ bdf = bi->shortDiff + 3;
+ for (cb = 3; cb < 13; cb++)
+ {
+ int l = (*bdf++) >> 1;
+
+ for (lwin = 0; lwin < 3; lwin++)
+ {
+ *mp++ = l;
+ *mp++ = i + lwin;
+ *mp++ = lwin;
+ *mp++ = cb;
+ }
+ i += 6 * l;
+ }
+ mapend[j][0] = mp;
+
+ mp = map[j][1] = mapbuf1[j];
+ bdf = bi->shortDiff + 0;
+ for (i = 0, cb = 0; cb < 13; cb++)
+ {
+ int l = (*bdf++) >> 1;
+
+ for (lwin = 0; lwin < 3; lwin++)
+ {
+ *mp++ = l;
+ *mp++ = i + lwin;
+ *mp++ = lwin;
+ *mp++ = cb;
+ }
+ i += 6 * l;
+ }
+ mapend[j][1] = mp;
+
+ mp = map[j][2] = mapbuf2[j];
+ bdf = bi->longDiff;
+ for (cb = 0; cb < 22; cb++)
+ {
+ *mp++ = (*bdf++) >> 1;
+ *mp++ = cb;
+ }
+ mapend[j][2] = mp;
+
+ }
+
+ for (j = 0; j < 9; j++)
+ {
+ for (i = 0; i < 23; i++)
+ {
+ longLimit[j][i] = (bandInfo[j].longIdx[i] - 1 + 8) / 18 + 1;
+ if (longLimit[j][i] > (down_sample_sblimit))
+ longLimit[j][i] = down_sample_sblimit;
+ }
+ for (i = 0; i < 14; i++)
+ {
+ shortLimit[j][i] = (bandInfo[j].shortIdx[i] - 1) / 18 + 1;
+ if (shortLimit[j][i] > (down_sample_sblimit))
+ shortLimit[j][i] = down_sample_sblimit;
+ }
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 6; j++)
+ {
+ for (k = 0; k < 6; k++)
+ {
+ int n = k + j * 6 + i * 36;
+
+ i_slen2[n] = i | (j << 3) | (k << 6) | (3 << 12);
+ }
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ for (k = 0; k < 4; k++)
+ {
+ int n = k + j * 4 + i * 16;
+
+ i_slen2[n + 180] = i | (j << 3) | (k << 6) | (4 << 12);
+ }
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 3; j++)
+ {
+ int n = j + i * 3;
+
+ i_slen2[n + 244] = i | (j << 3) | (5 << 12);
+ n_slen2[n + 500] = i | (j << 3) | (2 << 12) | (1 << 15);
+ }
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ for (k = 0; k < 4; k++)
+ {
+ for (l = 0; l < 4; l++)
+ {
+ int n = l + k * 4 + j * 16 + i * 80;
+
+ n_slen2[n] = i | (j << 3) | (k << 6) | (l << 9) | (0 << 12);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ for (k = 0; k < 4; k++)
+ {
+ int n = k + j * 4 + i * 20;
+
+ n_slen2[n + 400] = i | (j << 3) | (k << 6) | (1 << 12);
+ }
+ }
+ }
+}
+
+/*
+ * read additional side information (for MPEG 1 and MPEG 2)
+ */
+static int III_get_side_info(struct III_sideinfo *si, int stereo,
+ int ms_stereo, long sfreq, int single, int lsf)
+{
+ int ch, gr;
+ int powdiff = (single == 3) ? 4 : 0;
+
+ static const int tabs[2][5] = { {2, 9, 5, 3, 4}, {1, 8, 1, 2, 9} };
+ const int *tab = tabs[lsf];
+
+ si->main_data_begin = mpg123_getbits(tab[1]);
+ if (stereo == 1)
+ si->private_bits = mpg123_getbits_fast(tab[2]);
+ else
+ si->private_bits = mpg123_getbits_fast(tab[3]);
+
+ if (!lsf)
+ {
+ for (ch = 0; ch < stereo; ch++)
+ {
+ si->ch[ch].gr[0].scfsi = -1;
+ si->ch[ch].gr[1].scfsi = mpg123_getbits_fast(4);
+ }
+ }
+
+ for (gr = 0; gr < tab[0]; gr++)
+ {
+ for (ch = 0; ch < stereo; ch++)
+ {
+ register struct gr_info_s *gr_info = &(si->ch[ch].gr[gr]);
+
+ gr_info->part2_3_length = mpg123_getbits(12);
+ gr_info->big_values = mpg123_getbits(9);
+ if (gr_info->big_values > 288)
+ {
+ /* fprintf(stderr, "big_values too large!\n"); */
+ /* gr_info->big_values = 288; */
+ return 0;
+ }
+ gr_info->pow2gain = gainpow2 + 256 - mpg123_getbits_fast(8) + powdiff;
+ if (ms_stereo)
+ gr_info->pow2gain += 2;
+ gr_info->scalefac_compress = mpg123_getbits(tab[4]);
+
+ if (mpg123_get1bit())
+ { /* window switch flag */
+ int i;
+
+ gr_info->block_type = mpg123_getbits_fast(2);
+ gr_info->mixed_block_flag = mpg123_get1bit();
+ gr_info->table_select[0] = mpg123_getbits_fast(5);
+ gr_info->table_select[1] = mpg123_getbits_fast(5);
+ /*
+ * table_select[2] not needed, because
+ * there is no region2, but to satisfy
+ * some verifications tools we set it
+ * either.
+ */
+ gr_info->table_select[2] = 0;
+ for (i = 0; i < 3; i++)
+ gr_info->full_gain[i] = gr_info->pow2gain + (mpg123_getbits_fast(3) << 3);
+
+ if (gr_info->block_type == 0)
+ {
+ /* fprintf(stderr, "Blocktype == 0 and window-switching == 1 not allowed.\n"); */
+ /* exit(1); */
+ return 0;
+ }
+
+ /* region_count/start parameters are implicit in this case. */
+ if (!lsf || gr_info->block_type == 2)
+ gr_info->region1start = 36 >> 1;
+ else
+ {
+ /* check this again for 2.5 and sfreq=8 */
+ if (sfreq == 8)
+ gr_info->region1start = 108 >> 1;
+ else
+ gr_info->region1start = 54 >> 1;
+ }
+ gr_info->region2start = 576 >> 1;
+ }
+ else
+ {
+ int i, r0c, r1c;
+
+ for (i = 0; i < 3; i++)
+ gr_info->table_select[i] = mpg123_getbits_fast(5);
+ r0c = mpg123_getbits_fast(4);
+ r1c = mpg123_getbits_fast(3);
+ gr_info->region1start = bandInfo[sfreq].longIdx[r0c + 1] >> 1;
+ if (r0c + r1c + 2 > 22)
+ gr_info->region2start = 576 >> 1;
+ else
+ gr_info->region2start = bandInfo[sfreq].longIdx[r0c + 1 + r1c + 1] >> 1;
+ gr_info->block_type = 0;
+ gr_info->mixed_block_flag = 0;
+ }
+ if (!lsf)
+ gr_info->preflag = mpg123_get1bit();
+ gr_info->scalefac_scale = mpg123_get1bit();
+ gr_info->count1table_select = mpg123_get1bit();
+ }
+ }
+ return 1;
+}
+
+
+/*
+ * read scalefactors
+ */
+static int III_get_scale_factors_1(int *scf, struct gr_info_s *gr_info)
+{
+ static const unsigned char slen[2][16] = {
+ {0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4},
+ {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3}
+ };
+ int numbits;
+ int num0 = slen[0][gr_info->scalefac_compress];
+ int num1 = slen[1][gr_info->scalefac_compress];
+
+ if (gr_info->block_type == 2)
+ {
+ int i = 18;
+
+ numbits = (num0 + num1) * 18;
+
+ if (gr_info->mixed_block_flag)
+ {
+ for (i = 8; i; i--)
+ *scf++ = mpg123_getbits_fast(num0);
+ i = 9;
+ numbits -= num0; /* num0 * 17 + num1 * 18 */
+ }
+
+ for (; i; i--)
+ *scf++ = mpg123_getbits_fast(num0);
+ for (i = 18; i; i--)
+ *scf++ = mpg123_getbits_fast(num1);
+ *scf++ = 0;
+ *scf++ = 0;
+ *scf++ = 0; /* short[13][0..2] = 0 */
+ }
+ else
+ {
+ int i;
+ int scfsi = gr_info->scfsi;
+
+ if (scfsi < 0)
+ { /* scfsi < 0 => granule == 0 */
+ for (i = 11; i; i--)
+ *scf++ = mpg123_getbits_fast(num0);
+ for (i = 10; i; i--)
+ *scf++ = mpg123_getbits_fast(num1);
+ numbits = (num0 + num1) * 10 + num0;
+ *scf++ = 0;
+ }
+ else
+ {
+ numbits = 0;
+ if (!(scfsi & 0x8))
+ {
+ for (i = 0; i < 6; i++)
+ *scf++ = mpg123_getbits_fast(num0);
+ numbits += num0 * 6;
+ }
+ else
+ {
+ scf += 6;
+ }
+
+ if (!(scfsi & 0x4))
+ {
+ for (i = 0; i < 5; i++)
+ *scf++ = mpg123_getbits_fast(num0);
+ numbits += num0 * 5;
+ }
+ else
+ {
+ scf += 5;
+ }
+
+ if (!(scfsi & 0x2))
+ {
+ for (i = 0; i < 5; i++)
+ *scf++ = mpg123_getbits_fast(num1);
+ numbits += num1 * 5;
+ }
+ else
+ {
+ scf += 5;
+ }
+
+ if (!(scfsi & 0x1))
+ {
+ for (i = 0; i < 5; i++)
+ *scf++ = mpg123_getbits_fast(num1);
+ numbits += num1 * 5;
+ }
+ else
+ {
+ scf += 5;
+ }
+ *scf++ = 0; /* no l[21] in original sources */
+ }
+ }
+ return numbits;
+}
+
+static int III_get_scale_factors_2(int *scf, struct gr_info_s *gr_info, int i_stereo)
+{
+ unsigned char *pnt;
+ int i, j, n = 0, numbits = 0;
+ unsigned int slen;
+
+ static unsigned char stab[3][6][4] =
+ {
+ {{6, 5, 5, 5}, {6, 5, 7, 3}, {11, 10, 0, 0},
+ {7, 7, 7, 0}, {6, 6, 6, 3}, {8, 8, 5, 0}},
+ {{9, 9, 9, 9}, {9, 9, 12, 6}, {18, 18, 0, 0},
+ {12, 12, 12, 0}, {12, 9, 9, 6}, {15, 12, 9, 0}},
+ {{6, 9, 9, 9}, {6, 9, 12, 6}, {15, 18, 0, 0},
+ {6, 15, 12, 0}, {6, 12, 9, 6}, {6, 18, 9, 0}}
+ };
+
+ if (i_stereo) /* i_stereo AND second channel -> mpg123_do_layer3() checks this */
+ slen = i_slen2[gr_info->scalefac_compress >> 1];
+ else
+ slen = n_slen2[gr_info->scalefac_compress];
+
+ gr_info->preflag = (slen >> 15) & 0x1;
+
+ n = 0;
+ if (gr_info->block_type == 2)
+ {
+ n++;
+ if (gr_info->mixed_block_flag)
+ n++;
+ }
+
+ pnt = stab[n][(slen >> 12) & 0x7];
+
+ for (i = 0; i < 4; i++)
+ {
+ int num = slen & 0x7;
+
+ slen >>= 3;
+ if (num)
+ {
+ for (j = 0; j < (int) (pnt[i]); j++)
+ *scf++ = mpg123_getbits_fast(num);
+ numbits += pnt[i] * num;
+ }
+ else
+ {
+ for (j = 0; j < (int) (pnt[i]); j++)
+ *scf++ = 0;
+ }
+ }
+
+ n = (n << 1) + 1;
+ for (i = 0; i < n; i++)
+ *scf++ = 0;
+
+ return numbits;
+}
+
+static int pretab1[22] =
+{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0};
+static int pretab2[22] =
+{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+/*
+ * Dequantize samples (includes huffman decoding)
+ */
+/* 24 is enough because tab13 has max. a 19 bit huffvector */
+#define BITSHIFT (int)((sizeof (long) - 1) * 8)
+
+#define REFRESH_MASK() \
+while(num < BITSHIFT) { \
+ mask |= ((unsigned long)mpg123_getbyte()) << (BITSHIFT - num); \
+ num += 8; \
+ part2remain -= 8; \
+}
+
+static int III_dequantize_sample(real xr[SBLIMIT][SSLIMIT], int *scf,
+ struct gr_info_s *gr_info, int sfreq, int part2bits)
+{
+ int shift = 1 + gr_info->scalefac_scale;
+ real *xrpnt = (real *) xr;
+ int l[3], l3;
+ int part2remain = gr_info->part2_3_length - part2bits;
+ int *me;
+
+ int num = mpg123_getbitoffset();
+ long mask;
+ /* we must split this, because for num==0 the shift is undefined if you do it in one step */
+ mask = ((unsigned long) mpg123_getbits(num)) << BITSHIFT;
+ mask <<= 8 - num;
+ part2remain -= num;
+
+ {
+ int bv = gr_info->big_values;
+ int region1 = gr_info->region1start;
+ int region2 = gr_info->region2start;
+
+ l3 = ((576 >> 1) - bv) >> 1;
+/*
+ * we may lose the 'odd' bit here !!
+ * check this later again
+ */
+ if (bv <= region1)
+ {
+ l[0] = bv;
+ l[1] = 0;
+ l[2] = 0;
+ }
+ else
+ {
+ l[0] = region1;
+ if (bv <= region2)
+ {
+ l[1] = bv - l[0];
+ l[2] = 0;
+ }
+ else
+ {
+ l[1] = region2 - l[0];
+ l[2] = bv - region2;
+ }
+ }
+ }
+
+ if (gr_info->block_type == 2)
+ {
+ /*
+ * decoding with short or mixed mode BandIndex table
+ */
+ int i, max[4];
+ int step = 0, lwin = 3, cb = 0;
+ register real v = 0.0;
+ register int *m, mc;
+
+ if (gr_info->mixed_block_flag)
+ {
+ max[3] = -1;
+ max[0] = max[1] = max[2] = 2;
+ m = map[sfreq][0];
+ me = mapend[sfreq][0];
+ }
+ else
+ {
+ max[0] = max[1] = max[2] = max[3] = -1;
+ /* max[3] not really needed in this case */
+ m = map[sfreq][1];
+ me = mapend[sfreq][1];
+ }
+
+ mc = 0;
+ for (i = 0; i < 2; i++)
+ {
+ int lp = l[i];
+ struct newhuff *h = ht + gr_info->table_select[i];
+
+ for (; lp; lp--, mc--)
+ {
+ register int x, y;
+ if ((!mc))
+ {
+ mc = *m++;
+ xrpnt = ((real *) xr) + (*m++);
+ lwin = *m++;
+ cb = *m++;
+ if (lwin == 3)
+ {
+ v = gr_info->pow2gain[(*scf++) << shift];
+ step = 1;
+ }
+ else
+ {
+ v = gr_info->full_gain[lwin][(*scf++) << shift];
+ step = 3;
+ }
+ }
+ {
+ register short *val = h->table;
+
+ REFRESH_MASK();
+ while ((y = *val++) < 0)
+ {
+ if (mask < 0)
+ val -= y;
+ num--;
+ mask <<= 1;
+ }
+ x = y >> 4;
+ y &= 0xf;
+ }
+ if (x == 15 && h->linbits)
+ {
+ max[lwin] = cb;
+ REFRESH_MASK();
+ x += ((unsigned long) mask) >> (BITSHIFT + 8 - h->linbits);
+ num -= h->linbits + 1;
+ mask <<= h->linbits;
+ if (mask < 0)
+ *xrpnt = -ispow[x] * v;
+ else
+ *xrpnt = ispow[x] * v;
+ mask <<= 1;
+ }
+ else if (x)
+ {
+ max[lwin] = cb;
+ if (mask < 0)
+ *xrpnt = -ispow[x] * v;
+ else
+ *xrpnt = ispow[x] * v;
+ num--;
+ mask <<= 1;
+ }
+ else
+ *xrpnt = 0.0;
+ xrpnt += step;
+ if (y == 15 && h->linbits)
+ {
+ max[lwin] = cb;
+ REFRESH_MASK();
+ y += ((unsigned long) mask) >> (BITSHIFT + 8 - h->linbits);
+ num -= h->linbits + 1;
+ mask <<= h->linbits;
+ if (mask < 0)
+ *xrpnt = -ispow[y] * v;
+ else
+ *xrpnt = ispow[y] * v;
+ mask <<= 1;
+ }
+ else if (y)
+ {
+ max[lwin] = cb;
+ if (mask < 0)
+ *xrpnt = -ispow[y] * v;
+ else
+ *xrpnt = ispow[y] * v;
+ num--;
+ mask <<= 1;
+ }
+ else
+ *xrpnt = 0.0;
+ xrpnt += step;
+ }
+ }
+
+ for (; l3 && (part2remain + num > 0); l3--)
+ {
+ struct newhuff *h = htc + gr_info->count1table_select;
+ register short *val = h->table, a;
+
+ REFRESH_MASK();
+ while ((a = *val++) < 0)
+ {
+ if (mask < 0)
+ val -= a;
+ num--;
+ mask <<= 1;
+ }
+ if (part2remain + num <= 0)
+ {
+ num -= part2remain + num;
+ break;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (!(i & 1))
+ {
+ if (!mc)
+ {
+ mc = *m++;
+ xrpnt = ((real *) xr) + (*m++);
+ lwin = *m++;
+ cb = *m++;
+ if (lwin == 3)
+ {
+ v = gr_info->pow2gain[(*scf++) << shift];
+ step = 1;
+ }
+ else
+ {
+ v = gr_info->full_gain[lwin][(*scf++) << shift];
+ step = 3;
+ }
+ }
+ mc--;
+ }
+ if ((a & (0x8 >> i)))
+ {
+ max[lwin] = cb;
+ if (part2remain + num <= 0)
+ {
+ break;
+ }
+ if (mask < 0)
+ *xrpnt = -v;
+ else
+ *xrpnt = v;
+ num--;
+ mask <<= 1;
+ }
+ else
+ *xrpnt = 0.0;
+ xrpnt += step;
+ }
+ }
+
+ if (lwin < 3)
+ { /* short band? */
+ while (1)
+ {
+ /* HACK Prevent overflowing the xr buffer */
+ if (mc * 6 > &xr[SBLIMIT][SSLIMIT] - xrpnt)
+ return 1;
+
+ for (; mc > 0; mc--)
+ {
+ *xrpnt = 0.0;
+ xrpnt += 3; /* short band -> step=3 */
+ *xrpnt = 0.0;
+ xrpnt += 3;
+ }
+ if (m >= me)
+ break;
+ mc = *m++;
+ xrpnt = ((real *) xr) + *m++;
+ if (*m++ == 0)
+ break; /* optimize: field will be set to zero at the end of the function */
+ m++; /* cb */
+ }
+ }
+
+ gr_info->maxband[0] = max[0] + 1;
+ gr_info->maxband[1] = max[1] + 1;
+ gr_info->maxband[2] = max[2] + 1;
+ gr_info->maxbandl = max[3] + 1;
+
+ {
+ int rmax = max[0] > max[1] ? max[0] : max[1];
+
+ rmax = (rmax > max[2] ? rmax : max[2]) + 1;
+ gr_info->maxb = rmax ? shortLimit[sfreq][rmax] : longLimit[sfreq][max[3] + 1];
+ }
+
+ }
+ else
+ {
+ /*
+ * decoding with 'long' BandIndex table (block_type != 2)
+ */
+ int *pretab = gr_info->preflag ? pretab1 : pretab2;
+ int i, max = -1;
+ int cb = 0;
+ int *m = map[sfreq][2];
+ register real v = 0.0;
+ int mc = 0;
+
+ /*
+ * long hash table values
+ */
+ for (i = 0; i < 3; i++)
+ {
+ int lp = l[i];
+ struct newhuff *h = ht + gr_info->table_select[i];
+
+ for (; lp; lp--, mc--)
+ {
+ int x, y;
+
+ if (!mc)
+ {
+ mc = *m++;
+ cb = *m++;
+/* if (cb == 21) */
+/* v = 0.0; */
+/* else */
+ v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift];
+
+ }
+ {
+ register short *val = h->table;
+ REFRESH_MASK();
+ while ((y = *val++) < 0)
+ {
+ if (mask < 0)
+ val -= y;
+ num--;
+ mask <<= 1;
+ }
+ x = y >> 4;
+ y &= 0xf;
+ }
+
+ if (x == 15 && h->linbits)
+ {
+ max = cb;
+ REFRESH_MASK();
+ x += ((unsigned long) mask) >> (BITSHIFT + 8 - h->linbits);
+ num -= h->linbits + 1;
+ mask <<= h->linbits;
+ if (mask < 0)
+ *xrpnt++ = -ispow[x] * v;
+ else
+ *xrpnt++ = ispow[x] * v;
+ mask <<= 1;
+ }
+ else if (x)
+ {
+ max = cb;
+ if (mask < 0)
+ *xrpnt++ = -ispow[x] * v;
+ else
+ *xrpnt++ = ispow[x] * v;
+ num--;
+ mask <<= 1;
+ }
+ else
+ *xrpnt++ = 0.0;
+
+ if (y == 15 && h->linbits)
+ {
+ max = cb;
+ REFRESH_MASK();
+ y += ((unsigned long) mask) >> (BITSHIFT + 8 - h->linbits);
+ num -= h->linbits + 1;
+ mask <<= h->linbits;
+ if (mask < 0)
+ *xrpnt++ = -ispow[y] * v;
+ else
+ *xrpnt++ = ispow[y] * v;
+ mask <<= 1;
+ }
+ else if (y)
+ {
+ max = cb;
+ if (mask < 0)
+ *xrpnt++ = -ispow[y] * v;
+ else
+ *xrpnt++ = ispow[y] * v;
+ num--;
+ mask <<= 1;
+ }
+ else
+ *xrpnt++ = 0.0;
+ }
+ }
+
+ /*
+ * short (count1table) values
+ */
+ for (; l3 && (part2remain + num > 0); l3--)
+ {
+ struct newhuff *h = htc + gr_info->count1table_select;
+ register short *val = h->table, a;
+
+ REFRESH_MASK();
+ while ((a = *val++) < 0)
+ {
+ if (mask < 0)
+ val -= a;
+ num--;
+ mask <<= 1;
+ }
+ if (part2remain + num <= 0)
+ {
+ num -= part2remain + num;
+ break;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (!(i & 1))
+ {
+ if (!mc)
+ {
+ mc = *m++;
+ cb = *m++;
+/* if (cb == 21) */
+/* v = 0.0; */
+/* else */
+ v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift];
+ }
+ mc--;
+ }
+ if ((a & (0x8 >> i)))
+ {
+ max = cb;
+ if (part2remain + num <= 0)
+ {
+ break;
+ }
+ if (mask < 0)
+ *xrpnt++ = -v;
+ else
+ *xrpnt++ = v;
+ num--;
+ mask <<= 1;
+ }
+ else
+ *xrpnt++ = 0.0;
+ }
+ }
+
+ gr_info->maxbandl = max + 1;
+ gr_info->maxb = longLimit[sfreq][gr_info->maxbandl];
+ }
+
+ part2remain += num;
+ mpg123_backbits(num);
+ num = 0;
+
+ while (xrpnt < &xr[SBLIMIT][0])
+ *xrpnt++ = 0.0;
+
+ while (part2remain > 16)
+ {
+ mpg123_getbits(16); /* Dismiss stuffing Bits */
+ part2remain -= 16;
+ }
+ if (part2remain > 0)
+ mpg123_getbits(part2remain);
+ else if (part2remain < 0)
+ {
+/* fprintf(stderr, "mpg123: Can't rewind stream by %d bits!\n", */
+/* -part2remain); */
+ return 1; /* -> error */
+ }
+ return 0;
+}
+
+/*
+ * III_stereo: calculate real channel values for Joint-I-Stereo-mode
+ */
+static void III_i_stereo(real xr_buf[2][SBLIMIT][SSLIMIT], int *scalefac, struct gr_info_s *gr_info, int sfreq, int ms_stereo, int lsf)
+{
+ real(*xr)[SBLIMIT * SSLIMIT] = (real(*)[SBLIMIT * SSLIMIT]) xr_buf;
+ struct bandInfoStruct *bi = &bandInfo[sfreq];
+
+ const real *tab1, *tab2;
+
+#if 1
+ int tab;
+ static const real *tabs[3][2][2] = {
+ {{tan1_1, tan2_1}, {tan1_2, tan2_2}},
+ {{pow1_1[0], pow2_1[0]}, {pow1_2[0], pow2_2[0]}},
+ {{pow1_1[1], pow2_1[1]}, {pow1_2[1], pow2_2[1]}}
+ };
+
+ tab = lsf + (gr_info->scalefac_compress & lsf);
+ tab1 = tabs[tab][ms_stereo][0];
+ tab2 = tabs[tab][ms_stereo][1];
+#else
+ if (lsf)
+ {
+ int p = gr_info->scalefac_compress & 0x1;
+
+ if (ms_stereo)
+ {
+ tab1 = pow1_2[p];
+ tab2 = pow2_2[p];
+ }
+ else
+ {
+ tab1 = pow1_1[p];
+ tab2 = pow2_1[p];
+ }
+ }
+ else
+ {
+ if (ms_stereo)
+ {
+ tab1 = tan1_2;
+ tab2 = tan2_2;
+ }
+ else
+ {
+ tab1 = tan1_1;
+ tab2 = tan2_1;
+ }
+ }
+#endif
+
+ if (gr_info->block_type == 2)
+ {
+ int lwin, do_l = 0;
+
+ if (gr_info->mixed_block_flag)
+ do_l = 1;
+
+ for (lwin = 0; lwin < 3; lwin++)
+ { /* process each window */
+ /* get first band with zero values */
+ int is_p, sb, idx, sfb = gr_info->maxband[lwin]; /* sfb is minimal 3 for mixed mode */
+
+ if (sfb > 3)
+ do_l = 0;
+
+ for (; sfb < 12; sfb++)
+ {
+ is_p = scalefac[sfb * 3 + lwin - gr_info->mixed_block_flag]; /* scale: 0-15 */
+ if (is_p != 7)
+ {
+ real t1, t2;
+
+ sb = bi->shortDiff[sfb];
+ idx = bi->shortIdx[sfb] + lwin;
+ t1 = tab1[is_p];
+ t2 = tab2[is_p];
+ for (; sb > 0; sb--, idx += 3)
+ {
+ real v = xr[0][idx];
+
+ xr[0][idx] = v * t1;
+ xr[1][idx] = v * t2;
+ }
+ }
+ }
+
+#if 1
+/* in the original: copy 10 to 11 , here: copy 11 to 12
+ maybe still wrong??? (copy 12 to 13?) */
+ is_p = scalefac[11 * 3 + lwin - gr_info->mixed_block_flag]; /* scale: 0-15 */
+ sb = bi->shortDiff[12];
+ idx = bi->shortIdx[12] + lwin;
+#else
+ is_p = scalefac[10 * 3 + lwin - gr_info->mixed_block_flag]; /* scale: 0-15 */
+ sb = bi->shortDiff[11];
+ idx = bi->shortIdx[11] + lwin;
+#endif
+ if (is_p != 7)
+ {
+ real t1, t2;
+ t1 = tab1[is_p];
+ t2 = tab2[is_p];
+ for (; sb > 0; sb--, idx += 3)
+ {
+ real v = xr[0][idx];
+ xr[0][idx] = v * t1;
+ xr[1][idx] = v * t2;
+ }
+ }
+ } /* end for(lwin; .. ; . ) */
+
+/* also check l-part, if ALL bands in the three windows are 'empty'
+ * and mode = mixed_mode
+ */
+ if (do_l)
+ {
+ int sfb = gr_info->maxbandl;
+ int idx = bi->longIdx[sfb];
+
+ for (; sfb < 8; sfb++)
+ {
+ int sb = bi->longDiff[sfb];
+ int is_p = scalefac[sfb]; /* scale: 0-15 */
+
+ if (is_p != 7)
+ {
+ real t1, t2;
+
+ t1 = tab1[is_p];
+ t2 = tab2[is_p];
+ for (; sb > 0; sb--, idx++)
+ {
+ real v = xr[0][idx];
+
+ xr[0][idx] = v * t1;
+ xr[1][idx] = v * t2;
+ }
+ }
+ else
+ idx += sb;
+ }
+ }
+ }
+ else
+ { /* ((gr_info->block_type != 2)) */
+ int sfb = gr_info->maxbandl;
+ int is_p, idx = bi->longIdx[sfb];
+
+/* hmm ... maybe the maxbandl stuff for i-stereo is buggy? */
+ if (sfb <= 21)
+ {
+ for (; sfb < 21; sfb++)
+ {
+ int sb = bi->longDiff[sfb];
+
+ is_p = scalefac[sfb]; /* scale: 0-15 */
+ if (is_p != 7)
+ {
+ real t1, t2;
+ t1 = tab1[is_p];
+ t2 = tab2[is_p];
+ for (; sb > 0; sb--, idx++)
+ {
+ real v = xr[0][idx];
+ xr[0][idx] = v * t1;
+ xr[1][idx] = v * t2;
+ }
+ }
+ else
+ idx += sb;
+ }
+
+ is_p = scalefac[20];
+ if (is_p != 7)
+ { /* copy l-band 20 to l-band 21 */
+ int sb;
+ real t1 = tab1[is_p], t2 = tab2[is_p];
+
+ for (sb = bi->longDiff[21]; sb > 0; sb--, idx++)
+ {
+ real v = xr[0][idx];
+
+ xr[0][idx] = v * t1;
+ xr[1][idx] = v * t2;
+ }
+ }
+ }
+ } /* ... */
+}
+
+static void III_antialias(real xr[SBLIMIT][SSLIMIT], struct gr_info_s *gr_info)
+{
+ int sblim;
+
+ if (gr_info->block_type == 2)
+ {
+ if (!gr_info->mixed_block_flag)
+ return;
+ sblim = 1;
+ }
+ else
+ {
+ sblim = gr_info->maxb - 1;
+ }
+
+ /* 31 alias-reduction operations between each pair of sub-bands */
+ /* with 8 butterflies between each pair */
+
+ {
+ int sb;
+ real *xr1 = (real *) xr[1];
+
+ if (sblim < 1 || sblim > SBLIMIT)
+ return;
+
+ for (sb = sblim; sb; sb--, xr1 += 10)
+ {
+ int ss;
+ real *cs = aa_cs, *ca = aa_ca;
+ real *xr2 = xr1;
+
+ for (ss = 7; ss >= 0; ss--)
+ { /* upper and lower butterfly inputs */
+ register real bu = *--xr2, bd = *xr1;
+
+ *xr2 = (bu * (*cs)) - (bd * (*ca));
+ *xr1++ = (bd * (*cs++)) + (bu * (*ca++));
+ }
+ }
+ }
+}
+
+/*
+ This is an optimized DCT from Jeff Tsay's maplay 1.2+ package.
+ Saved one multiplication by doing the 'twiddle factor' stuff
+ together with the window mul. (MH)
+
+ This uses Byeong Gi Lee's Fast Cosine Transform algorithm, but the
+ 9 point IDCT needs to be reduced further. Unfortunately, I don't
+ know how to do that, because 9 is not an even number. - Jeff.
+
+ ****************************************************************
+
+ 9 Point Inverse Discrete Cosine Transform
+
+ This piece of code is Copyright 1997 Mikko Tommila and is freely usable
+ by anybody. The algorithm itself is of course in the public domain.
+
+ Again derived heuristically from the 9-point WFTA.
+
+ The algorithm is optimized (?) for speed, not for small rounding errors or
+ good readability.
+
+ 36 additions, 11 multiplications
+
+ Again this is very likely sub-optimal.
+
+ The code is optimized to use a minimum number of temporary variables,
+ so it should compile quite well even on 8-register Intel x86 processors.
+ This makes the code quite obfuscated and very difficult to understand.
+
+ References:
+ [1] S. Winograd: "On Computing the Discrete Fourier Transform",
+ Mathematics of Computation, Volume 32, Number 141, January 1978,
+ Pages 175-199
+*/
+
+/*------------------------------------------------------------------*/
+/* */
+/* Function: Calculation of the inverse MDCT */
+/* */
+/*------------------------------------------------------------------*/
+
+#ifdef USE_3DNOW
+void dct36(real *inbuf,real *o1,real *o2,real *wintab,real *tsbuf)
+#else
+static void dct36(real * inbuf, real * o1, real * o2, real * wintab, real * tsbuf)
+#endif
+{
+#ifdef NEW_DCT9
+ real tmp[18];
+#endif
+
+ {
+ register real *in = inbuf;
+
+ in[17] += in[16];
+ in[16] += in[15];
+ in[15] += in[14];
+ in[14] += in[13];
+ in[13] += in[12];
+ in[12] += in[11];
+ in[11] += in[10];
+ in[10] += in[9];
+ in[9] += in[8];
+ in[8] += in[7];
+ in[7] += in[6];
+ in[6] += in[5];
+ in[5] += in[4];
+ in[4] += in[3];
+ in[3] += in[2];
+ in[2] += in[1];
+ in[1] += in[0];
+
+ in[17] += in[15];
+ in[15] += in[13];
+ in[13] += in[11];
+ in[11] += in[9];
+ in[9] += in[7];
+ in[7] += in[5];
+ in[5] += in[3];
+ in[3] += in[1];
+
+
+#ifdef NEW_DCT9
+#if 1
+ {
+ real t3;
+ {
+ real t0, t1, t2;
+
+ t0 = COS6_2 * (in[8] + in[16] - in[4]);
+ t1 = COS6_2 * in[12];
+
+ t3 = in[0];
+ t2 = t3 - t1 - t1;
+ tmp[1] = tmp[7] = t2 - t0;
+ tmp[4] = t2 + t0 + t0;
+ t3 += t1;
+
+ t2 = COS6_1 * (in[10] + in[14] - in[2]);
+ tmp[1] -= t2;
+ tmp[7] += t2;
+ }
+ {
+ real t0, t1, t2;
+
+ t0 = cos9[0] * (in[4] + in[8]);
+ t1 = cos9[1] * (in[8] - in[16]);
+ t2 = cos9[2] * (in[4] + in[16]);
+
+ tmp[2] = tmp[6] = t3 - t0 - t2;
+ tmp[0] = tmp[8] = t3 + t0 + t1;
+ tmp[3] = tmp[5] = t3 - t1 + t2;
+ }
+ }
+ {
+ real t1, t2, t3;
+
+ t1 = cos18[0] * (in[2] + in[10]);
+ t2 = cos18[1] * (in[10] - in[14]);
+ t3 = COS6_1 * in[6];
+
+ {
+ real t0 = t1 + t2 + t3;
+ tmp[0] += t0;
+ tmp[8] -= t0;
+ }
+
+ t2 -= t3;
+ t1 -= t3;
+
+ t3 = cos18[2] * (in[2] + in[14]);
+
+ t1 += t3;
+ tmp[3] += t1;
+ tmp[5] -= t1;
+
+ t2 -= t3;
+ tmp[2] += t2;
+ tmp[6] -= t2;
+ }
+
+#else
+ {
+ real t0, t1, t2, t3, t4, t5, t6, t7;
+
+ t1 = COS6_2 * in[12];
+ t2 = COS6_2 * (in[8] + in[16] - in[4]);
+
+ t3 = in[0] + t1;
+ t4 = in[0] - t1 - t1;
+ t5 = t4 - t2;
+ tmp[4] = t4 + t2 + t2;
+
+ t0 = cos9[0] * (in[4] + in[8]);
+ t1 = cos9[1] * (in[8] - in[16]);
+
+ t2 = cos9[2] * (in[4] + in[16]);
+
+ t6 = t3 - t0 - t2;
+ t0 += t3 + t1;
+ t3 += t2 - t1;
+
+ t2 = cos18[0] * (in[2] + in[10]);
+ t4 = cos18[1] * (in[10] - in[14]);
+ t7 = COS6_1 * in[6];
+
+ t1 = t2 + t4 + t7;
+ tmp[0] = t0 + t1;
+ tmp[8] = t0 - t1;
+ t1 = cos18[2] * (in[2] + in[14]);
+ t2 += t1 - t7;
+
+ tmp[3] = t3 + t2;
+ t0 = COS6_1 * (in[10] + in[14] - in[2]);
+ tmp[5] = t3 - t2;
+
+ t4 -= t1 + t7;
+
+ tmp[1] = t5 - t0;
+ tmp[7] = t5 + t0;
+ tmp[2] = t6 + t4;
+ tmp[6] = t6 - t4;
+ }
+#endif
+
+ {
+ real t0, t1, t2, t3, t4, t5, t6, t7;
+
+ t1 = COS6_2 * in[13];
+ t2 = COS6_2 * (in[9] + in[17] - in[5]);
+
+ t3 = in[1] + t1;
+ t4 = in[1] - t1 - t1;
+ t5 = t4 - t2;
+
+ t0 = cos9[0] * (in[5] + in[9]);
+ t1 = cos9[1] * (in[9] - in[17]);
+
+ tmp[13] = (t4 + t2 + t2) * tfcos36[17 - 13];
+ t2 = cos9[2] * (in[5] + in[17]);
+
+ t6 = t3 - t0 - t2;
+ t0 += t3 + t1;
+ t3 += t2 - t1;
+
+ t2 = cos18[0] * (in[3] + in[11]);
+ t4 = cos18[1] * (in[11] - in[15]);
+ t7 = COS6_1 * in[7];
+
+ t1 = t2 + t4 + t7;
+ tmp[17] = (t0 + t1) * tfcos36[17 - 17];
+ tmp[9] = (t0 - t1) * tfcos36[17 - 9];
+ t1 = cos18[2] * (in[3] + in[15]);
+ t2 += t1 - t7;
+
+ tmp[14] = (t3 + t2) * tfcos36[17 - 14];
+ t0 = COS6_1 * (in[11] + in[15] - in[3]);
+ tmp[12] = (t3 - t2) * tfcos36[17 - 12];
+
+ t4 -= t1 + t7;
+
+ tmp[16] = (t5 - t0) * tfcos36[17 - 16];
+ tmp[10] = (t5 + t0) * tfcos36[17 - 10];
+ tmp[15] = (t6 + t4) * tfcos36[17 - 15];
+ tmp[11] = (t6 - t4) * tfcos36[17 - 11];
+ }
+
+#define MACRO(v) \
+do { \
+ real tmpval; \
+ \
+ tmpval = tmp[(v)] + tmp[17-(v)]; \
+ out2[9+(v)] = tmpval * w[27+(v)]; \
+ out2[8-(v)] = tmpval * w[26-(v)]; \
+ tmpval = tmp[(v)] - tmp[17-(v)]; \
+ ts[SBLIMIT*(8-(v))] = out1[8-(v)] + tmpval * w[8-(v)]; \
+ ts[SBLIMIT*(9+(v))] = out1[9+(v)] + tmpval * w[9+(v)]; \
+} while (0)
+
+ {
+ register real *out2 = o2;
+ register real *w = wintab;
+ register real *out1 = o1;
+ register real *ts = tsbuf;
+
+ MACRO(0);
+ MACRO(1);
+ MACRO(2);
+ MACRO(3);
+ MACRO(4);
+ MACRO(5);
+ MACRO(6);
+ MACRO(7);
+ MACRO(8);
+ }
+
+#else
+
+ {
+
+#define MACRO0(v) \
+do { \
+ real tmp; \
+ out2[9+(v)] = (tmp = sum0 + sum1) * w[27+(v)]; \
+ out2[8-(v)] = tmp * w[26-(v)]; \
+ sum0 -= sum1; \
+ ts[SBLIMIT*(8-(v))] = out1[8-(v)] + sum0 * w[8-(v)]; \
+ ts[SBLIMIT*(9+(v))] = out1[9+(v)] + sum0 * w[9+(v)]; \
+} while (0)
+
+#define MACRO1(v) \
+do { \
+ real sum0,sum1; \
+ sum0 = tmp1a + tmp2a; \
+ sum1 = (tmp1b + tmp2b) * tfcos36[(v)]; \
+ MACRO0(v); \
+} while (0)
+
+#define MACRO2(v) \
+do { \
+ real sum0, sum1; \
+ sum0 = tmp2a - tmp1a; \
+ sum1 = (tmp2b - tmp1b) * tfcos36[(v)]; \
+ MACRO0(v); \
+} while (0)
+
+ register const real *c = COS9;
+ register real *out2 = o2;
+ register real *w = wintab;
+ register real *out1 = o1;
+ register real *ts = tsbuf;
+
+ real ta33, ta66, tb33, tb66;
+
+ ta33 = in[2 * 3 + 0] * c[3];
+ ta66 = in[2 * 6 + 0] * c[6] + in[2 * 0 + 0];
+ tb33 = in[2 * 3 + 1] * c[3];
+ tb66 = in[2 * 6 + 1] * c[6] + in[2 * 0 + 1];
+
+ {
+ real tmp1a, tmp2a, tmp1b, tmp2b;
+ tmp1a = in[2 * 1 + 0] * c[1] + ta33 + in[2 * 5 + 0] * c[5] + in[2 * 7 + 0] * c[7];
+ tmp1b = in[2 * 1 + 1] * c[1] + tb33 + in[2 * 5 + 1] * c[5] + in[2 * 7 + 1] * c[7];
+ tmp2a = in[2 * 2 + 0] * c[2] + in[2 * 4 + 0] * c[4] + ta66 + in[2 * 8 + 0] * c[8];
+ tmp2b = in[2 * 2 + 1] * c[2] + in[2 * 4 + 1] * c[4] + tb66 + in[2 * 8 + 1] * c[8];
+
+ MACRO1(0);
+ MACRO2(8);
+ }
+
+ {
+ real tmp1a, tmp2a, tmp1b, tmp2b;
+ tmp1a = (in[2 * 1 + 0] - in[2 * 5 + 0] - in[2 * 7 + 0]) * c[3];
+ tmp1b = (in[2 * 1 + 1] - in[2 * 5 + 1] - in[2 * 7 + 1]) * c[3];
+ tmp2a = (in[2 * 2 + 0] - in[2 * 4 + 0] - in[2 * 8 + 0]) * c[6] - in[2 * 6 + 0] + in[2 * 0 + 0];
+ tmp2b = (in[2 * 2 + 1] - in[2 * 4 + 1] - in[2 * 8 + 1]) * c[6] - in[2 * 6 + 1] + in[2 * 0 + 1];
+
+ MACRO1(1);
+ MACRO2(7);
+ }
+
+ {
+ real tmp1a, tmp2a, tmp1b, tmp2b;
+ tmp1a = in[2 * 1 + 0] * c[5] - ta33 - in[2 * 5 + 0] * c[7] + in[2 * 7 + 0] * c[1];
+ tmp1b = in[2 * 1 + 1] * c[5] - tb33 - in[2 * 5 + 1] * c[7] + in[2 * 7 + 1] * c[1];
+ tmp2a = -in[2 * 2 + 0] * c[8] - in[2 * 4 + 0] * c[2] + ta66 + in[2 * 8 + 0] * c[4];
+ tmp2b = -in[2 * 2 + 1] * c[8] - in[2 * 4 + 1] * c[2] + tb66 + in[2 * 8 + 1] * c[4];
+
+ MACRO1(2);
+ MACRO2(6);
+ }
+
+ {
+ real tmp1a, tmp2a, tmp1b, tmp2b;
+ tmp1a = in[2 * 1 + 0] * c[7] - ta33 + in[2 * 5 + 0] * c[1] - in[2 * 7 + 0] * c[5];
+ tmp1b = in[2 * 1 + 1] * c[7] - tb33 + in[2 * 5 + 1] * c[1] - in[2 * 7 + 1] * c[5];
+ tmp2a = -in[2 * 2 + 0] * c[4] + in[2 * 4 + 0] * c[8] + ta66 - in[2 * 8 + 0] * c[2];
+ tmp2b = -in[2 * 2 + 1] * c[4] + in[2 * 4 + 1] * c[8] + tb66 - in[2 * 8 + 1] * c[2];
+
+ MACRO1(3);
+ MACRO2(5);
+ }
+
+ {
+ real sum0, sum1;
+
+ sum0 = in[2 * 0 + 0] - in[2 * 2 + 0] + in[2 * 4 + 0] - in[2 * 6 + 0] + in[2 * 8 + 0];
+ sum1 = (in[2 * 0 + 1] - in[2 * 2 + 1] + in[2 * 4 + 1] - in[2 * 6 + 1] + in[2 * 8 + 1]) * tfcos36[4];
+ MACRO0(4);
+ }
+ }
+#endif
+
+ }
+}
+
+/*
+ * new DCT12
+ */
+static void dct12(real * in, real * rawout1, real * rawout2, register real * wi, register real * ts)
+{
+
+#define DCT12_PART1() \
+do { \
+ in5 = in[5*3]; \
+ in5 += (in4 = in[4*3]); \
+ in4 += (in3 = in[3*3]); \
+ in3 += (in2 = in[2*3]); \
+ in2 += (in1 = in[1*3]); \
+ in1 += (in0 = in[0*3]); \
+ \
+ in5 += in3; in3 += in1; \
+ \
+ in2 *= COS6_1; \
+ in3 *= COS6_1; \
+} while (0)
+
+#define DCT12_PART2() \
+do { \
+ in0 += in4 * COS6_2; \
+ \
+ in4 = in0 + in2; \
+ in0 -= in2; \
+ \
+ in1 += in5 * COS6_2; \
+ \
+ in5 = (in1 + in3) * tfcos12[0]; \
+ in1 = (in1 - in3) * tfcos12[2]; \
+ \
+ in3 = in4 + in5; \
+ in4 -= in5; \
+ \
+ in2 = in0 + in1; \
+ in0 -= in1; \
+} while (0)
+
+
+ {
+ real in0, in1, in2, in3, in4, in5;
+ register real *out1 = rawout1;
+
+ ts[SBLIMIT * 0] = out1[0];
+ ts[SBLIMIT * 1] = out1[1];
+ ts[SBLIMIT * 2] = out1[2];
+ ts[SBLIMIT * 3] = out1[3];
+ ts[SBLIMIT * 4] = out1[4];
+ ts[SBLIMIT * 5] = out1[5];
+
+ DCT12_PART1();
+
+ {
+ real tmp0, tmp1 = (in0 - in4);
+
+ {
+ real tmp2 = (in1 - in5) * tfcos12[1];
+
+ tmp0 = tmp1 + tmp2;
+ tmp1 -= tmp2;
+ }
+ ts[(17 - 1) * SBLIMIT] = out1[17 - 1] + tmp0 * wi[11 - 1];
+ ts[(12 + 1) * SBLIMIT] = out1[12 + 1] + tmp0 * wi[6 + 1];
+ ts[(6 + 1) * SBLIMIT] = out1[6 + 1] + tmp1 * wi[1];
+ ts[(11 - 1) * SBLIMIT] = out1[11 - 1] + tmp1 * wi[5 - 1];
+ }
+
+ DCT12_PART2();
+
+ ts[(17 - 0) * SBLIMIT] = out1[17 - 0] + in2 * wi[11 - 0];
+ ts[(12 + 0) * SBLIMIT] = out1[12 + 0] + in2 * wi[6 + 0];
+ ts[(12 + 2) * SBLIMIT] = out1[12 + 2] + in3 * wi[6 + 2];
+ ts[(17 - 2) * SBLIMIT] = out1[17 - 2] + in3 * wi[11 - 2];
+
+ ts[(6 + 0) * SBLIMIT] = out1[6 + 0] + in0 * wi[0];
+ ts[(11 - 0) * SBLIMIT] = out1[11 - 0] + in0 * wi[5 - 0];
+ ts[(6 + 2) * SBLIMIT] = out1[6 + 2] + in4 * wi[2];
+ ts[(11 - 2) * SBLIMIT] = out1[11 - 2] + in4 * wi[5 - 2];
+ }
+
+ in++;
+
+ {
+ real in0, in1, in2, in3, in4, in5;
+ register real *out2 = rawout2;
+
+ DCT12_PART1();
+
+ {
+ real tmp0, tmp1 = (in0 - in4);
+
+ {
+ real tmp2 = (in1 - in5) * tfcos12[1];
+
+ tmp0 = tmp1 + tmp2;
+ tmp1 -= tmp2;
+ }
+ out2[5 - 1] = tmp0 * wi[11 - 1];
+ out2[0 + 1] = tmp0 * wi[6 + 1];
+ ts[(12 + 1) * SBLIMIT] += tmp1 * wi[1];
+ ts[(17 - 1) * SBLIMIT] += tmp1 * wi[5 - 1];
+ }
+
+ DCT12_PART2();
+
+ out2[5 - 0] = in2 * wi[11 - 0];
+ out2[0 + 0] = in2 * wi[6 + 0];
+ out2[0 + 2] = in3 * wi[6 + 2];
+ out2[5 - 2] = in3 * wi[11 - 2];
+
+ ts[(12 + 0) * SBLIMIT] += in0 * wi[0];
+ ts[(17 - 0) * SBLIMIT] += in0 * wi[5 - 0];
+ ts[(12 + 2) * SBLIMIT] += in4 * wi[2];
+ ts[(17 - 2) * SBLIMIT] += in4 * wi[5 - 2];
+ }
+
+ in++;
+
+ {
+ real in0, in1, in2, in3, in4, in5;
+ register real *out2 = rawout2;
+
+ out2[12] = out2[13] = out2[14] = out2[15] = out2[16] = out2[17] = 0.0;
+
+ DCT12_PART1();
+
+ {
+ real tmp0, tmp1 = (in0 - in4);
+
+ {
+ real tmp2 = (in1 - in5) * tfcos12[1];
+
+ tmp0 = tmp1 + tmp2;
+ tmp1 -= tmp2;
+ }
+ out2[11 - 1] = tmp0 * wi[11 - 1];
+ out2[6 + 1] = tmp0 * wi[6 + 1];
+ out2[0 + 1] += tmp1 * wi[1];
+ out2[5 - 1] += tmp1 * wi[5 - 1];
+ }
+
+ DCT12_PART2();
+
+ out2[11 - 0] = in2 * wi[11 - 0];
+ out2[6 + 0] = in2 * wi[6 + 0];
+ out2[6 + 2] = in3 * wi[6 + 2];
+ out2[11 - 2] = in3 * wi[11 - 2];
+
+ out2[0 + 0] += in0 * wi[0];
+ out2[5 - 0] += in0 * wi[5 - 0];
+ out2[0 + 2] += in4 * wi[2];
+ out2[5 - 2] += in4 * wi[5 - 2];
+ }
+}
+
+/*
+ * III_hybrid
+ */
+static void III_hybrid(real fsIn[SBLIMIT][SSLIMIT],
+ real tsOut[SSLIMIT][SBLIMIT], int ch,
+ struct gr_info_s *gr_info, struct frame *fr)
+{
+ static real block[2][2][SBLIMIT * SSLIMIT] = { {{0,}} };
+ static int blc[2] = { 0, 0 };
+
+ real *tspnt = (real *) tsOut;
+ real *rawout1, *rawout2;
+ int bt;
+ unsigned sb = 0;
+
+ {
+ int b = blc[ch];
+ rawout1 = block[b][ch];
+ b = -b + 1;
+ rawout2 = block[b][ch];
+ blc[ch] = b;
+ }
+
+ if (gr_info->mixed_block_flag)
+ {
+ sb = 2;
+#ifdef USE_3DNOW
+ (fr->dct36)(fsIn[0],rawout1,rawout2,win[0],tspnt);
+ (fr->dct36)(fsIn[1],rawout1+18,rawout2+18,win1[0],tspnt+1);
+#else
+ dct36(fsIn[0], rawout1, rawout2, win[0], tspnt);
+ dct36(fsIn[1], rawout1 + 18, rawout2 + 18, win1[0], tspnt + 1);
+#endif
+ rawout1 += 36;
+ rawout2 += 36;
+ tspnt += 2;
+ }
+
+ bt = gr_info->block_type;
+ if (bt == 2)
+ {
+ for (; sb < gr_info->maxb; sb += 2, tspnt += 2, rawout1 += 36, rawout2 += 36)
+ {
+ dct12(fsIn[sb], rawout1, rawout2, win[2], tspnt);
+ dct12(fsIn[sb + 1], rawout1 + 18, rawout2 + 18, win1[2], tspnt + 1);
+ }
+ }
+ else
+ {
+ for (; sb < gr_info->maxb; sb += 2, tspnt += 2, rawout1 += 36, rawout2 += 36)
+ {
+#ifdef USE_3DNOW
+ (fr->dct36)(fsIn[sb],rawout1,rawout2,win[bt],tspnt);
+ (fr->dct36)(fsIn[sb+1],rawout1+18,rawout2+18,win1[bt],tspnt+1);
+#else
+ dct36(fsIn[sb], rawout1, rawout2, win[bt], tspnt);
+ dct36(fsIn[sb + 1], rawout1 + 18, rawout2 + 18, win1[bt], tspnt + 1);
+#endif
+ }
+ }
+
+ for (; sb < SBLIMIT; sb++, tspnt++)
+ {
+ int i;
+ for (i = 0; i < SSLIMIT; i++)
+ {
+ tspnt[i * SBLIMIT] = *rawout1++;
+ *rawout2++ = 0.0;
+ }
+ }
+}
+
+/*
+ * main layer3 handler
+ */
+int mpg123_do_layer3(struct frame *fr)
+{
+ int gr, ch, ss;
+ int scalefacs[2][39]; /* max 39 for short[13][3] mode, mixed: 38, long: 22 */
+ struct III_sideinfo sideinfo;
+ int stereo = fr->stereo;
+ int single = fr->single;
+ int ms_stereo, i_stereo;
+ int sfreq = fr->sampling_frequency;
+ int stereo1, granules;
+
+ if (stereo == 1)
+ { /* stream is mono */
+ stereo1 = 1;
+ single = 0;
+ }
+ else if (single >= 0) /* stream is stereo, but force to mono */
+ stereo1 = 1;
+ else
+ stereo1 = 2;
+
+ if (fr->mode == MPG_MD_JOINT_STEREO)
+ {
+ ms_stereo = (fr->mode_ext & 0x2) >> 1;
+ i_stereo = fr->mode_ext & 0x1;
+ }
+ else
+ ms_stereo = i_stereo = 0;
+
+ granules = fr->lsf ? 1 : 2;
+ if (!III_get_side_info(&sideinfo, stereo, ms_stereo, sfreq, single, fr->lsf))
+ return 0;
+
+ mpg123_set_pointer(sideinfo.main_data_begin);
+
+ for (gr = 0; gr < granules; gr++)
+ {
+ real hybridIn[2][SBLIMIT][SSLIMIT];
+ real hybridOut[2][SSLIMIT][SBLIMIT];
+
+ {
+ struct gr_info_s *gr_info = &(sideinfo.ch[0].gr[gr]);
+ long part2bits;
+
+ if (fr->lsf)
+ part2bits = III_get_scale_factors_2(scalefacs[0], gr_info, 0);
+ else
+ part2bits = III_get_scale_factors_1(scalefacs[0], gr_info);
+
+ if (III_dequantize_sample(hybridIn[0], scalefacs[0], gr_info, sfreq, part2bits))
+ return 0;
+ }
+
+ if (stereo == 2)
+ {
+ struct gr_info_s *gr_info = &(sideinfo.ch[1].gr[gr]);
+ long part2bits;
+
+ if (fr->lsf)
+ part2bits = III_get_scale_factors_2(scalefacs[1], gr_info, i_stereo);
+ else
+ part2bits = III_get_scale_factors_1(scalefacs[1], gr_info);
+
+ if (III_dequantize_sample(hybridIn[1], scalefacs[1], gr_info, sfreq, part2bits))
+ return 0;
+
+ if (ms_stereo)
+ {
+ int i;
+ unsigned maxb = sideinfo.ch[0].gr[gr].maxb;
+
+ if (sideinfo.ch[1].gr[gr].maxb > maxb)
+ maxb = sideinfo.ch[1].gr[gr].maxb;
+ for (i = 0; i < SSLIMIT * maxb; i++)
+ {
+ real tmp0 = ((real *) hybridIn[0])[i];
+ real tmp1 = ((real *) hybridIn[1])[i];
+ ((real *) hybridIn[0])[i] = tmp0 + tmp1;
+ ((real *) hybridIn[1])[i] = tmp0 - tmp1;
+ }
+ }
+
+ if (i_stereo)
+ III_i_stereo(hybridIn, scalefacs[1], gr_info, sfreq, ms_stereo, fr->lsf);
+
+ if (ms_stereo || i_stereo || (single == 3))
+ {
+ if (gr_info->maxb > sideinfo.ch[0].gr[gr].maxb)
+ sideinfo.ch[0].gr[gr].maxb = gr_info->maxb;
+ else
+ gr_info->maxb = sideinfo.ch[0].gr[gr].maxb;
+ }
+
+ switch (single)
+ {
+ case 3:
+ {
+ register unsigned i;
+ register real *in0 = (real *) hybridIn[0],
+ *in1 = (real *) hybridIn[1];
+ for (i = 0; i < SSLIMIT * gr_info->maxb; i++, in0++)
+ *in0 = (*in0 + *in1++); /* *0.5 done by pow-scale */
+ }
+ break;
+ case 1:
+ {
+ register unsigned i;
+ register real *in0 = (real *) hybridIn[0],
+ *in1 = (real *) hybridIn[1];
+ for (i = 0; i < SSLIMIT * gr_info->maxb; i++)
+ *in0++ = *in1++;
+ }
+ break;
+ }
+ }
+/***
+ if (mpg123_info->eq_active)
+ {
+ int i, sb;
+
+ if (single < 0)
+ {
+ for (sb = 0, i = 0; sb < SBLIMIT; sb++)
+ {
+ for (ss = 0; ss < SSLIMIT; ss++)
+ {
+ hybridIn[0][sb][ss] *= mpg123_info->eq_mul[i];
+ hybridIn[1][sb][ss] *= mpg123_info->eq_mul[i++];
+ }
+ }
+ }
+ else
+ {
+ for (sb = 0, i = 0; sb < SBLIMIT; sb++)
+ {
+ for (ss = 0; ss < SSLIMIT; ss++)
+ hybridIn[0][sb][ss] *= mpg123_info->eq_mul[i++];
+ }
+ }
+ }
+***/
+
+ for (ch = 0; ch < stereo1; ch++)
+ {
+ struct gr_info_s *gr_info = &(sideinfo.ch[ch].gr[gr]);
+
+ III_antialias(hybridIn[ch], gr_info);
+ if (gr_info->maxb < 1 || gr_info->maxb > SBLIMIT)
+ return 0;
+ III_hybrid(hybridIn[ch], hybridOut[ch], ch, gr_info, fr);
+ }
+
+ for (ss = 0; ss < SSLIMIT; ss++)
+ {
+ if (single >= 0)
+ {
+ (fr->synth_mono) (hybridOut[0][ss], mpg123_pcm_sample, &mpg123_pcm_point);
+ }
+ else
+ {
+ int p1 = mpg123_pcm_point;
+
+ (fr->synth) (hybridOut[0][ss], 0, mpg123_pcm_sample, &p1);
+ (fr->synth) (hybridOut[1][ss], 1, mpg123_pcm_sample, &mpg123_pcm_point);
+ }
+ }
+
+/***
+ if (mpg123_info->output_audio)
+ {
+ mpg123_ip.add_vis_pcm(mpg123_ip.output->written_time(),
+ mpg123_cfg.resolution == 16 ? FMT_S16_NE : FMT_U8,
+ mpg123_cfg.channels == 2 ? fr->stereo : 1,
+ mpg123_pcm_point, mpg123_pcm_sample);
+ while (mpg123_ip.output->buffer_free() < mpg123_pcm_point &&
+ mpg123_info->going && mpg123_info->jump_to_time == -1)
+ xmms_usleep(10000);
+ if (mpg123_info->going && mpg123_info->jump_to_time == -1)
+ mpg123_ip.output->write_audio(mpg123_pcm_sample, mpg123_pcm_point);
+ }
+***/
+ mpg123_pcm_point = 0;
+ }
+ return 1;
+}
diff --git a/src/libmpg123/mpg123.c b/src/libmpg123/mpg123.c
new file mode 100755
index 0000000..1def17e
--- /dev/null
+++ b/src/libmpg123/mpg123.c
@@ -0,0 +1,172 @@
+/* XMMS - Cross-platform multimedia player
+ * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies
+ * Copyright (C) 1999,2000 Håvard Kvålen
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Note : removed code not used in EasyTAG
+ */
+
+#include "mpg123.h"
+
+
+double mpg123_compute_tpf(struct frame *fr)
+{
+ const int bs[4] = {0, 384, 1152, 1152};
+ double tpf;
+
+ tpf = bs[fr->lay];
+ tpf /= mpg123_freqs[fr->sampling_frequency] << (fr->lsf);
+ return tpf;
+}
+
+
+static guint32 convert_to_header(guint8 * buf)
+{
+
+ return (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3];
+}
+
+
+#define DET_BUF_SIZE 1024
+
+#if 0 /* Not used at the present time */
+static gboolean mpg123_detect_by_content(gchar *filename)
+{
+ FILE *file;
+ guchar tmp[4];
+ guint32 head;
+ struct frame fr;
+ guchar buf[DET_BUF_SIZE];
+ gint in_buf, i;
+
+ if((file = fopen(filename, "rb")) == NULL)
+ return FALSE;
+ if (fread(tmp, 1, 4, file) != 4)
+ goto done;
+ head = convert_to_header(tmp);
+ while(!mpg123_head_check(head))
+ {
+ /*
+ * The mpeg-stream can start anywhere in the file,
+ * so we check the entire file
+ */
+ /* Optimize this */
+ in_buf = fread(buf, 1, DET_BUF_SIZE, file);
+ if(in_buf == 0)
+ goto done;
+
+ for (i = 0; i < in_buf; i++)
+ {
+ head <<= 8;
+ head |= buf[i];
+ if(mpg123_head_check(head))
+ {
+ fseek(file, i+1-in_buf, SEEK_CUR);
+ break;
+ }
+ }
+ }
+ if (mpg123_decode_header(&fr, head))
+ {
+ /*
+ * We found something which looks like a MPEG-header.
+ * We check the next frame too, to be sure
+ */
+
+ if (fseek(file, fr.framesize, SEEK_CUR) != 0)
+ goto done;
+ if (fread(tmp, 1, 4, file) != 4)
+ goto done;
+ head = convert_to_header(tmp);
+ if (mpg123_head_check(head) && mpg123_decode_header(&fr, head))
+ {
+ fclose(file);
+ return TRUE;
+ }
+ }
+
+ done:
+ fclose(file);
+ return FALSE;
+}
+#endif
+
+//static guint get_song_time(FILE * file)
+guint mpg123_get_song_time(FILE * file)
+{
+ guint32 head;
+ guchar tmp[4], *buf;
+ struct frame frm;
+ XHEADDATA xing_header;
+ double tpf, bpf;
+ guint32 len;
+ long id3v2size = 0;
+
+ if (!file)
+ return -1;
+
+ fseek(file, 0, SEEK_SET);
+ if (fread(tmp, 1, 4, file) != 4)
+ return 0;
+
+ // Skip data of the ID3v2.x tag (patch from Artur Polaczynski)
+ if (tmp[0] == 'I' && tmp[1] == 'D' && tmp[2] == '3' && tmp[3] < 0xFF)
+ {
+ // id3v2 tag skipeer $49 44 33 yy yy xx zz zz zz zz [zz size]
+ fseek(file, 2, SEEK_CUR); // Size is 6-9 position
+ if (fread(tmp, 1, 4, file) != 4)
+ return 0;
+ id3v2size = 10 + ( (long)(tmp[3]) | ((long)(tmp[2]) << 7) | ((long)(tmp[1]) << 14) | ((long)(tmp[0]) << 21) );
+ fseek(file, id3v2size, SEEK_SET);
+ if (fread(tmp, 1, 4, file) != 4) // Read mpeg header
+ return 0;
+ }
+
+ head = convert_to_header(tmp);
+ while (!mpg123_head_check(head))
+ {
+ head <<= 8;
+ if (fread(tmp, 1, 1, file) != 1)
+ return 0;
+ head |= tmp[0];
+ }
+ if (mpg123_decode_header(&frm, head))
+ {
+ buf = g_malloc(frm.framesize + 4);
+ fseek(file, -4, SEEK_CUR);
+ fread(buf, 1, frm.framesize + 4, file);
+ xing_header.toc = NULL;
+ tpf = mpg123_compute_tpf(&frm);
+ if (mpg123_get_xing_header(&xing_header, buf))
+ {
+ g_free(buf);
+ return ((guint) (tpf * xing_header.frames * 1000));
+ }
+ g_free(buf);
+ bpf = mpg123_compute_bpf(&frm);
+ fseek(file, 0, SEEK_END);
+ len = ftell(file) - id3v2size;
+ fseek(file, -128, SEEK_END);
+ fread(tmp, 1, 3, file);
+ if (!strncmp(tmp, "TAG", 3))
+ len -= 128;
+ return ((guint) ((guint)(len / bpf) * tpf * 1000));
+ }
+ return 0;
+}
+
diff --git a/src/libmpg123/mpg123.h b/src/libmpg123/mpg123.h
new file mode 100755
index 0000000..a3a3726
--- /dev/null
+++ b/src/libmpg123/mpg123.h
@@ -0,0 +1,144 @@
+/*
+ * mpg123 defines
+ * used source: musicout.h from mpegaudio package
+ */
+
+#ifndef __MPG123_H__
+#define __MPG123_H__
+
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <gtk/gtk.h>
+
+#include "dxhead.h"
+
+#define real float
+
+/* #define MAX_NAME_SIZE 81 */
+#define SBLIMIT 32
+#define SCALE_BLOCK 12
+#define SSLIMIT 18
+
+#define MPG_MD_STEREO 0
+#define MPG_MD_JOINT_STEREO 1
+#define MPG_MD_DUAL_CHANNEL 2
+#define MPG_MD_MONO 3
+
+
+struct al_table
+{
+ short bits;
+ short d;
+};
+
+struct frame
+{
+ struct al_table *alloc;
+ int (*synth) (real *, int, unsigned char *, int *);
+ int (*synth_mono) (real *, unsigned char *, int *);
+ int stereo;
+ int jsbound;
+ int single;
+ int II_sblimit;
+ int down_sample_sblimit;
+ int lsf;
+ int mpeg25;
+ int down_sample;
+ int header_change;
+ int lay;
+ int (*do_layer) (struct frame * fr);
+ int error_protection;
+ int bitrate_index;
+ int sampling_frequency;
+ int padding;
+ int extension;
+ int mode;
+ int mode_ext;
+ int copyright;
+ int original;
+ int emphasis;
+ int framesize; /* computed framesize */
+};
+
+
+struct bitstream_info
+{
+ int bitindex;
+ unsigned char *wordpointer;
+};
+
+extern struct bitstream_info bsi;
+
+/* ------ Declarations from "common.c" ------ */
+extern unsigned int mpg123_get1bit(void);
+extern unsigned int mpg123_getbits(int);
+extern unsigned int mpg123_getbits_fast(int);
+
+extern int mpg123_head_check(unsigned long);
+
+extern void mpg123_set_pointer(long);
+
+extern unsigned char *mpg123_pcm_sample;
+extern int mpg123_pcm_point;
+
+struct gr_info_s
+{
+ int scfsi;
+ unsigned part2_3_length;
+ unsigned big_values;
+ unsigned scalefac_compress;
+ unsigned block_type;
+ unsigned mixed_block_flag;
+ unsigned table_select[3];
+ unsigned subblock_gain[3];
+ unsigned maxband[3];
+ unsigned maxbandl;
+ unsigned maxb;
+ unsigned region1start;
+ unsigned region2start;
+ unsigned preflag;
+ unsigned scalefac_scale;
+ unsigned count1table_select;
+ real *full_gain[3];
+ real *pow2gain;
+};
+
+struct III_sideinfo
+{
+ unsigned main_data_begin;
+ unsigned private_bits;
+ struct
+ {
+ struct gr_info_s gr[2];
+ }
+ ch[2];
+};
+
+int mpg123_stream_check_for_xing_header(struct frame *fr, XHEADDATA * xhead);
+
+extern int mpg123_do_layer3(struct frame *fr);
+extern int mpg123_do_layer2(struct frame *fr);
+extern int mpg123_do_layer1(struct frame *fr);
+
+
+extern void mpg123_init_layer3(int);
+extern void mpg123_init_layer2(void);
+
+int mpg123_decode_header(struct frame *fr, unsigned long newhead);
+double mpg123_compute_bpf(struct frame *fr);
+double mpg123_compute_tpf(struct frame *fr);
+
+
+extern unsigned char *mpg123_conv16to8;
+extern long mpg123_freqs[9];
+extern real mpg123_muls[27][64];
+extern real mpg123_decwin[512 + 32];
+extern real *mpg123_pnts[5];
+
+extern int tabsel_123[2][3][16];
+
+guint mpg123_get_song_time(FILE * file);
+
+#endif
diff --git a/src/log.c b/src/log.c
new file mode 100755
index 0000000..f066fc7
--- /dev/null
+++ b/src/log.c
@@ -0,0 +1,307 @@
+/* log.c - 2007/03/25 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2007 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <glib/gi18n-lib.h>
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+
+#include "log.h"
+#include "easytag.h"
+#include "bar.h"
+
+#ifdef WIN32
+# include "win32/win32dep.h"
+#endif
+
+
+/****************
+ * Declarations *
+ ****************/
+
+GtkWidget *LogList = NULL;
+GtkListStore *logListModel;
+GList *LogPrintTmpList = NULL; // Temporary list to store messages for the LogList when this control wasn't yet created
+
+enum
+{
+ LOG_TIME_TEXT,
+ LOG_TEXT,
+ LOG_ROW_BACKGROUND,
+ LOG_ROW_FOREGROUND,
+ LOG_COLUMN_COUNT
+};
+
+// File for log
+gchar *LOG_FILE = ".easytag/easytag.log";
+
+// Structure used to store information for the temporary list
+typedef struct _Log_Data Log_Data;
+struct _Log_Data
+{
+ gchar *time; /* The time of this line of log */
+ gchar *string; /* The string of the line of log to display */
+};
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Log_Popup_Menu_Handler (GtkMenu *menu, GdkEventButton *event);
+void Log_Print_Tmp_List (void);
+gchar *Log_Format_Date (void);
+
+
+
+/*************
+ * Functions *
+ *************/
+
+GtkWidget *Create_Log_Area (void)
+{
+ GtkWidget *Frame;
+ GtkWidget *ScrollWindowLogList;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkWidget *PopupMenu;
+
+
+ Frame = gtk_frame_new(_("Log"));
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 2);
+
+ /*
+ * The ScrollWindow and the List
+ */
+ ScrollWindowLogList = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindowLogList),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_container_add(GTK_CONTAINER(Frame),ScrollWindowLogList);
+
+ /* The file list */
+ logListModel = gtk_list_store_new(LOG_COLUMN_COUNT,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ GDK_TYPE_COLOR,
+ GDK_TYPE_COLOR);
+
+ LogList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(logListModel));
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(LogList), FALSE);
+ gtk_container_add(GTK_CONTAINER(ScrollWindowLogList), LogList);
+ gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(LogList), FALSE);
+ gtk_widget_set_size_request(LogList, 0, 0);
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(LogList), FALSE);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(LogList)),GTK_SELECTION_MULTIPLE);
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "text", LOG_TIME_TEXT,
+ "background-gdk", LOG_ROW_BACKGROUND,
+ "foreground-gdk", LOG_ROW_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(LogList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "text", LOG_TEXT,
+ "background-gdk", LOG_ROW_BACKGROUND,
+ "foreground-gdk", LOG_ROW_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(LogList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ // Create Popup Menu on browser album list
+ PopupMenu = gtk_ui_manager_get_widget(UIManager, "/LogPopup");
+ g_signal_connect_swapped(G_OBJECT(LogList),"button_press_event",
+ G_CALLBACK(Log_Popup_Menu_Handler), G_OBJECT(PopupMenu));
+
+ // Load pending messages in the Log list
+ Log_Print_Tmp_List();
+
+ //gtk_widget_show_all(ScrollWindowLogList);
+ gtk_widget_show_all(Frame);
+
+ //return ScrollWindowLogList;
+ return Frame;
+}
+
+
+/*
+ * Log_Popup_Menu_Handler : displays the corresponding menu
+ */
+gboolean Log_Popup_Menu_Handler (GtkMenu *menu, GdkEventButton *event)
+{
+ if (event && (event->type==GDK_BUTTON_PRESS) && (event->button == 3))
+ {
+ gtk_menu_popup(menu,NULL,NULL,NULL,NULL,event->button,event->time);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/*
+ * Remove all lines in the log list
+ */
+void Log_Clean_Log_List (void)
+{
+ if (logListModel)
+ gtk_list_store_clear(logListModel);
+}
+
+
+/*
+ * Return time in allocated data
+ */
+gchar *Log_Format_Date (void)
+{
+ struct tm *tms;
+ time_t nowtime;
+ gchar *current_date = g_malloc0(21);
+
+ // Get current time and date
+ nowtime = time(NULL);
+ tms = localtime(&nowtime);
+ strftime(current_date,20,"%X",tms); // Time without date in current locale
+ //strftime(current_date,20,"%x",ptr); // Date without time in current locale
+
+ return current_date;
+}
+
+
+/*
+ * Function to use anywhere in the application to send a message to the LogList
+ */
+void Log_Print (gchar const *format, ...)
+{
+ va_list args;
+ gchar *string;
+
+ GtkTreeIter iter;
+ static gboolean first_time = TRUE;
+ static gchar *file_path = NULL;
+ FILE *file = NULL;
+
+
+ va_start (args, format);
+ string = g_strdup_vprintf (format, args);
+ va_end (args);
+
+ // If the log window is displayed then messages are displayed, else
+ // the messages are stored in a temporary list.
+ if (LogList && logListModel)
+ {
+ gchar *time = Log_Format_Date();
+ gtk_list_store_append(logListModel, &iter);
+ gtk_list_store_set(logListModel, &iter,
+ LOG_TIME_TEXT, time,
+ LOG_TEXT, string,
+ LOG_ROW_BACKGROUND, NULL,
+ LOG_ROW_FOREGROUND, NULL,
+ -1);
+ g_free(time);
+ }else
+ {
+ Log_Data *LogData = g_malloc0(sizeof(Log_Data));
+ LogData->time = Log_Format_Date();
+ LogData->string = string;
+
+ LogPrintTmpList = g_list_append(LogPrintTmpList,LogData);
+ //g_print("%s",string);
+ }
+
+
+ // Store also the messages in the log file.
+ if (!file_path)
+ file_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR ? G_DIR_SEPARATOR_S : "",
+ LOG_FILE,NULL);
+
+ // The first time, the whole file is delete. Else, text is appended
+ if (first_time)
+ file = fopen(file_path,"w+");
+ else
+ file = fopen(file_path,"a+");
+ //g_free(file_path);
+
+ if (file)
+ {
+ gchar *time = Log_Format_Date();
+ gchar *data = g_strdup_printf("%s %s\n",time,string);
+ fwrite(data,strlen(data),1,file);
+ g_free(data);
+ g_free(time);
+
+ first_time = FALSE;
+ fclose(file);
+ }
+
+}
+
+/*
+ * Display pending messages in the LogList
+ */
+void Log_Print_Tmp_List (void)
+{
+ GtkTreeIter iter;
+
+ LogPrintTmpList = g_list_first(LogPrintTmpList);
+ while (LogPrintTmpList)
+ {
+
+ if (LogList && logListModel)
+ {
+ gtk_list_store_append(logListModel, &iter);
+ gtk_list_store_set(logListModel, &iter,
+ LOG_TIME_TEXT, ((Log_Data *)LogPrintTmpList->data)->time,
+ LOG_TEXT, ((Log_Data *)LogPrintTmpList->data)->string,
+ LOG_ROW_BACKGROUND, NULL,
+ LOG_ROW_FOREGROUND, NULL,
+ -1);
+ }
+
+ if (!LogPrintTmpList->next) break;
+ LogPrintTmpList = LogPrintTmpList->next;
+ }
+
+ // Free the list...
+ if (LogPrintTmpList)
+ {
+ LogPrintTmpList = g_list_first(LogPrintTmpList);
+ while (LogPrintTmpList)
+ {
+ g_free(((Log_Data *)LogPrintTmpList->data)->time);
+ g_free(((Log_Data *)LogPrintTmpList->data));
+
+ if (!LogPrintTmpList->next) break;
+ LogPrintTmpList = LogPrintTmpList->next;
+ }
+
+ g_list_free(LogPrintTmpList);
+ LogPrintTmpList = NULL;
+ }
+
+}
+
diff --git a/src/log.h b/src/log.h
new file mode 100644
index 0000000..2ec4408
--- /dev/null
+++ b/src/log.h
@@ -0,0 +1,42 @@
+/* log.h - 2007/03/25 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2007 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __LOG_H__
+#define __LOG_H__
+
+#include <gtk/gtk.h>
+
+//#include "et_core.h"
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+GtkWidget *Create_Log_Area (void);
+
+void Log_Clean_Log_List (void);
+
+void Log_Print (gchar const *format, ...);
+
+
+#endif /* __LOG_H__ */
diff --git a/src/misc.c b/src/misc.c
new file mode 100755
index 0000000..41f12ec
--- /dev/null
+++ b/src/misc.c
@@ -0,0 +1,3392 @@
+/* misc.c - 2000/06/28 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n-lib.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include "misc.h"
+#include "easytag.h"
+#include "msgbox.h"
+#include "id3_tag.h"
+#include "browser.h"
+#include "setting.h"
+#include "bar.h"
+#include "prefs.h"
+#include "scan.h"
+#include "genres.h"
+#include "log.h"
+#include "charset.h"
+
+#ifdef WIN32
+# include <windows.h>
+#endif
+
+
+/***************
+ * Declaration *
+ ***************/
+// Playlist window defined in misc.h
+
+// Search file window
+GtkWidget *SearchFileWindow = NULL;
+GtkWidget *SearchStringCombo;
+GtkListStore *SearchStringModel = NULL;
+GtkWidget *SearchInFilename;
+GtkWidget *SearchInTag;
+GtkWidget *SearchCaseSensitive;
+GtkWidget *SearchResultList;
+GtkListStore *SearchResultListModel;
+GtkWidget *SearchStatusBar;
+guint SearchStatusBarContext;
+
+// Load filename window
+GtkWidget *LoadFilenameWindow = NULL;
+GtkWidget *FileToLoadCombo;
+GtkListStore *FileToLoadModel = NULL;
+GtkWidget *LoadFileContentList;
+GtkListStore* LoadFileContentListModel;
+GtkWidget *LoadFileNameList;
+GtkListStore* LoadFileNameListModel;
+
+
+enum
+{
+ // Columns for titles
+ SEARCH_RESULT_FILENAME = 0,
+ SEARCH_RESULT_TITLE,
+ SEARCH_RESULT_ARTIST,
+ SEARCH_RESULT_ALBUM,
+ SEARCH_RESULT_DISC_NUMBER,
+ SEARCH_RESULT_YEAR,
+ SEARCH_RESULT_TRACK,
+ SEARCH_RESULT_GENRE,
+ SEARCH_RESULT_COMMENT,
+ SEARCH_RESULT_COMPOSER,
+ SEARCH_RESULT_ORIG_ARTIST,
+ SEARCH_RESULT_COPYRIGHT,
+ SEARCH_RESULT_URL,
+ SEARCH_RESULT_ENCODED_BY,
+
+ // Columns for pango style (normal/bold)
+ SEARCH_RESULT_FILENAME_WEIGHT,
+ SEARCH_RESULT_TITLE_WEIGHT,
+ SEARCH_RESULT_ARTIST_WEIGHT,
+ SEARCH_RESULT_ALBUM_WEIGHT,
+ SEARCH_RESULT_DISC_NUMBER_WEIGHT,
+ SEARCH_RESULT_YEAR_WEIGHT,
+ SEARCH_RESULT_TRACK_WEIGHT,
+ SEARCH_RESULT_GENRE_WEIGHT,
+ SEARCH_RESULT_COMMENT_WEIGHT,
+ SEARCH_RESULT_COMPOSER_WEIGHT,
+ SEARCH_RESULT_ORIG_ARTIST_WEIGHT,
+ SEARCH_RESULT_COPYRIGHT_WEIGHT,
+ SEARCH_RESULT_URL_WEIGHT,
+ SEARCH_RESULT_ENCODED_BY_WEIGHT,
+
+ // Columns for color (normal/red)
+ SEARCH_RESULT_FILENAME_FOREGROUND,
+ SEARCH_RESULT_TITLE_FOREGROUND,
+ SEARCH_RESULT_ARTIST_FOREGROUND,
+ SEARCH_RESULT_ALBUM_FOREGROUND,
+ SEARCH_RESULT_DISC_NUMBER_FOREGROUND,
+ SEARCH_RESULT_YEAR_FOREGROUND,
+ SEARCH_RESULT_TRACK_FOREGROUND,
+ SEARCH_RESULT_GENRE_FOREGROUND,
+ SEARCH_RESULT_COMMENT_FOREGROUND,
+ SEARCH_RESULT_COMPOSER_FOREGROUND,
+ SEARCH_RESULT_ORIG_ARTIST_FOREGROUND,
+ SEARCH_RESULT_COPYRIGHT_FOREGROUND,
+ SEARCH_RESULT_URL_FOREGROUND,
+ SEARCH_RESULT_ENCODED_BY_FOREGROUND,
+
+ SEARCH_RESULT_POINTER,
+ SEARCH_COLUMN_COUNT
+};
+
+enum
+{
+ LOAD_FILE_CONTENT_TEXT,
+ LOAD_FILE_CONTENT_COUNT
+};
+
+enum
+{
+ LOAD_FILE_NAME_TEXT,
+ LOAD_FILE_NAME_POINTER,
+ LOAD_FILE_NAME_COUNT
+};
+
+/**************
+ * Prototypes *
+ **************/
+void Open_Write_Playlist_Window (void);
+gboolean Write_Playlist_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+void Destroy_Write_Playlist_Window (void);
+void Playlist_Write_Button_Pressed (void);
+gboolean Write_Playlist (gchar *play_list_name);
+gboolean Playlist_Check_Content_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source);
+void Playlist_Convert_Forwardslash_Into_Backslash (gchar *string);
+
+void Open_Search_File_Window (void);
+void Destroy_Search_File_Window (void);
+gboolean Search_File_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+void Search_File (GtkWidget *search_button);
+void Add_Row_To_Search_Result_List (ET_File *ETFile,const gchar *string_to_search);
+void Search_Result_List_Row_Selected (GtkTreeSelection* selection, gpointer data);
+
+void Open_Load_Filename_Window (void);
+void Destroy_Load_Filename_Window (void);
+gboolean Load_Filename_Window_Key_Press (GtkWidget *window, GdkEvent *event);
+void Load_Filename_List_Key_Press (GtkWidget *clist, GdkEvent *event);
+void Load_File_Content (GtkWidget *file_entry);
+void Load_File_List (void);
+void Load_Filename_Select_Row_In_Other_List (GtkWidget *target, gpointer selection_emit);
+void Load_Filename_Set_Filenames (void);
+void Button_Load_Set_Sensivity (GtkWidget *button, GtkWidget *entry);
+GtkWidget *Create_Load_Filename_Popup_Menu (GtkWidget *list);
+void Load_Filename_List_Insert_Blank_Line (GtkWidget *list);
+void Load_Filename_List_Delete_Line (GtkWidget *list);
+void Load_Filename_List_Delete_All_Blank_Lines (GtkWidget *list);
+void Load_Filename_List_Reload (GtkWidget *list);
+void Load_Filename_Update_Text_Line (GtkWidget *entry, GtkWidget *list);
+void Load_Filename_Edit_Text_Line (GtkTreeSelection *selection, gpointer data);
+
+void Create_Xpm_Icon_Factory (const char **xpmdata, const char *name);
+
+/* Browser */
+static void Open_File_Selection_Window (GtkWidget *entry, gchar *title, GtkFileChooserAction action);
+void File_Selection_Window_For_File (GtkWidget *entry);
+void File_Selection_Window_For_Directory (GtkWidget *entry);
+
+
+/*************
+ * Functions *
+ *************/
+
+/******************************
+ * Functions managing pixmaps *
+ ******************************/
+/*
+ * Buttons creation with pixmap
+ */
+
+GtkWidget *Create_Button_With_Pixmap(guint button_type)
+{
+ GtkWidget *Button;
+ GtkWidget *HBox;
+ GtkWidget *Label;
+ GtkWidget *Pixmap;
+
+ gtk_widget_realize(MainWindow);
+ switch (button_type)
+ {
+ case BUTTON_OK:
+ Label = gtk_label_new(_(" OK "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_YES:
+ Label = gtk_label_new(_(" Yes "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_YES, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_NO:
+ Label = gtk_label_new(_(" No "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_NO, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_APPLY:
+ Label = gtk_label_new(_(" Apply "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_APPLY, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_SAVE:
+ Label = gtk_label_new(_(" Save "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_CANCEL:
+ Label = gtk_label_new(_(" Cancel "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_CANCEL, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_CLOSE:
+ Label = gtk_label_new(_(" Close "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_WRITE:
+ Label = gtk_label_new(_(" Write "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_SAVE_AS, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_EXECUTE:
+ Label = gtk_label_new(_(" Execute "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_EXECUTE, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_SEARCH:
+ Label = gtk_label_new(_(" Search "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ case BUTTON_BROWSE:
+ Label = gtk_label_new(_(" Browse... "));
+ Pixmap = gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON);
+ break;
+
+ default:
+ Button = gtk_button_new_with_label("Unknown button");
+ return Button;
+ break;
+ }
+
+ Button = gtk_button_new();
+ HBox = gtk_hbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(Button),HBox);
+ /* Add items in button */
+ gtk_container_add(GTK_CONTAINER(HBox),Pixmap);
+ gtk_container_add(GTK_CONTAINER(HBox),Label);
+ /* Alignment of items */
+ gtk_misc_set_alignment(GTK_MISC(Pixmap),1,0.5);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+
+ return Button;
+}
+
+/*
+ * Create an icon into an event box to allow some events (as to display tooltips).
+ */
+GtkWidget *Create_Pixmap_Icon_With_Event_Box (const gchar *pixmap_name)
+{
+ GtkWidget *icon;
+ GtkWidget *EventBox;
+
+ EventBox = gtk_event_box_new();
+ if (pixmap_name)
+ {
+ icon = gtk_image_new_from_stock(pixmap_name, GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(EventBox),icon);
+ }
+
+ return EventBox;
+}
+
+/*
+ * Return a button with an icon and a label
+ */
+GtkWidget *Create_Button_With_Icon_And_Label (const gchar *pixmap_name, gchar *label)
+{
+ GtkWidget *Button;
+ GtkWidget *HBox;
+ GtkWidget *Label;
+ GtkWidget *Pixmap;
+
+ Button = gtk_button_new();
+ HBox = gtk_hbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(Button),HBox);
+
+ /* Add a pixmap if not null */
+ if (pixmap_name != NULL)
+ {
+ gtk_widget_realize(MainWindow);
+ Pixmap = gtk_image_new_from_stock(pixmap_name, GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(HBox),Pixmap);
+ }
+
+ /* Add a label if not null */
+ if (label != NULL)
+ {
+ Label = gtk_label_new(label);
+ gtk_container_add(GTK_CONTAINER(HBox),Label);
+ }
+
+ /* Display a warning message if the both parameters are NULL */
+ if (pixmap_name==NULL && label==NULL)
+ g_warning("Empty button created 'adr=%p' (no icon and no label)!",Button);
+
+ return Button;
+}
+
+/*
+ * Add the 'string' passed in parameter to the list store
+ * If this string already exists in the list store, it doesn't add it.
+ * Returns TRUE if string was added.
+ */
+gboolean Add_String_To_Combo_List (GtkListStore *liststore, gchar *str)
+{
+ GtkTreeIter iter;
+ gchar *text;
+ guint HISTORY_MAX_LENGTH = 15;
+ //gboolean found = FALSE;
+ gchar *string = g_strdup(str);
+
+ if (!string || g_utf8_strlen(string, -1) <= 0)
+ return FALSE;
+
+#if 0
+ // We add the string to the beginning of the list store
+ // So we will start to parse from the second line below
+ gtk_list_store_prepend(liststore, &iter);
+ gtk_list_store_set(liststore, &iter, MISC_COMBO_TEXT, string, -1);
+
+ // Search in the list store if string already exists and remove other same strings in the list
+ found = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &iter);
+ //gtk_tree_model_get(GTK_TREE_MODEL(liststore), &iter, MISC_COMBO_TEXT, &text, -1);
+ while (found && gtk_tree_model_iter_next(GTK_TREE_MODEL(liststore), &iter))
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(liststore), &iter, MISC_COMBO_TEXT, &text, -1);
+ //g_print(">0>%s\n>1>%s\n",string,text);
+ if (g_utf8_collate(text, string) == 0)
+ {
+ g_free(text);
+ // FIX ME : it seems that after it selects the next item for the
+ // combo (changes 'string')????
+ // So should select the first item?
+ gtk_list_store_remove(liststore, &iter);
+ // Must be rewinded?
+ found = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &iter);
+ //gtk_tree_model_get(GTK_TREE_MODEL(liststore), &iter, MISC_COMBO_TEXT, &text, -1);
+ continue;
+ }
+ g_free(text);
+ }
+
+ // Limit list size to HISTORY_MAX_LENGTH
+ while (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(liststore),NULL) > HISTORY_MAX_LENGTH)
+ {
+ if ( gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(liststore),
+ &iter,NULL,HISTORY_MAX_LENGTH) )
+ {
+ gtk_list_store_remove(liststore, &iter);
+ }
+ }
+
+ g_free(string);
+ // Place again to the beginning of the list, to select the right value?
+ //gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &iter);
+
+ return TRUE;
+
+#else
+
+ // Search in the list store if string already exists.
+ // FIXME : insert string at the beginning of the list (if already exists),
+ // and remove other same strings in the list
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &iter))
+ {
+ do
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(liststore), &iter, MISC_COMBO_TEXT, &text, -1);
+ if (g_utf8_collate(text, string) == 0)
+ {
+ g_free(text);
+ return FALSE;
+ }
+
+ g_free(text);
+ } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(liststore), &iter));
+ }
+
+ // We add the string to the beginning of the list store
+ gtk_list_store_prepend(liststore, &iter);
+ gtk_list_store_set(liststore, &iter, MISC_COMBO_TEXT, string, -1);
+
+ // Limit list size to HISTORY_MAX_LENGTH
+ while (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(liststore),NULL) > HISTORY_MAX_LENGTH)
+ {
+ if ( gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(liststore),
+ &iter,NULL,HISTORY_MAX_LENGTH) )
+ {
+ gtk_list_store_remove(liststore, &iter);
+ }
+ }
+
+ g_free(string);
+ return TRUE;
+#endif
+}
+
+/*
+ * Returns the text of the selected item in a combo box
+ * Remember to free the returned value...
+ */
+gchar *Get_Active_Combo_Box_Item (GtkComboBox *combo)
+{
+ gchar *text;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+
+ if (!combo)
+ return NULL;
+
+ model = gtk_combo_box_get_model(combo);
+ if (!gtk_combo_box_get_active_iter(combo, &iter))
+ return NULL;
+
+ gtk_tree_model_get(model, &iter, MISC_COMBO_TEXT, &text, -1);
+ return text;
+}
+
+/*
+ * Event attached to an entry to disable an other widget (for example: a button)
+ * when the entry is empty
+ */
+void Entry_Changed_Disable_Object(GtkObject *widget_to_disable, GtkEditable *source_widget)
+{
+ gchar *text = NULL;
+
+ if (!widget_to_disable || !source_widget) return;
+
+ text = gtk_editable_get_chars(GTK_EDITABLE(source_widget),0,-1);
+ if (!text || strlen(text)<1)
+ gtk_widget_set_sensitive(GTK_WIDGET(widget_to_disable),FALSE);
+ else
+ gtk_widget_set_sensitive(GTK_WIDGET(widget_to_disable),TRUE);
+
+ g_free(text);
+}
+
+/*
+ * To insert only digits in an entry. If the text contains only digits: returns it,
+ * else only first digits.
+ */
+void Insert_Only_Digit (GtkEditable *editable, const gchar *inserted_text, gint length,
+ gint *position, gpointer data)
+{
+ int i = 1; // Ignore first character
+ int j = 1;
+ gchar *result;
+
+ if (length<=0 || !inserted_text)
+ return;
+
+ if (!isdigit((guchar)inserted_text[0]) && inserted_text[0] != '-')
+ {
+ g_signal_stop_emission_by_name(G_OBJECT(editable),"insert_text");
+ return;
+ } else if (length == 1)
+ {
+ // We already checked the first digit...
+ return;
+ }
+
+ g_signal_stop_emission_by_name(G_OBJECT(editable),"insert_text");
+ result = g_malloc0(length);
+ result[0] = inserted_text[0];
+
+ // Check the rest, if any...
+ for (i = 1; i < length; i++)
+ {
+ if (isdigit((guchar)inserted_text[i]))
+ {
+ result[j++] = inserted_text[i];
+ }
+ }
+
+ if (result[0] == (gchar)NULL)
+ {
+ g_free(result);
+ return;
+ }
+
+ g_signal_handlers_block_by_func(G_OBJECT(editable),G_CALLBACK(Insert_Only_Digit),data);
+ gtk_editable_insert_text(editable, result, j, position);
+ g_signal_handlers_unblock_by_func(G_OBJECT(editable),G_CALLBACK(Insert_Only_Digit),data);
+ g_free(result);
+}
+
+/*
+ * Parse and auto complete date entry if you don't type the 4 digits.
+ */
+#include <time.h>
+#include <stdlib.h>
+gboolean Parse_Date (void)
+{
+ const gchar *year;
+ gchar *tmp, *tmp1;
+ gchar current_year[5];
+ time_t t;
+ struct tm t0;
+
+ if (!DATE_AUTO_COMPLETION) return FALSE;
+
+ /* Get the info entered by user */
+ year = gtk_entry_get_text(GTK_ENTRY(YearEntry));
+
+ if ( strcmp(year,"")!=0 && strlen(year)<4 )
+ {
+ t = time(NULL);
+ /* Get the current date */
+ memcpy(&t0, localtime(&t), sizeof(struct tm));
+ /* Put the current year in 'current_year' tab */
+ sprintf(current_year,"%d",1900+t0.tm_year);
+
+ tmp = &current_year[4-strlen(year)];
+ if ( atoi(year) <= atoi(tmp) )
+ {
+ sprintf(current_year,"%d",atoi(current_year)-atoi(tmp));
+ tmp1 = g_strdup_printf("%d",atoi(current_year)+atoi(year));
+ gtk_entry_set_text(GTK_ENTRY(YearEntry),tmp1);
+ g_free(tmp1);
+
+ }else
+ {
+ sprintf(current_year,"%d",atoi(current_year)-atoi(tmp)
+ -(strlen(year)<=0 ? 1 : strlen(year)<=1 ? 10 : // pow(10,strlen(year)) returns 99 instead of 100 under Win32...
+ strlen(year)<=2 ? 100 : strlen(year)<=3 ? 1000 : 0));
+ tmp1 = g_strdup_printf("%d",atoi(current_year)+atoi(year));
+ gtk_entry_set_text(GTK_ENTRY(YearEntry),tmp1);
+ g_free(tmp1);
+ }
+ }
+ return FALSE;
+}
+
+/*
+ * Load the genres list to the combo, and sorts it
+ */
+int Compare_Two_Genres (gchar *genre1,gchar *genre2)
+{
+ return strcmp(genre1,genre2);
+}
+
+void Load_Genres_List_To_UI (void)
+{
+ guint i;
+ GtkTreeIter iter;
+
+ if (!GenreComboModel) return;
+
+ gtk_list_store_append(GTK_LIST_STORE(GenreComboModel), &iter);
+ gtk_list_store_set(GTK_LIST_STORE(GenreComboModel), &iter, MISC_COMBO_TEXT, "", -1);
+
+ gtk_list_store_append(GTK_LIST_STORE(GenreComboModel), &iter);
+ gtk_list_store_set(GTK_LIST_STORE(GenreComboModel), &iter, MISC_COMBO_TEXT, "Unknown", -1);
+
+ for (i=0; i<=GENRE_MAX; i++)
+ {
+ gtk_list_store_append(GTK_LIST_STORE(GenreComboModel), &iter);
+ gtk_list_store_set(GTK_LIST_STORE(GenreComboModel), &iter, MISC_COMBO_TEXT, id3_genres[i], -1);
+ }
+}
+
+/*
+ * Load the track numbers into the track combo list
+ * We limit the preloaded values to 30 to avoid lost of time with lot of files...
+ */
+void Load_Track_List_To_UI (void)
+{
+ guint len;
+ guint i;
+ GtkTreeIter iter;
+ gchar *text;
+
+ if (!ETCore->ETFileDisplayedList || !TrackEntryComboModel) return;
+
+ // Number mini of items
+ //if ((len=ETCore->ETFileDisplayedList_Length) < 30)
+ // Length limited to 30 (instead to the number of files)!
+ len = 30;
+
+ // Create list of tracks
+ for (i=1; i<=len; i++)
+ {
+
+ if (NUMBER_TRACK_FORMATED)
+ {
+ text = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,i);
+ } else
+ {
+ text = g_strdup_printf("%.2d",i);
+ }
+
+ gtk_list_store_append(GTK_LIST_STORE(TrackEntryComboModel), &iter);
+ gtk_list_store_set(GTK_LIST_STORE(TrackEntryComboModel), &iter, MISC_COMBO_TEXT, text, -1);
+ g_free(text);
+ }
+
+}
+
+/*
+ * Change mouse cursor
+ */
+void Init_Mouse_Cursor (void)
+{
+ MouseCursor = NULL;
+}
+
+void Destroy_Mouse_Cursor (void)
+{
+ if (MouseCursor)
+ {
+ gdk_cursor_unref(MouseCursor);
+ MouseCursor = NULL;
+ }
+}
+
+void Set_Busy_Cursor (void)
+{
+ /* If still built, destroy it to avoid memory leak */
+ Destroy_Mouse_Cursor();
+ /* Create the new cursor */
+ MouseCursor = gdk_cursor_new(GDK_WATCH);
+ gdk_window_set_cursor(MainWindow->window,MouseCursor);
+}
+
+void Set_Unbusy_Cursor (void)
+{
+ /* Back to standard cursor */
+ gdk_window_set_cursor(MainWindow->window,NULL);
+ Destroy_Mouse_Cursor();
+}
+
+
+
+/*
+ * Add easytag specific icons to GTK stock set
+ */
+#include "../pixmaps/scan.xpm"
+#include "../pixmaps/select_all.xpm"
+#include "../pixmaps/invert_selection.xpm"
+#include "../pixmaps/add.xpm"
+#include "../pixmaps/unselect_all.xpm"
+#include "../pixmaps/grab.xpm"
+#include "../pixmaps/mask.xpm"
+//#include "../pixmaps/blackwhite.xpm"
+#include "../pixmaps/forbidden.xpm"
+#include "../pixmaps/read_only.xpm"
+//#include "../pixmaps/sequence_track.xpm"
+#include "../pixmaps/red_lines.xpm"
+#include "../pixmaps/artist_album.xpm"
+#include "../pixmaps/add_folder.xpm"
+#include "../pixmaps/parent_folder.xpm"
+#include "../pixmaps/sound.xpm"
+#include "../pixmaps/all_uppercase.xpm"
+#include "../pixmaps/all_downcase.xpm"
+#include "../pixmaps/first_letter_uppercase.xpm"
+#include "../pixmaps/first_letter_uppercase_word.xpm"
+void Init_Custom_Icons (void)
+{
+ Create_Xpm_Icon_Factory((const char**)select_all_xpm, "easytag-select-all");
+ Create_Xpm_Icon_Factory((const char**)scan_xpm, "easytag-scan");
+ Create_Xpm_Icon_Factory((const char**)invert_selection_xpm, "easytag-invert-selection");
+ Create_Xpm_Icon_Factory((const char**)add_xpm, "easytag-add");
+ Create_Xpm_Icon_Factory((const char**)unselect_all_xpm, "easytag-unselect-all");
+ Create_Xpm_Icon_Factory((const char**)grab_xpm, "easytag-grab");
+ Create_Xpm_Icon_Factory((const char**)mask_xpm, "easytag-mask");
+ //Create_Xpm_Icon_Factory((const char**)blackwhite_xpm, "easytag-blackwhite");
+ Create_Xpm_Icon_Factory((const char**)forbidden_xpm, "easytag-forbidden");
+ Create_Xpm_Icon_Factory((const char**)read_only_xpm, "easytag-read-only");
+ //Create_Xpm_Icon_Factory((const char**)sequence_track_xpm, "easytag-sequence-track");
+ Create_Xpm_Icon_Factory((const char**)red_lines_xpm, "easytag-red-lines");
+ Create_Xpm_Icon_Factory((const char**)artist_album_xpm, "easytag-artist-album");
+ Create_Xpm_Icon_Factory((const char**)parent_folder_xpm, "easytag-parent-folder");
+ Create_Xpm_Icon_Factory((const char**)add_folder_xpm, "easytag-add-folder");
+ Create_Xpm_Icon_Factory((const char**)sound_xpm, "easytag-sound");
+ Create_Xpm_Icon_Factory((const char**)all_uppercase_xpm, "easytag-all-uppercase");
+ Create_Xpm_Icon_Factory((const char**)all_downcase_xpm, "easytag-all-downcase");
+ Create_Xpm_Icon_Factory((const char**)first_letter_uppercase_xpm, "easytag-first-letter-uppercase");
+ Create_Xpm_Icon_Factory((const char**)first_letter_uppercase_word_xpm, "easytag-first-letter-uppercase-word");
+}
+
+
+/*
+ * Create an icon factory from the specified pixmap
+ * Also add it to the GTK stock images
+ */
+void Create_Xpm_Icon_Factory (const char **xpmdata, const char *xpmname)
+{
+ GtkIconSet *set;
+ GtkIconFactory *factory;
+ GdkPixbuf *pixbuf;
+
+ if (!*xpmdata || !xpmname)
+ return;
+
+ pixbuf = gdk_pixbuf_new_from_xpm_data(xpmdata);
+
+ set = gtk_icon_set_new_from_pixbuf(pixbuf);
+ factory = gtk_icon_factory_new();
+ gtk_icon_factory_add(factory, xpmname, set);
+ gtk_icon_set_unref(set);
+ gtk_icon_factory_add_default(factory);
+}
+
+/*
+ * Return a widget with a pixmap
+ * Note: for pixmap 'pixmap.xpm', pixmap_name is 'pixmap_xpm'
+ */
+GtkWidget *Create_Xpm_Image (const char **xpm_name)
+{
+ GdkPixbuf *pixbuf;
+ GtkWidget *image;
+
+ if (!*xpm_name)
+ return NULL;
+
+ pixbuf = gdk_pixbuf_new_from_xpm_data(xpm_name);
+ image = gtk_image_new_from_pixbuf(GDK_PIXBUF(pixbuf));
+
+ return image;
+}
+
+
+
+/*
+ * Iter compare func: Sort alphabetically
+ */
+gint Combo_Alphabetic_Sort (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data)
+{
+ gchar *text1, *text1_folded;
+ gchar *text2, *text2_folded;
+ gint ret;
+
+ gtk_tree_model_get(model, a, MISC_COMBO_TEXT, &text1, -1);
+ gtk_tree_model_get(model, b, MISC_COMBO_TEXT, &text2, -1);
+
+ if (text1 == text2)
+ {
+ g_free(text1);
+ g_free(text2);
+ return 0;
+ }
+
+ if (text1 == NULL)
+ {
+ g_free(text2);
+ return -1;
+ }
+
+ if (text2 == NULL)
+ {
+ g_free(text1);
+ return 1;
+ }
+
+ text1_folded = g_utf8_casefold(text1, -1);
+ text2_folded = g_utf8_casefold(text2, -1);
+ ret = g_utf8_collate(text1_folded, text2_folded);
+
+ g_free(text1);
+ g_free(text2);
+ g_free(text1_folded);
+ g_free(text2_folded);
+ return ret;
+}
+
+
+/*************************
+ * File selection window *
+ *************************/
+void File_Selection_Window_For_File (GtkWidget *entry)
+{
+ Open_File_Selection_Window(entry, _("Select directory..."), GTK_FILE_CHOOSER_ACTION_OPEN);
+}
+
+void File_Selection_Window_For_Directory (GtkWidget *entry)
+{
+ Open_File_Selection_Window(entry, _("Select file..."), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+}
+
+/*
+ * Open the file selection window and saves the selected file path into entry
+ */
+static void Open_File_Selection_Window (GtkWidget *entry, gchar *title, GtkFileChooserAction action)
+{
+ gchar *tmp;
+ gchar *filename, *filename_utf8;
+ GtkWidget *FileSelectionWindow;
+ GtkWindow *parent_window = NULL;
+
+ parent_window = (GtkWindow*) gtk_widget_get_toplevel(entry);
+ if (!GTK_WIDGET_TOPLEVEL(parent_window))
+ {
+ g_warning("Could not get parent window\n");
+ return;
+ }
+
+ FileSelectionWindow = gtk_file_chooser_dialog_new(title, parent_window, action,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+ // Set initial directory
+ tmp = (gchar*) gtk_entry_get_text(GTK_ENTRY(entry));
+ if (tmp && *tmp)
+ {
+ if (!gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(FileSelectionWindow),tmp))
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(FileSelectionWindow),tmp);
+ }
+
+
+ if (gtk_dialog_run(GTK_DIALOG(FileSelectionWindow)) == GTK_RESPONSE_ACCEPT)
+ {
+ filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(FileSelectionWindow));
+ filename_utf8 = filename_to_display(filename);
+ gtk_entry_set_text(GTK_ENTRY(entry),filename_utf8);
+ g_free(filename);
+ g_free(filename_utf8);
+ }
+ gtk_widget_destroy(FileSelectionWindow);
+}
+
+
+
+/*
+ * Run the audio player and load files of the current dir
+ */
+void Run_Audio_Player_Using_File_List (GList *etfilelist_init)
+{
+ gchar **argv;
+ gint argv_index = 0;
+ GList *etfilelist;
+ ET_File *etfile;
+ gchar *filename;
+ gchar *program_path;
+#ifdef WIN32
+ gchar *argv_join;
+ STARTUPINFO siStartupInfo;
+ PROCESS_INFORMATION piProcessInfo;
+#else
+ pid_t pid;
+ gchar **argv_user;
+ gint argv_user_number;
+#endif
+
+ // Exit if no program selected...
+ if (!AUDIO_FILE_PLAYER || strlen(g_strstrip(AUDIO_FILE_PLAYER))<1)
+ {
+ GtkWidget *msgbox = msg_box_new(_("Warning..."),_("No audio player defined!"),GTK_STOCK_DIALOG_WARNING,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ //gtk_window_set_transient_for(GTK_WINDOW(msgbox),GTK_WINDOW(OptionsWindow));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ return;
+ }
+
+ if ( !(program_path = Check_If_Executable_Exists(AUDIO_FILE_PLAYER)) )
+ {
+ gchar *msg = g_strdup_printf(_("The program '%s' can't be found!"),AUDIO_FILE_PLAYER);
+ Log_Print(msg);
+ g_free(msg);
+ return;
+ }
+ g_free(program_path);
+
+ // The list of files to play
+ etfilelist = etfilelist_init;
+
+#ifdef WIN32
+
+ // See documentation : http://c.developpez.com/faq/vc/?page=ProcessThread and http://www.answers.com/topic/createprocess
+ ZeroMemory(&siStartupInfo, sizeof(siStartupInfo));
+ siStartupInfo.cb = sizeof(siStartupInfo);
+ ZeroMemory(&piProcessInfo, sizeof(piProcessInfo));
+
+ argv = g_new0(gchar *,g_list_length(etfilelist) + 2); // "+2" for 1rst arg 'foo' and last arg 'NULL'
+ argv[argv_index++] = "foo";
+
+ // Load files as arguments
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ filename = ((File_Name *)etfile->FileNameCur->data)->value;
+ //filename_utf8 = ((File_Name *)etfile->FileNameCur->data)->value_utf8;
+ // We must enclose filename between quotes, because of possible (probable!) spaces in filenames"
+ argv[argv_index++] = g_strconcat("\"", filename, "\"", NULL);
+ etfilelist = etfilelist->next;
+ }
+ argv[argv_index] = NULL; // Ends the list of arguments
+
+ // Make a command line with all arguments (joins strings together to form one long string separated by a space)
+ argv_join = g_strjoinv(" ", argv);
+
+ if (CreateProcess(AUDIO_FILE_PLAYER,
+ argv_join,
+ NULL,
+ NULL,
+ FALSE,
+ CREATE_DEFAULT_ERROR_MODE,
+ NULL,
+ NULL,
+ &siStartupInfo,
+ &piProcessInfo) == FALSE)
+ {
+ Log_Print(_("Can't execute %s (error %d)!\n"), AUDIO_FILE_PLAYER, GetLastError());
+ }
+
+ // Free allocated parameters (for each filename)
+ for (argv_index = 1; argv[argv_index]; argv_index++)
+ g_free(argv[argv_index]);
+
+ g_free(argv_join);
+
+#else
+
+ argv_user = g_strsplit(AUDIO_FILE_PLAYER," ",0); // the string may contains arguments, space is the delimiter
+ // Number of arguments into 'argv_user'
+ for (argv_user_number=0;argv_user[argv_user_number];argv_user_number++);
+
+ argv = g_new0(gchar *,argv_user_number + g_list_length(etfilelist) + 1); // +1 for NULL
+
+ // Load 'user' arguments (program name and more...)
+ while (argv_user[argv_index])
+ {
+ argv[argv_index] = argv_user[argv_index];
+ argv_index++;
+ }
+
+ // Load files as arguments
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ filename = ((File_Name *)etfile->FileNameCur->data)->value;
+ //filename_utf8 = ((File_Name *)etfile->FileNameCur->data)->value_utf8;
+ argv[argv_index++] = filename;
+ etfilelist = etfilelist->next;
+ }
+ argv[argv_index] = NULL; // Ends the list of arguments
+
+ pid = fork();
+ switch (pid)
+ {
+ case -1:
+ Log_Print(_("Can't fork another process!\n"));
+ break;
+ case 0:
+ {
+ if (execvp(argv[0],argv) == -1)
+ {
+ Log_Print(_("Can't execute %s (%s)!\n"),argv[0],g_strerror(errno));
+ }
+ g_strfreev(argv_user);
+ _exit(1);
+ break;
+ }
+ default:
+ break;
+ }
+
+#endif
+
+ g_free(argv);
+}
+
+void Run_Audio_Player_Using_Directory (void)
+{
+ GList *etfilelist = g_list_first(ETCore->ETFileList);
+
+ Run_Audio_Player_Using_File_List(etfilelist);
+}
+
+void Run_Audio_Player_Using_Selection (void)
+{
+ GList *etfilelist = NULL;
+ GList *selfilelist = NULL;
+ ET_File *etfile;
+ GtkTreeSelection *selection;
+
+ if (!BrowserList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ while (selfilelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selfilelist->data);
+ etfilelist = g_list_append(etfilelist, etfile);
+
+ if (!selfilelist->next) break;
+ selfilelist = selfilelist->next;
+ }
+
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+
+ Run_Audio_Player_Using_File_List(etfilelist);
+
+ g_list_free(etfilelist);
+}
+
+void Run_Audio_Player_Using_Browser_Artist_List (void)
+{
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ GtkTreeModel *artistListModel;
+ GList *AlbumList, *etfilelist;
+ GList *concatenated_list = NULL;
+
+ if (!BrowserArtistList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserArtistList));
+ if (!gtk_tree_selection_get_selected(selection, &artistListModel, &iter))
+ return;
+
+ gtk_tree_model_get(artistListModel, &iter,
+ ARTIST_ALBUM_LIST_POINTER, &AlbumList,
+ -1);
+
+ while (AlbumList)
+ {
+ etfilelist = g_list_copy((GList *)AlbumList->data);
+ if (!concatenated_list)
+ concatenated_list = etfilelist;
+ else
+ concatenated_list = g_list_concat(concatenated_list,etfilelist);
+ AlbumList = AlbumList->next;
+ }
+
+ Run_Audio_Player_Using_File_List(concatenated_list);
+
+ if (concatenated_list)
+ g_list_free(concatenated_list);
+}
+
+void Run_Audio_Player_Using_Browser_Album_List (void)
+{
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ GtkTreeModel *albumListModel;
+ GList *etfilelist;
+
+ if (!BrowserAlbumList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserAlbumList));
+ if (!gtk_tree_selection_get_selected(selection, &albumListModel, &iter))
+ return;
+
+ gtk_tree_model_get(albumListModel, &iter,
+ ALBUM_ETFILE_LIST_POINTER, &etfilelist,
+ -1);
+
+ Run_Audio_Player_Using_File_List(etfilelist);
+}
+
+
+/*
+ * Check if the executable passed in parameter can be launched
+ * Returns the full path of the file (must be freed if not used)
+ */
+gchar *Check_If_Executable_Exists (const gchar *program)
+{
+ gchar *program_tmp;
+ gchar *tmp;
+
+ if (!program)
+ return NULL;
+
+ program_tmp = g_strdup(program);
+ g_strstrip(program_tmp);
+
+#ifdef WIN32
+ // Remove arguments if found, after '.exe'
+ if ( (tmp=strstr(program_tmp,".exe")) )
+ *(tmp + 4) = 0;
+#else
+ // Remove arguments if found
+ if ( (tmp=strchr(program_tmp,' ')) )
+ *tmp = 0;
+#endif
+
+ if (g_path_is_absolute(program_tmp))
+ {
+ if (access(program_tmp, X_OK) == 0)
+ {
+ return program_tmp;
+ } else
+ {
+ g_free(program_tmp);
+ return NULL;
+ }
+ } else
+ {
+ tmp = g_find_program_in_path(program_tmp);
+ if (tmp)
+ {
+ g_free(program_tmp);
+ return tmp;
+ }else
+ {
+ g_free(program_tmp);
+ return NULL;
+ }
+ }
+
+}
+
+
+
+/*
+ * The returned string must be freed after used
+ */
+gchar *Convert_Size (gfloat size)
+{
+ gchar *data = NULL;
+ /* Units Tab of file size (bytes,kilobytes,...) */
+ gchar *Units_Tab[] = { N_("B"), N_("KB"), N_("MB"), N_("GB"), N_("TB")};
+ gint i = 0;
+
+ while ( (gint)size/1024 && i<(gint)(sizeof(Units_Tab)/sizeof(Units_Tab[0])-1) )
+ {
+ size = size/1024;
+ i++;
+ }
+ return data = g_strdup_printf("%.1f %s",size,_(Units_Tab[i]));
+}
+
+/*
+ * Same that before except that if value in MB, we display 3 numbers after the coma
+ * The returned string must be freed after used
+ */
+gchar *Convert_Size_1 (gfloat size)
+{
+ gchar *data = NULL;
+ /* Units Tab of file size (bytes,kilobytes,...) */
+ gchar *Units_Tab[] = { N_("B"), N_("KB"), N_("MB"), N_("GB"), N_("TB")};
+ guint i = 0;
+
+ while ( (gint)size/1024 && i<(sizeof(Units_Tab)/sizeof(Units_Tab[0])-1) )
+ {
+ size = size/1024;
+ i++;
+ }
+ if (i >= 2) // For big values : display 3 number afer the separator (coma or point)
+ return data = g_strdup_printf("%.3f %s",size,_(Units_Tab[i]));
+ else
+ return data = g_strdup_printf("%.1f %s",size,_(Units_Tab[i]));
+}
+
+/*
+ * Convert a series of seconds into a readable duration
+ * Remember to free the string that is returned
+ */
+gchar *Convert_Duration (gulong duration)
+{
+ guint hour=0;
+ guint minute=0;
+ guint second=0;
+ gchar *data = NULL;
+
+ if (duration<=0)
+ return g_strdup_printf("%d:%.2d",minute,second);
+
+ hour = duration/3600;
+ minute = (duration%3600)/60;
+ second = (duration%3600)%60;
+
+ if (hour)
+ data = g_strdup_printf("%d:%.2d:%.2d",hour,minute,second);
+ else
+ data = g_strdup_printf("%d:%.2d",minute,second);
+
+ return data;
+}
+
+/*
+ * Returns the size of a file in bytes
+ */
+gulong Get_File_Size(gchar *filename)
+{
+ struct stat statbuf;
+
+ if (filename)
+ {
+ stat(filename,&statbuf);
+ return statbuf.st_size;
+ }else
+ {
+ return 0;
+ }
+}
+
+/*
+ * Delete spaces at the end and the beginning of the string
+ */
+void Strip_String (gchar *string)
+{
+ if (!string) return;
+ string = g_strstrip(string);
+}
+
+
+
+/*******************************
+ * Writting playlist functions *
+ *******************************/
+/*
+ * The window to write playlists.
+ */
+void Open_Write_Playlist_Window (void)
+{
+ GtkWidget *Frame;
+ GtkWidget *VBox;
+ GtkWidget *vbox, *hbox;
+ GtkWidget *ButtonBox;
+ GtkWidget *Button;
+ GtkWidget *Separator;
+ GtkWidget *Icon;
+ GtkWidget *MaskStatusIconBox, *MaskStatusIconBox1;
+ GtkTooltips *Tips;
+
+ if (WritePlaylistWindow != NULL)
+ {
+ gdk_window_raise(WritePlaylistWindow->window);
+ return;
+ }
+
+ Tips = gtk_tooltips_new();
+
+ WritePlaylistWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(WritePlaylistWindow),_("Generate a playlist"));
+ gtk_window_set_transient_for(GTK_WINDOW(WritePlaylistWindow),GTK_WINDOW(MainWindow));
+ g_signal_connect(G_OBJECT(WritePlaylistWindow),"destroy", G_CALLBACK(Destroy_Write_Playlist_Window),NULL);
+ g_signal_connect(G_OBJECT(WritePlaylistWindow),"delete_event", G_CALLBACK(Destroy_Write_Playlist_Window),NULL);
+ g_signal_connect(G_OBJECT(WritePlaylistWindow),"key_press_event", G_CALLBACK(Write_Playlist_Window_Key_Press),NULL);
+
+ // Just center on mainwindow
+ gtk_window_set_position(GTK_WINDOW(WritePlaylistWindow), GTK_WIN_POS_CENTER_ON_PARENT);
+ gtk_window_set_default_size(GTK_WINDOW(WritePlaylistWindow),PLAYLIST_WINDOW_WIDTH,PLAYLIST_WINDOW_HEIGHT);
+
+ Frame = gtk_frame_new(NULL);
+ gtk_container_add(GTK_CONTAINER(WritePlaylistWindow),Frame);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),4);
+
+ VBox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+
+ /* Playlist name */
+ if (!PlayListNameMaskModel)
+ PlayListNameMaskModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(PlayListNameMaskModel);
+
+ Frame = gtk_frame_new(_("M3U Playlist Name"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,TRUE,TRUE,0);
+ vbox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
+
+ playlist_use_mask_name = gtk_radio_button_new_with_label(NULL, _("Use mask :"));
+ hbox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(hbox),playlist_use_mask_name,FALSE,FALSE,0);
+ PlayListNameMaskCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(PlayListNameMaskModel), MISC_COMBO_TEXT);
+ gtk_box_pack_start(GTK_BOX(hbox),PlayListNameMaskCombo,FALSE,FALSE,4);
+ playlist_use_dir_name = gtk_radio_button_new_with_label_from_widget(
+ GTK_RADIO_BUTTON(playlist_use_mask_name),_("Use directory name"));
+ gtk_box_pack_start(GTK_BOX(vbox),playlist_use_dir_name,FALSE,FALSE,0);
+ // History list
+ Load_Play_List_Name_List(PlayListNameMaskModel, MISC_COMBO_TEXT);
+ Add_String_To_Combo_List(PlayListNameMaskModel, PLAYLIST_NAME);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(PlayListNameMaskCombo)->child), PLAYLIST_NAME);
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_use_mask_name),PLAYLIST_USE_MASK_NAME);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_use_dir_name),PLAYLIST_USE_DIR_NAME);
+
+ // Mask status icon
+ MaskStatusIconBox = Create_Pixmap_Icon_With_Event_Box("easytag-forbidden");
+ gtk_box_pack_start(GTK_BOX(hbox),MaskStatusIconBox,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,MaskStatusIconBox,_("Invalid Scanner Mask"),NULL);
+ // Signal connection to check if mask is correct into the mask entry
+ g_signal_connect_swapped(G_OBJECT(GTK_BIN(PlayListNameMaskCombo)->child),"changed",
+ G_CALLBACK(Playlist_Check_Content_Mask),G_OBJECT(MaskStatusIconBox));
+
+ // Button for Mask editor
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock("easytag-mask", GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Edit Masks"),NULL);
+ // The masks will be edited into a tab of the preferences window. In the future...
+ //g_signal_connect(G_OBJECT(Button),"clicked",(GtkSignalFunc)???,NULL);
+ // FIX ME : edit the masks
+ gtk_widget_set_sensitive(GTK_WIDGET(Button),FALSE);
+
+
+ /* Playlist options */
+ Frame = gtk_frame_new(_("Playlist Options"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,TRUE,TRUE,0);
+ vbox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
+
+ playlist_only_selected_files = gtk_check_button_new_with_label(_("Include only the selected files"));
+ gtk_box_pack_start(GTK_BOX(vbox),playlist_only_selected_files,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_only_selected_files),PLAYLIST_ONLY_SELECTED_FILES);
+ gtk_tooltips_set_tip(Tips,playlist_only_selected_files,_("If activated, only the selected files will be "
+ "written in the playlist file. Else, all the files will be written."),NULL);
+
+ // Separator line
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(vbox),Separator,FALSE,FALSE,0);
+
+ playlist_full_path = gtk_radio_button_new_with_label(NULL,_("Use full path for files in playlist"));
+ gtk_box_pack_start(GTK_BOX(vbox),playlist_full_path,FALSE,FALSE,0);
+ playlist_relative_path = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(playlist_full_path),
+ _("Use relative path for files in playlist"));
+ gtk_box_pack_start(GTK_BOX(vbox),playlist_relative_path,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_full_path),PLAYLIST_FULL_PATH);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_relative_path),PLAYLIST_RELATIVE_PATH);
+
+ // Separator line
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(vbox),Separator,FALSE,FALSE,0);
+
+ // Create playlist in parent directory
+ playlist_create_in_parent_dir = gtk_check_button_new_with_label(_("Create playlist in the parent directory"));
+ gtk_box_pack_start(GTK_BOX(vbox),playlist_create_in_parent_dir,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_create_in_parent_dir),PLAYLIST_CREATE_IN_PARENT_DIR);
+ gtk_tooltips_set_tip(Tips,playlist_create_in_parent_dir,_("If activated, the playlist will be created "
+ "in the parent directory."),NULL);
+
+ // DOS Separator
+ playlist_use_dos_separator = gtk_check_button_new_with_label(_("Use DOS directory separator"));
+#ifndef WIN32 // This has no sense under Win32, so we don't display it
+ gtk_box_pack_start(GTK_BOX(vbox),playlist_use_dos_separator,FALSE,FALSE,0);
+#endif
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_use_dos_separator),PLAYLIST_USE_DOS_SEPARATOR);
+ gtk_tooltips_set_tip(Tips,playlist_use_dos_separator,_("This option replaces the UNIX directory "
+ "separator '/' into DOS separator '\\'."),NULL);
+
+ /* Playlist content */
+ if (!PlayListContentMaskModel)
+ PlayListContentMaskModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(PlayListContentMaskModel);
+
+ Frame = gtk_frame_new(_("Playlist Content"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,TRUE,TRUE,0);
+ vbox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
+
+ playlist_content_none = gtk_radio_button_new_with_label(NULL,_("Write only list of files"));
+ gtk_box_pack_start(GTK_BOX(vbox),playlist_content_none,FALSE,FALSE,0);
+
+ playlist_content_filename = gtk_radio_button_new_with_label_from_widget(
+ GTK_RADIO_BUTTON(playlist_content_none),_("Write info using filename"));
+ gtk_box_pack_start(GTK_BOX(vbox),playlist_content_filename,FALSE,FALSE,0);
+
+ playlist_content_mask = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(playlist_content_none), _("Write info using :"));
+ hbox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(hbox),playlist_content_mask,FALSE,FALSE,0);
+ // Set a label, a combobox and un editor button in the 3rd radio button
+ PlayListContentMaskCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(PlayListContentMaskModel), MISC_COMBO_TEXT);
+ gtk_box_pack_start(GTK_BOX(hbox),PlayListContentMaskCombo,FALSE,FALSE,0);
+ // History list
+ Load_Playlist_Content_Mask_List(PlayListContentMaskModel, MISC_COMBO_TEXT);
+ Add_String_To_Combo_List(PlayListContentMaskModel, PLAYLIST_CONTENT_MASK_VALUE);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(PlayListContentMaskCombo)->child), PLAYLIST_CONTENT_MASK_VALUE);
+
+ // Mask status icon
+ MaskStatusIconBox1 = Create_Pixmap_Icon_With_Event_Box("easytag-forbidden");
+ gtk_box_pack_start(GTK_BOX(hbox),MaskStatusIconBox1,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,MaskStatusIconBox1,_("Invalid Scanner Mask"),NULL);
+ // Signal connection to check if mask is correct into the mask entry
+ g_signal_connect_swapped(G_OBJECT(GTK_BIN(PlayListContentMaskCombo)->child),"changed",
+ G_CALLBACK(Playlist_Check_Content_Mask),G_OBJECT(MaskStatusIconBox1));
+
+ // Button for Mask editor
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock("easytag-mask", GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Edit Masks"),NULL);
+ // The masks will be edited into a tab of the preferences window. In the future...
+ //g_signal_connect(G_OBJECT(Button),"clicked",(GtkSignalFunc)???,NULL);
+ // FIX ME : edit the masks
+ gtk_widget_set_sensitive(GTK_WIDGET(Button),FALSE);
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_content_none), PLAYLIST_CONTENT_NONE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_content_filename),PLAYLIST_CONTENT_FILENAME);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_content_mask), PLAYLIST_CONTENT_MASK);
+
+
+ /* Separator line */
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ ButtonBox = gtk_hbutton_box_new ();
+ gtk_box_pack_start(GTK_BOX(VBox),ButtonBox,FALSE,FALSE,0);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(ButtonBox),GTK_BUTTONBOX_END);
+ gtk_box_set_spacing(GTK_BOX(ButtonBox), 10);
+
+ /* Button to Cancel */
+ Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(Button);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Write_Playlist_Window),NULL);
+
+ /* Button to Write the playlist */
+ Button = Create_Button_With_Pixmap(BUTTON_WRITE);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",G_CALLBACK(Playlist_Write_Button_Pressed),NULL);
+
+ gtk_widget_show_all(WritePlaylistWindow);
+ if (PLAYLIST_WINDOW_X > 0 && PLAYLIST_WINDOW_Y > 0)
+ gdk_window_move(WritePlaylistWindow->window,PLAYLIST_WINDOW_X,PLAYLIST_WINDOW_Y);
+
+ /* To initialize the mask status icon and visibility */
+ g_signal_emit_by_name(G_OBJECT(GTK_BIN(PlayListNameMaskCombo)->child),"changed");
+ g_signal_emit_by_name(G_OBJECT(GTK_BIN(PlayListContentMaskCombo)->child),"changed");
+}
+
+void Destroy_Write_Playlist_Window (void)
+{
+ if (WritePlaylistWindow)
+ {
+ /* Save combobox history lists before exit */
+ Save_Play_List_Name_List(PlayListNameMaskModel, MISC_COMBO_TEXT);
+ Save_Playlist_Content_Mask_List(PlayListContentMaskModel, MISC_COMBO_TEXT);
+
+ Write_Playlist_Window_Apply_Changes();
+
+ gtk_widget_destroy(WritePlaylistWindow);
+ WritePlaylistWindow = (GtkWidget *)NULL;
+ }
+}
+
+/*
+ * For the configuration file...
+ */
+void Write_Playlist_Window_Apply_Changes (void)
+{
+ if (WritePlaylistWindow)
+ {
+ gint x, y, width, height;
+
+ if ( WritePlaylistWindow->window && gdk_window_is_visible(WritePlaylistWindow->window)
+ && gdk_window_get_state(WritePlaylistWindow->window)!=GDK_WINDOW_STATE_MAXIMIZED )
+ {
+ // Position and Origin of the window
+ gdk_window_get_root_origin(WritePlaylistWindow->window,&x,&y);
+ PLAYLIST_WINDOW_X = x;
+ PLAYLIST_WINDOW_Y = y;
+ gdk_window_get_size(WritePlaylistWindow->window,&width,&height);
+ PLAYLIST_WINDOW_WIDTH = width;
+ PLAYLIST_WINDOW_HEIGHT = height;
+ }
+
+ /* List of variables also set in the function 'Playlist_Write_Button_Pressed' */
+ if (PLAYLIST_NAME) g_free(PLAYLIST_NAME);
+ PLAYLIST_NAME = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(PlayListNameMaskCombo)->child)));
+ PLAYLIST_USE_MASK_NAME = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_use_mask_name));
+ PLAYLIST_USE_DIR_NAME = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_use_dir_name));
+
+ PLAYLIST_ONLY_SELECTED_FILES = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_only_selected_files));
+ PLAYLIST_FULL_PATH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_full_path));
+ PLAYLIST_RELATIVE_PATH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_relative_path));
+ PLAYLIST_CREATE_IN_PARENT_DIR = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_create_in_parent_dir));
+ PLAYLIST_USE_DOS_SEPARATOR = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_use_dos_separator));
+
+ PLAYLIST_CONTENT_NONE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_none));
+ PLAYLIST_CONTENT_FILENAME = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_filename));
+ PLAYLIST_CONTENT_MASK = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_mask));
+ if (PLAYLIST_CONTENT_MASK_VALUE) g_free(PLAYLIST_CONTENT_MASK_VALUE);
+ PLAYLIST_CONTENT_MASK_VALUE = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(PlayListContentMaskCombo)->child)));
+ }
+}
+
+gboolean Write_Playlist_Window_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ Destroy_Write_Playlist_Window();
+ break;
+ }
+ }
+ return FALSE;
+}
+
+void Playlist_Write_Button_Pressed (void)
+{
+ gchar *playlist_name = NULL;
+ gchar *playlist_path_utf8; // Path
+ gchar *playlist_basename_utf8; // Filename
+ gchar *playlist_name_utf8; // Path + filename
+ gchar *temp;
+ FILE *file;
+ gchar *msg;
+ GtkWidget *msgbox;
+ gint msgbox_button = 0;
+
+
+ // Check if playlist name was filled
+ if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_use_mask_name))
+ && g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(PlayListNameMaskCombo)->child)), -1)<=0 )
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_use_dir_name),TRUE);
+
+ /* List of variables also set in the function 'Write_Playlist_Window_Apply_Changes' */
+ /***if (PLAYLIST_NAME) g_free(PLAYLIST_NAME);
+ PLAYLIST_NAME = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(PlayListNameMaskCombo)->child)));
+ PLAYLIST_USE_MASK_NAME = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_use_mask_name));
+ PLAYLIST_USE_DIR_NAME = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_use_dir_name));
+
+ PLAYLIST_ONLY_SELECTED_FILES = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_only_selected_files));
+ PLAYLIST_FULL_PATH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_full_path));
+ PLAYLIST_RELATIVE_PATH = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_relative_path));
+ PLAYLIST_CREATE_IN_PARENT_DIR = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_create_in_parent_dir));
+ PLAYLIST_USE_DOS_SEPARATOR = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_use_dos_separator));
+
+ PLAYLIST_CONTENT_NONE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_none));
+ PLAYLIST_CONTENT_FILENAME = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_filename));
+ PLAYLIST_CONTENT_MASK = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_content_mask));
+ if (PLAYLIST_CONTENT_MASK_VALUE) g_free(PLAYLIST_CONTENT_MASK_VALUE);
+ PLAYLIST_CONTENT_MASK_VALUE = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(PlayListContentMaskCombo)->child)));***/
+ Write_Playlist_Window_Apply_Changes();
+
+ // Path of the playlist file (may be truncated later if PLAYLIST_CREATE_IN_PARENT_DIR is TRUE)
+ playlist_path_utf8 = filename_to_display(Browser_Get_Current_Path());
+
+ // Build the playlist file name
+ if (PLAYLIST_USE_MASK_NAME)
+ {
+
+ if (!ETCore->ETFileList)
+ return;
+
+ Add_String_To_Combo_List(PlayListNameMaskModel, PLAYLIST_NAME);
+
+ // Generate filename from tag of the current selected file (hummm FIX ME)
+ temp = filename_from_display(PLAYLIST_NAME);
+ playlist_basename_utf8 = Scan_Generate_New_Filename_From_Mask(ETCore->ETFileDisplayed,temp,FALSE);
+ g_free(temp);
+
+ // Replace Characters (with scanner)
+ if (RFS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE)
+ {
+ Scan_Convert_Underscore_Into_Space(playlist_basename_utf8);
+ Scan_Convert_P20_Into_Space(playlist_basename_utf8);
+ }
+ if (RFS_CONVERT_SPACE_INTO_UNDERSCORE)
+ {
+ Scan_Convert_Space_Into_Undescore(playlist_basename_utf8);
+ }
+
+ }else // PLAYLIST_USE_DIR_NAME
+ {
+
+ if ( strcmp(playlist_path_utf8,G_DIR_SEPARATOR_S)==0 )
+ {
+ playlist_basename_utf8 = g_strdup("playlist");
+ }else
+ {
+ gchar *tmp_string = g_strdup(playlist_path_utf8);
+ // Remove last '/'
+ if (tmp_string[strlen(tmp_string)-1]==G_DIR_SEPARATOR)
+ tmp_string[strlen(tmp_string)-1] = '\0';
+ // Get directory name
+ temp = g_path_get_basename(tmp_string);
+ playlist_basename_utf8 = g_strdup(temp);
+ g_free(tmp_string);
+ g_free(temp);
+ }
+
+ }
+
+ // Must be placed after "Build the playlist file name", as we can truncate the path!
+ if (PLAYLIST_CREATE_IN_PARENT_DIR)
+ {
+ if ( (strcmp(playlist_path_utf8,G_DIR_SEPARATOR_S) != 0) )
+ {
+ gchar *tmp;
+ // Remove last '/'
+ if (playlist_path_utf8[strlen(playlist_path_utf8)-1]==G_DIR_SEPARATOR)
+ playlist_path_utf8[strlen(playlist_path_utf8)-1] = '\0';
+ // Get parent directory
+ if ( (tmp=strrchr(playlist_path_utf8,G_DIR_SEPARATOR)) != NULL )
+ *(tmp + 1) = '\0';
+ }
+ }
+
+ // Generate path + filename of playlist
+ if (playlist_path_utf8[strlen(playlist_path_utf8)-1]==G_DIR_SEPARATOR)
+ playlist_name_utf8 = g_strconcat(playlist_path_utf8,playlist_basename_utf8,".m3u",NULL);
+ else
+ playlist_name_utf8 = g_strconcat(playlist_path_utf8,G_DIR_SEPARATOR_S,playlist_basename_utf8,".m3u",NULL);
+
+ g_free(playlist_path_utf8);
+ g_free(playlist_basename_utf8);
+
+ playlist_name = filename_from_display(playlist_name_utf8);
+
+ // Check if file exists
+ if (CONFIRM_WRITE_PLAYLIST)
+ {
+ if ( (file=fopen(playlist_name,"r")) != NULL )
+ {
+ fclose(file);
+ msg = g_strdup_printf(_("Playlist file '%s' already exists!\nOverwrite?"),playlist_name_utf8);
+ msgbox = msg_box_new(_("Write Playlist..."),msg,GTK_STOCK_DIALOG_QUESTION,BUTTON_NO,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msgbox_button = msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+ }
+ }
+
+ // Writing playlist if ok
+ if (msgbox_button==0 || msgbox_button==BUTTON_YES )
+ {
+ if ( Write_Playlist(playlist_name) == FALSE )
+ {
+ // Writing fails...
+ msg = g_strdup_printf(_("Can't write playlist file '%s'!\n(%s)"),playlist_name_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ }else
+ {
+ msg = g_strdup_printf(_("Written playlist file '%s'"),playlist_name_utf8);
+ //msgbox = msg_box_new(_("Information..."),msg,GTK_STOCK_DIALOG_INFO,BUTTON_OK,0);
+ Statusbar_Message(msg,TRUE);
+ }
+ g_free(msg);
+ }
+ g_free(playlist_name_utf8);
+ g_free(playlist_name);
+}
+
+gboolean Playlist_Check_Content_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source)
+{
+ gchar *tmp = NULL;
+ gchar *mask = NULL;
+
+
+ if (!widget_to_show_hide || !widget_source)
+ goto Bad_Mask;
+
+ mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget_source)));
+ if (!mask || strlen(mask)<1)
+ goto Bad_Mask;
+
+ while (mask)
+ {
+ if ( (tmp=strrchr(mask,'%'))==NULL )
+ {
+ /* There is no more code. */
+ /* No code in mask is accepted. */
+ goto Good_Mask;
+ }
+ if (strlen(tmp)>1 && (tmp[1]=='t' || tmp[1]=='a' || tmp[1]=='b' || tmp[1]=='y' ||
+ tmp[1]=='g' || tmp[1]=='n' || tmp[1]=='l' || tmp[1]=='c' || tmp[1]=='i'))
+ {
+ /* The code is valid. */
+ /* No separator is accepted. */
+ *(mask+strlen(mask)-strlen(tmp)) = '\0';
+ }else
+ {
+ goto Bad_Mask;
+ }
+ }
+
+ Bad_Mask:
+ g_free(mask);
+ gtk_widget_show(GTK_WIDGET(widget_to_show_hide));
+ return FALSE;
+
+ Good_Mask:
+ g_free(mask);
+ gtk_widget_hide(GTK_WIDGET(widget_to_show_hide));
+ return TRUE;
+}
+
+/*
+ * Function to replace UNIX ForwardSlash with a DOS BackSlash
+ */
+void Playlist_Convert_Forwardslash_Into_Backslash (gchar *string)
+{
+ gchar *tmp;
+
+ while ((tmp=strchr(string,'/'))!=NULL)
+ *tmp = '\\';
+}
+
+
+/*
+ * Write a playlist
+ * - 'playlist_name' in file system encoding (not UTF-8)
+ */
+gboolean Write_Playlist (gchar *playlist_name)
+{
+ FILE *file;
+ ET_File *etfile;
+ GList *etfilelist = NULL;
+ gchar *filename;
+ gchar *playlist_name_utf8 = filename_to_display(playlist_name);
+ gchar *basedir;
+ gchar *temp;
+ gint duration;
+
+ if ((file = fopen(playlist_name,"wb")) == NULL)
+ {
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),playlist_name_utf8,g_strerror(errno));
+ g_free(playlist_name_utf8);
+ return FALSE;
+ }
+
+ /* 'base directory' where is located the playlist. Used also to write file with a
+ * relative path for file located in this directory and sub-directories
+ */
+ basedir = g_path_get_dirname(playlist_name);
+
+ // 1) First line of the file (if playlist content is not set to "write only list of files")
+ if (!PLAYLIST_CONTENT_NONE)
+ {
+ fprintf(file,"#EXTM3U\r\n");
+ }
+
+ if (PLAYLIST_ONLY_SELECTED_FILES)
+ {
+ GList *selfilelist = NULL;
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(BrowserList));
+
+ selfilelist = gtk_tree_selection_get_selected_rows(selection, NULL);
+ while (selfilelist)
+ {
+ etfile = Browser_List_Get_ETFile_From_Path(selfilelist->data);
+ etfilelist = g_list_append(etfilelist, etfile);
+
+ if (!selfilelist->next) break;
+ selfilelist = selfilelist->next;
+ }
+
+ g_list_foreach(selfilelist, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selfilelist);
+ }else
+ {
+ etfilelist = g_list_first(ETCore->ETFileList);
+ }
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ filename = ((File_Name *)etfile->FileNameCur->data)->value;
+ duration = ((ET_File_Info *)etfile->ETFileInfo)->duration;
+
+ if (PLAYLIST_RELATIVE_PATH)
+ {
+ // Keep only files in this directory and sub-dirs
+ if ( strncmp(filename,basedir,strlen(basedir))==0 )
+ {
+ // 2) Write the header
+ if (PLAYLIST_CONTENT_NONE)
+ {
+ // No header written
+ }else if (PLAYLIST_CONTENT_FILENAME)
+ {
+ // Header uses only filename
+ temp = g_path_get_basename(filename);
+ fprintf(file,"#EXTINF:%d,%s\r\n",duration,temp); // Must be written in system encoding (not UTF-8)
+ g_free(temp);
+ }else if (PLAYLIST_CONTENT_MASK)
+ {
+ // Header uses generated filename from a mask
+ gchar *mask = filename_from_display(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(PlayListContentMaskCombo)->child)));
+ // Special case : we don't replace illegal characters and don't check if there is a directory separator in the mask.
+ gchar *filename_generated_utf8 = Scan_Generate_New_Filename_From_Mask(etfile,mask,TRUE);
+ gchar *filename_generated = filename_from_display(filename_generated_utf8);
+ fprintf(file,"#EXTINF:%d,%s\r\n",duration,filename_generated); // Must be written in system encoding (not UTF-8)
+ g_free(mask);
+ g_free(filename_generated_utf8);
+ }
+
+ // 3) Write the file path
+ if (PLAYLIST_USE_DOS_SEPARATOR)
+ {
+ gchar *filename_conv = g_strdup(filename+strlen(basedir)+1);
+ Playlist_Convert_Forwardslash_Into_Backslash(filename_conv);
+ fprintf(file,"%s\r\n",filename_conv); // Must be written in system encoding (not UTF-8)
+ g_free(filename_conv);
+ }else
+ {
+ fprintf(file,"%s\r\n",filename+strlen(basedir)+1); // Must be written in system encoding (not UTF-8)
+ }
+ }
+ }else // PLAYLIST_FULL_PATH
+ {
+ // 2) Write the header
+ if (PLAYLIST_CONTENT_NONE)
+ {
+ // No header written
+ }else if (PLAYLIST_CONTENT_FILENAME)
+ {
+ // Header uses only filename
+ temp = g_path_get_basename(filename);
+ fprintf(file,"#EXTINF:%d,%s\r\n",duration,temp); // Must be written in system encoding (not UTF-8)
+ g_free(temp);
+ }else if (PLAYLIST_CONTENT_MASK)
+ {
+ // Header uses generated filename from a mask
+ gchar *mask = filename_from_display(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(PlayListContentMaskCombo)->child)));
+ gchar *filename_generated_utf8 = Scan_Generate_New_Filename_From_Mask(etfile,mask,TRUE);
+ gchar *filename_generated = filename_from_display(filename_generated_utf8);
+ fprintf(file,"#EXTINF:%d,%s\r\n",duration,filename_generated); // Must be written in system encoding (not UTF-8)
+ g_free(mask);
+ g_free(filename_generated_utf8);
+ }
+
+ // 3) Write the file path
+ if (PLAYLIST_USE_DOS_SEPARATOR)
+ {
+ gchar *filename_conv = g_strdup(filename);
+ Playlist_Convert_Forwardslash_Into_Backslash(filename_conv);
+ fprintf(file,"%s\r\n",filename_conv); // Must be written in system encoding (not UTF-8)
+ g_free(filename_conv);
+ }else
+ {
+ fprintf(file,"%s\r\n",filename); // Must be written in system encoding (not UTF-8)
+ }
+ }
+ etfilelist = etfilelist->next;
+ }
+ fclose(file);
+
+ if (PLAYLIST_ONLY_SELECTED_FILES)
+ g_list_free(etfilelist);
+ g_free(playlist_name_utf8);
+ g_free(basedir);
+ return TRUE;
+}
+
+
+
+
+/*****************************
+ * Searching files functions *
+ *****************************/
+/*
+ * The window to search keywords in the list of files.
+ */
+void Open_Search_File_Window (void)
+{
+ GtkWidget *VBox;
+ GtkWidget *Frame;
+ GtkWidget *Table;
+ GtkWidget *Label;
+ GtkWidget *Button;
+ GtkWidget *Separator;
+ GtkTooltips *Tips;
+ GtkWidget *ScrollWindow;
+ GtkTreeViewColumn* column;
+ GtkCellRenderer* renderer;
+ gchar *SearchResultList_Titles[] = { N_("File Name"),
+ N_("Title"),
+ N_("Artist"),
+ N_("Album"),
+ N_("CD"),
+ N_("Year"),
+ N_("Track"),
+ N_("Genre"),
+ N_("Comment"),
+ N_("Composer"),
+ N_("Orig. Artist"),
+ N_("Copyright"),
+ N_("URL"),
+ N_("Encoded by")
+ };
+
+
+ if (SearchFileWindow != NULL)
+ {
+ gdk_window_raise(SearchFileWindow->window);
+ return;
+ }
+
+ SearchFileWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(SearchFileWindow),_("Search a file"));
+ g_signal_connect(G_OBJECT(SearchFileWindow),"destroy", G_CALLBACK(Destroy_Search_File_Window),NULL);
+ g_signal_connect(G_OBJECT(SearchFileWindow),"delete_event", G_CALLBACK(Destroy_Search_File_Window),NULL);
+ g_signal_connect(G_OBJECT(SearchFileWindow),"key_press_event", G_CALLBACK(Search_File_Window_Key_Press),NULL);
+ gtk_window_set_default_size(GTK_WINDOW(SearchFileWindow),SEARCH_WINDOW_WIDTH,SEARCH_WINDOW_HEIGHT);
+
+ // The tooltips
+ Tips = gtk_tooltips_new();
+
+ VBox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(SearchFileWindow),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 1);
+
+ Frame = gtk_frame_new(NULL);
+ //gtk_container_add(GTK_CONTAINER(SearchFileWindow),Frame);
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,TRUE,TRUE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+
+ Table = gtk_table_new(3,6,FALSE);
+ gtk_container_add(GTK_CONTAINER(Frame),Table);
+ gtk_container_set_border_width(GTK_CONTAINER(Table), 2);
+ gtk_table_set_row_spacings(GTK_TABLE(Table),4);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),4);
+
+ // Words to search
+ if (!SearchStringModel)
+ SearchStringModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(SearchStringModel);
+
+ Label = gtk_label_new(_("Search :"));
+ gtk_misc_set_alignment(GTK_MISC(Label),1.0,0.5);
+ gtk_table_attach(GTK_TABLE(Table),Label,0,1,0,1,GTK_FILL,GTK_FILL,0,0);
+ SearchStringCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(SearchStringModel), MISC_COMBO_TEXT);
+ gtk_widget_set_size_request(GTK_WIDGET(SearchStringCombo),200,-1);
+ gtk_table_attach(GTK_TABLE(Table),SearchStringCombo,1,5,0,1,GTK_EXPAND|GTK_FILL,GTK_FILL,0,0);
+ // History List
+ Load_Search_File_List(SearchStringModel, MISC_COMBO_TEXT);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(SearchStringCombo)->child),"");
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(SearchStringCombo)->child)),
+ _("Type the word to search into files. Or type nothing to display all files."),NULL);
+
+ // Set content of the clipboard if available
+ gtk_editable_paste_clipboard(GTK_EDITABLE(GTK_BIN(SearchStringCombo)->child));
+
+ // Where...
+ Label = gtk_label_new(_("In :"));
+ gtk_misc_set_alignment(GTK_MISC(Label),1.0,0.5);
+ gtk_table_attach(GTK_TABLE(Table),Label,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+ SearchInFilename = gtk_check_button_new_with_label(_("the File Name"));
+ // Note : label changed to "the Tag" (to be the only one) to fix a Hungarian grammatical problem (which uses one word to say "in the tag" like here)
+ SearchInTag = gtk_check_button_new_with_label(_("the Tag"));
+ gtk_table_attach(GTK_TABLE(Table),SearchInFilename,1,2,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_table_attach(GTK_TABLE(Table),SearchInTag,2,3,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SearchInFilename),SEARCH_IN_FILENAME);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SearchInTag),SEARCH_IN_TAG);
+
+ Separator = gtk_vseparator_new();
+ gtk_table_attach(GTK_TABLE(Table),Separator,3,4,1,2,GTK_FILL,GTK_FILL,4,0);
+
+ // Property of the search
+ SearchCaseSensitive = gtk_check_button_new_with_label(_("Case sensitive"));
+ gtk_table_attach(GTK_TABLE(Table),SearchCaseSensitive,4,5,1,2,GTK_EXPAND|GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SearchCaseSensitive),SEARCH_CASE_SENSITIVE);
+
+ // Results list
+ ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_widget_set_size_request(GTK_WIDGET(ScrollWindow), -1, 130);
+ gtk_table_attach(GTK_TABLE(Table),ScrollWindow,0,6,2,3,GTK_EXPAND|GTK_FILL,GTK_EXPAND|GTK_FILL,0,0);
+
+ SearchResultListModel = gtk_list_store_new(SEARCH_COLUMN_COUNT,
+ G_TYPE_STRING, /* Filename */
+ G_TYPE_STRING, /* Title */
+ G_TYPE_STRING, /* Artist */
+ G_TYPE_STRING, /* Album */
+ G_TYPE_STRING, /* Disc Number */
+ G_TYPE_STRING, /* Year */
+ G_TYPE_STRING, /* Track + Track Total */
+ G_TYPE_STRING, /* Genre */
+ G_TYPE_STRING, /* Comment */
+ G_TYPE_STRING, /* Composer */
+ G_TYPE_STRING, /* Orig. Artist */
+ G_TYPE_STRING, /* Copyright */
+ G_TYPE_STRING, /* URL */
+ G_TYPE_STRING, /* Encoded by */
+
+ G_TYPE_INT, /* Font Weight for Filename */
+ G_TYPE_INT, /* Font Weight for Title */
+ G_TYPE_INT, /* Font Weight for Artist */
+ G_TYPE_INT, /* Font Weight for Album */
+ G_TYPE_INT, /* Font Weight for Disc Number */
+ G_TYPE_INT, /* Font Weight for Year */
+ G_TYPE_INT, /* Font Weight for Track + Track Total */
+ G_TYPE_INT, /* Font Weight for Genre */
+ G_TYPE_INT, /* Font Weight for Comment */
+ G_TYPE_INT, /* Font Weight for Composer */
+ G_TYPE_INT, /* Font Weight for Orig. Artist */
+ G_TYPE_INT, /* Font Weight for Copyright */
+ G_TYPE_INT, /* Font Weight for URL */
+ G_TYPE_INT, /* Font Weight for Encoded by */
+
+ GDK_TYPE_COLOR, /* Color Weight for Filename */
+ GDK_TYPE_COLOR, /* Color Weight for Title */
+ GDK_TYPE_COLOR, /* Color Weight for Artist */
+ GDK_TYPE_COLOR, /* Color Weight for Album */
+ GDK_TYPE_COLOR, /* Color Weight for Disc Number */
+ GDK_TYPE_COLOR, /* Color Weight for Year */
+ GDK_TYPE_COLOR, /* Color Weight for Track + Track Total */
+ GDK_TYPE_COLOR, /* Color Weight for Genre */
+ GDK_TYPE_COLOR, /* Color Weight for Comment */
+ GDK_TYPE_COLOR, /* Color Weight for Composer */
+ GDK_TYPE_COLOR, /* Color Weight for Orig. Artist */
+ GDK_TYPE_COLOR, /* Color Weight for Copyright */
+ GDK_TYPE_COLOR, /* Color Weight for URL */
+ GDK_TYPE_COLOR, /* Color Weight for Encoded by */
+
+ G_TYPE_POINTER);
+ SearchResultList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(SearchResultListModel));
+
+ renderer = gtk_cell_renderer_text_new(); /* Filename */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[0]), renderer,
+ "text", SEARCH_RESULT_FILENAME,
+ "weight", SEARCH_RESULT_FILENAME_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_FILENAME_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Title */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[1]), renderer,
+ "text", SEARCH_RESULT_TITLE,
+ "weight", SEARCH_RESULT_TITLE_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_TITLE_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Artist */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[2]), renderer,
+ "text", SEARCH_RESULT_ARTIST,
+ "weight", SEARCH_RESULT_ARTIST_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_ARTIST_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Album */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[3]), renderer,
+ "text", SEARCH_RESULT_ALBUM,
+ "weight", SEARCH_RESULT_ALBUM_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_ALBUM_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Disc Number */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[4]), renderer,
+ "text", SEARCH_RESULT_DISC_NUMBER,
+ "weight", SEARCH_RESULT_DISC_NUMBER_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_DISC_NUMBER_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Year */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[5]), renderer,
+ "text", SEARCH_RESULT_YEAR,
+ "weight", SEARCH_RESULT_YEAR_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_YEAR_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Track */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[6]), renderer,
+ "text", SEARCH_RESULT_TRACK,
+ "weight", SEARCH_RESULT_TRACK_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_TRACK_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Genre */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[7]), renderer,
+ "text", SEARCH_RESULT_GENRE,
+ "weight", SEARCH_RESULT_GENRE_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_GENRE_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Comment */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[8]), renderer,
+ "text", SEARCH_RESULT_COMMENT,
+ "weight", SEARCH_RESULT_COMMENT_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_COMMENT_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Composer */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[9]), renderer,
+ "text", SEARCH_RESULT_COMPOSER,
+ "weight", SEARCH_RESULT_COMPOSER_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_COMPOSER_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Orig. Artist */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[10]), renderer,
+ "text", SEARCH_RESULT_ORIG_ARTIST,
+ "weight", SEARCH_RESULT_ORIG_ARTIST_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_ORIG_ARTIST_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Copyright */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[11]), renderer,
+ "text", SEARCH_RESULT_COPYRIGHT,
+ "weight", SEARCH_RESULT_COPYRIGHT_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_COPYRIGHT_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* URL */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[12]), renderer,
+ "text", SEARCH_RESULT_URL,
+ "weight", SEARCH_RESULT_URL_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_URL_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ renderer = gtk_cell_renderer_text_new(); /* Encoded by */
+ column = gtk_tree_view_column_new_with_attributes(_(SearchResultList_Titles[13]), renderer,
+ "text", SEARCH_RESULT_ENCODED_BY,
+ "weight", SEARCH_RESULT_ENCODED_BY_WEIGHT,
+ "foreground-gdk", SEARCH_RESULT_ENCODED_BY_FOREGROUND,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(SearchResultList), column);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+ gtk_container_add(GTK_CONTAINER(ScrollWindow),SearchResultList);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(SearchResultList)),
+ GTK_SELECTION_MULTIPLE);
+ //gtk_tree_view_columns_autosize(GTK_TREE_VIEW(SearchResultList)); // Doesn't seem to work...
+ gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(SearchResultList), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(SearchResultList), FALSE);
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(SearchResultList))),
+ "changed", G_CALLBACK(Search_Result_List_Row_Selected), NULL);
+
+ // Button to run the search
+ Button = Create_Button_With_Pixmap(BUTTON_SEARCH);
+ gtk_table_attach(GTK_TABLE(Table),Button,5,6,0,1,GTK_FILL,GTK_FILL,0,0);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(Button);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Search_File),NULL);
+ g_signal_connect(G_OBJECT(GTK_BIN(SearchStringCombo)->child),"activate", G_CALLBACK(Search_File),NULL);
+
+ // Button to cancel
+ Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ gtk_table_attach(GTK_TABLE(Table),Button,5,6,1,2,GTK_FILL,GTK_FILL,0,0);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Search_File_Window),NULL);
+
+ // Status bar
+ SearchStatusBar = gtk_statusbar_new();
+ //gtk_table_attach(GTK_TABLE(Table),SearchStatusBar,0,6,3,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_box_pack_start(GTK_BOX(VBox),SearchStatusBar,FALSE,TRUE,0);
+ SearchStatusBarContext = gtk_statusbar_get_context_id(GTK_STATUSBAR(SearchStatusBar),"Messages");
+ gtk_statusbar_push(GTK_STATUSBAR(SearchStatusBar),SearchStatusBarContext,_("Ready to search..."));
+
+ gtk_widget_show_all(SearchFileWindow);
+
+ if (SET_SEARCH_WINDOW_POSITION)
+ gdk_window_move(SearchFileWindow->window, SEARCH_WINDOW_X, SEARCH_WINDOW_Y);
+ //else
+ // gtk_window_set_position(GTK_WINDOW(SearchFileWindow), GTK_WIN_POS_CENTER_ON_PARENT); // Must use gtk_window_set_transient_for to work
+}
+
+void Destroy_Search_File_Window (void)
+{
+ if (SearchFileWindow)
+ {
+ /* Save combobox history lists before exit */
+ Save_Search_File_List(SearchStringModel, MISC_COMBO_TEXT);
+
+ Search_File_Window_Apply_Changes();
+
+ gtk_widget_destroy(SearchFileWindow);
+ SearchFileWindow = (GtkWidget *)NULL;
+ }
+}
+
+/*
+ * For the configuration file...
+ */
+void Search_File_Window_Apply_Changes (void)
+{
+ if (SearchFileWindow)
+ {
+ gint x, y, width, height;
+
+ if ( SearchFileWindow->window!=NULL && gdk_window_is_visible(SearchFileWindow->window)
+ && gdk_window_get_state(SearchFileWindow->window)!=GDK_WINDOW_STATE_MAXIMIZED )
+ {
+ // Position and Origin of the scanner window
+ gdk_window_get_root_origin(SearchFileWindow->window,&x,&y);
+ SEARCH_WINDOW_X = x;
+ SEARCH_WINDOW_Y = y;
+ gdk_window_get_size(SearchFileWindow->window,&width,&height);
+ SEARCH_WINDOW_WIDTH = width;
+ SEARCH_WINDOW_HEIGHT = height;
+ }
+
+ SEARCH_IN_FILENAME = GTK_TOGGLE_BUTTON(SearchInFilename)->active;
+ SEARCH_IN_TAG = GTK_TOGGLE_BUTTON(SearchInTag)->active;
+ SEARCH_CASE_SENSITIVE = GTK_TOGGLE_BUTTON(SearchCaseSensitive)->active;
+ }
+}
+
+gboolean Search_File_Window_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ Destroy_Search_File_Window();
+ break;
+ }
+ }
+ return FALSE;
+}
+
+/*
+ * This function and the one below could do with improving
+ * as we are looking up tag data twice (once when searching, once when adding to list)
+ */
+void Search_File (GtkWidget *search_button)
+{
+ const gchar *string_to_search = NULL;
+ GList *etfilelist;
+ ET_File *ETFile;
+ gchar *msg;
+ gchar *temp = NULL;
+ gchar *title2, *artist2, *album2, *disc_number2, *year2, *track2,
+ *track_total2, *genre2, *comment2, *composer2, *orig_artist2,
+ *copyright2, *url2, *encoded_by2, *string_to_search2;
+ gint resultCount = 0;
+
+
+ if (!SearchStringCombo || !SearchInFilename || !SearchInTag || !SearchResultList)
+ return;
+
+ string_to_search = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(SearchStringCombo)->child));
+ if (!string_to_search)
+ return;
+
+ Add_String_To_Combo_List(SearchStringModel, (gchar*)string_to_search);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(search_button),FALSE);
+ gtk_list_store_clear(SearchResultListModel);
+ gtk_statusbar_push(GTK_STATUSBAR(SearchStatusBar),SearchStatusBarContext,"");
+
+ etfilelist = g_list_first(ETCore->ETFileList);
+ while (etfilelist)
+ {
+ ETFile = (ET_File *)etfilelist->data;
+
+ // Search in the filename
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(SearchInFilename)))
+ {
+ gchar *filename_utf8 = ((File_Name *)ETFile->FileNameNew->data)->value_utf8;
+ gchar *basename_utf8;
+
+ // To search without case sensivity
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(SearchCaseSensitive)))
+ {
+ temp = g_path_get_basename(filename_utf8);
+ basename_utf8 = g_utf8_casefold(temp, -1);
+ g_free(temp);
+ string_to_search2 = g_utf8_casefold(string_to_search, -1);
+ } else
+ {
+ basename_utf8 = g_path_get_basename(filename_utf8);
+ string_to_search2 = g_strdup(string_to_search);
+ }
+
+ if ( basename_utf8 && strstr(basename_utf8,string_to_search2) )
+ {
+ Add_Row_To_Search_Result_List(ETFile, string_to_search2);
+ etfilelist = etfilelist->next;
+ g_free(basename_utf8);
+ g_free(string_to_search2);
+ continue;
+ }
+ g_free(basename_utf8);
+ g_free(string_to_search2);
+ }
+
+ // Search in the tag
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(SearchInTag)))
+ {
+ File_Tag *FileTag = (File_Tag *)ETFile->FileTag->data;
+
+ // To search with or without case sensivity
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(SearchCaseSensitive)))
+ {
+ // To search without case sensivity...
+ // Duplicate and convert the strings into UTF-8 in loxer case
+ if (FileTag->title) title2 = g_utf8_casefold(FileTag->title, -1); else title2 = NULL;
+ if (FileTag->artist) artist2 = g_utf8_casefold(FileTag->artist, -1); else artist2 = NULL;
+ if (FileTag->album) album2 = g_utf8_casefold(FileTag->album, -1); else album2 = NULL;
+ if (FileTag->disc_number) disc_number2 = g_utf8_casefold(FileTag->disc_number, -1); else disc_number2 = NULL;
+ if (FileTag->year) year2 = g_utf8_casefold(FileTag->year, -1); else year2 = NULL;
+ if (FileTag->track) track2 = g_utf8_casefold(FileTag->track, -1); else track2 = NULL;
+ if (FileTag->track_total) track_total2 = g_utf8_casefold(FileTag->track_total, -1); else track_total2 = NULL;
+ if (FileTag->genre) genre2 = g_utf8_casefold(FileTag->genre, -1); else genre2 = NULL;
+ if (FileTag->comment) comment2 = g_utf8_casefold(FileTag->comment, -1); else comment2 = NULL;
+ if (FileTag->composer) composer2 = g_utf8_casefold(FileTag->composer, -1); else composer2 = NULL;
+ if (FileTag->orig_artist) orig_artist2 = g_utf8_casefold(FileTag->orig_artist, -1); else orig_artist2 = NULL;
+ if (FileTag->copyright) copyright2 = g_utf8_casefold(FileTag->copyright, -1); else copyright2 = NULL;
+ if (FileTag->url) url2 = g_utf8_casefold(FileTag->url, -1); else url2 = NULL;
+ if (FileTag->encoded_by) encoded_by2 = g_utf8_casefold(FileTag->encoded_by, -1); else encoded_by2 = NULL;
+ string_to_search2 = g_utf8_strdown(string_to_search, -1);
+ }else
+ {
+ // To search with case sensivity...
+ // Duplicate and convert the strings into UTF-8
+ title2 = g_strdup(FileTag->title);
+ artist2 = g_strdup(FileTag->artist);
+ album2 = g_strdup(FileTag->album);
+ disc_number2 = g_strdup(FileTag->disc_number);
+ year2 = g_strdup(FileTag->year);
+ track2 = g_strdup(FileTag->track);
+ track_total2 = g_strdup(FileTag->track_total);
+ genre2 = g_strdup(FileTag->genre);
+ comment2 = g_strdup(FileTag->comment);
+ composer2 = g_strdup(FileTag->composer);
+ orig_artist2 = g_strdup(FileTag->orig_artist);
+ copyright2 = g_strdup(FileTag->copyright);
+ url2 = g_strdup(FileTag->url);
+ encoded_by2 = g_strdup(FileTag->encoded_by);
+ string_to_search2 = g_strdup(string_to_search);
+ }
+
+ // FIX ME : should use UTF-8 functions?
+ if ( (title2 && strstr(title2, string_to_search2) )
+ || (artist2 && strstr(artist2, string_to_search2) )
+ || (album2 && strstr(album2, string_to_search2) )
+ || (disc_number2 && strstr(disc_number2, string_to_search2) )
+ || (year2 && strstr(year2, string_to_search2) )
+ || (track2 && strstr(track2, string_to_search2) )
+ || (track_total2 && strstr(track_total2, string_to_search2) )
+ || (genre2 && strstr(genre2, string_to_search2) )
+ || (comment2 && strstr(comment2, string_to_search2) )
+ || (composer2 && strstr(composer2, string_to_search2) )
+ || (orig_artist2 && strstr(orig_artist2, string_to_search2) )
+ || (copyright2 && strstr(copyright2, string_to_search2) )
+ || (url2 && strstr(url2, string_to_search2) )
+ || (encoded_by2 && strstr(encoded_by2, string_to_search2) ) )
+ {
+ Add_Row_To_Search_Result_List(ETFile, string_to_search);
+ }
+ g_free(title2);
+ g_free(artist2);
+ g_free(album2);
+ g_free(disc_number2);
+ g_free(year2);
+ g_free(track2);
+ g_free(track_total2);
+ g_free(genre2);
+ g_free(comment2);
+ g_free(composer2);
+ g_free(orig_artist2);
+ g_free(copyright2);
+ g_free(url2);
+ g_free(encoded_by2);
+ g_free(string_to_search2);
+ }
+ etfilelist = etfilelist->next;
+ }
+
+ gtk_widget_set_sensitive(GTK_WIDGET(search_button),TRUE);
+
+ // Display the number of files in the statusbar
+ resultCount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(SearchResultListModel), NULL);
+ msg = g_strdup_printf(_("Found : %d file(s)"), resultCount);
+ gtk_statusbar_push(GTK_STATUSBAR(SearchStatusBar),SearchStatusBarContext,msg);
+ g_free(msg);
+
+ // Disable result list if no row inserted
+ if (resultCount > 0 )
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(SearchResultList), TRUE);
+ } else
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(SearchResultList), FALSE);
+ }
+}
+
+void Add_Row_To_Search_Result_List(ET_File *ETFile,const gchar *string_to_search)
+{
+ gchar *SearchResultList_Text[14]; // Because : 14 columns to display
+ gint SearchResultList_Weight[14] = {PANGO_WEIGHT_NORMAL, PANGO_WEIGHT_NORMAL,
+ PANGO_WEIGHT_NORMAL, PANGO_WEIGHT_NORMAL,
+ PANGO_WEIGHT_NORMAL, PANGO_WEIGHT_NORMAL,
+ PANGO_WEIGHT_NORMAL, PANGO_WEIGHT_NORMAL,
+ PANGO_WEIGHT_NORMAL, PANGO_WEIGHT_NORMAL,
+ PANGO_WEIGHT_NORMAL, PANGO_WEIGHT_NORMAL,
+ PANGO_WEIGHT_NORMAL, PANGO_WEIGHT_NORMAL};
+ GdkColor *SearchResultList_Color[14] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL};
+ gchar *track, *track_total;
+ gboolean case_sensitive;
+ gint column;
+ GtkTreeIter iter;
+
+ if (!ETFile || !string_to_search)
+ return;
+
+ case_sensitive = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(SearchCaseSensitive));
+
+ // Filename
+ SearchResultList_Text[SEARCH_RESULT_FILENAME] = g_path_get_basename( ((File_Name *)ETFile->FileNameNew->data)->value_utf8 );
+ // Title
+ SearchResultList_Text[SEARCH_RESULT_TITLE] = g_strdup(((File_Tag *)ETFile->FileTag->data)->title);
+ // Artist
+ SearchResultList_Text[SEARCH_RESULT_ARTIST] = g_strdup(((File_Tag *)ETFile->FileTag->data)->artist);
+ // Album
+ SearchResultList_Text[SEARCH_RESULT_ALBUM] = g_strdup(((File_Tag *)ETFile->FileTag->data)->album);
+ // Disc Number
+ SearchResultList_Text[SEARCH_RESULT_DISC_NUMBER] = g_strdup(((File_Tag *)ETFile->FileTag->data)->disc_number);
+ // Year
+ SearchResultList_Text[SEARCH_RESULT_YEAR] = g_strdup(((File_Tag *)ETFile->FileTag->data)->year);
+ //Genre
+ SearchResultList_Text[SEARCH_RESULT_GENRE] = g_strdup(((File_Tag *)ETFile->FileTag->data)->genre);
+ // Comment
+ SearchResultList_Text[SEARCH_RESULT_COMMENT] = g_strdup(((File_Tag *)ETFile->FileTag->data)->comment);
+ // Composer
+ SearchResultList_Text[SEARCH_RESULT_COMPOSER] = g_strdup(((File_Tag *)ETFile->FileTag->data)->composer);
+ // Orig. Artist
+ SearchResultList_Text[SEARCH_RESULT_ORIG_ARTIST] = g_strdup(((File_Tag *)ETFile->FileTag->data)->orig_artist);
+ // Copyright
+ SearchResultList_Text[SEARCH_RESULT_COPYRIGHT] = g_strdup(((File_Tag *)ETFile->FileTag->data)->copyright);
+ // URL
+ SearchResultList_Text[SEARCH_RESULT_URL] = g_strdup(((File_Tag *)ETFile->FileTag->data)->url);
+ // Encoded by
+ SearchResultList_Text[SEARCH_RESULT_ENCODED_BY] = g_strdup(((File_Tag *)ETFile->FileTag->data)->encoded_by);
+
+ // Track
+ track = ((File_Tag *)ETFile->FileTag->data)->track;
+ track_total = ((File_Tag *)ETFile->FileTag->data)->track_total;
+ if (track)
+ {
+ if (track_total)
+ SearchResultList_Text[SEARCH_RESULT_TRACK] = g_strconcat(track,"/",track_total,NULL);
+ else
+ SearchResultList_Text[SEARCH_RESULT_TRACK] = g_strdup(track);
+ } else
+ {
+ SearchResultList_Text[SEARCH_RESULT_TRACK] = NULL;
+ }
+
+
+
+ // Highlight the keywords in the result list
+ // Don't display files to red if the searched string is '' (to display all files)
+ for (column=0;column<14;column++)
+ {
+ if (case_sensitive)
+ {
+ if ( SearchResultList_Text[column] && strlen(string_to_search) && strstr(SearchResultList_Text[column],string_to_search) )
+ {
+ if (CHANGED_FILES_DISPLAYED_TO_BOLD)
+ SearchResultList_Weight[column] = PANGO_WEIGHT_BOLD;
+ else
+ SearchResultList_Color[column] = &RED;
+ }
+
+ } else
+ {
+ // Search wasn't case sensitive
+ gchar *list_text = NULL;
+ gchar *string_to_search2 = g_utf8_casefold(string_to_search, -1);
+
+ if (!SearchResultList_Text[column])
+ {
+ g_free(string_to_search2);
+ continue;
+ }
+
+ list_text = g_utf8_casefold(SearchResultList_Text[column], -1);
+
+ if ( list_text && strlen(string_to_search2) && strstr(list_text,string_to_search2) )
+ {
+ if (CHANGED_FILES_DISPLAYED_TO_BOLD)
+ SearchResultList_Weight[column] = PANGO_WEIGHT_BOLD;
+ else
+ SearchResultList_Color[column] = &RED;
+ }
+
+ g_free(list_text);
+ g_free(string_to_search2);
+ }
+ }
+
+ // Load the row in the list
+ gtk_list_store_append(SearchResultListModel, &iter);
+ gtk_list_store_set(SearchResultListModel, &iter,
+ SEARCH_RESULT_FILENAME, SearchResultList_Text[SEARCH_RESULT_FILENAME],
+ SEARCH_RESULT_TITLE, SearchResultList_Text[SEARCH_RESULT_TITLE],
+ SEARCH_RESULT_ARTIST, SearchResultList_Text[SEARCH_RESULT_ARTIST],
+ SEARCH_RESULT_ALBUM, SearchResultList_Text[SEARCH_RESULT_ALBUM],
+ SEARCH_RESULT_DISC_NUMBER, SearchResultList_Text[SEARCH_RESULT_DISC_NUMBER],
+ SEARCH_RESULT_YEAR, SearchResultList_Text[SEARCH_RESULT_YEAR],
+ SEARCH_RESULT_TRACK, SearchResultList_Text[SEARCH_RESULT_TRACK],
+ SEARCH_RESULT_GENRE, SearchResultList_Text[SEARCH_RESULT_GENRE],
+ SEARCH_RESULT_COMMENT, SearchResultList_Text[SEARCH_RESULT_COMMENT],
+ SEARCH_RESULT_COMPOSER, SearchResultList_Text[SEARCH_RESULT_COMPOSER],
+ SEARCH_RESULT_ORIG_ARTIST, SearchResultList_Text[SEARCH_RESULT_ORIG_ARTIST],
+ SEARCH_RESULT_COPYRIGHT, SearchResultList_Text[SEARCH_RESULT_COPYRIGHT],
+ SEARCH_RESULT_URL, SearchResultList_Text[SEARCH_RESULT_URL],
+ SEARCH_RESULT_ENCODED_BY, SearchResultList_Text[SEARCH_RESULT_ENCODED_BY],
+
+ SEARCH_RESULT_FILENAME_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_FILENAME],
+ SEARCH_RESULT_TITLE_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_TITLE],
+ SEARCH_RESULT_ARTIST_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_ARTIST],
+ SEARCH_RESULT_ALBUM_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_ALBUM],
+ SEARCH_RESULT_DISC_NUMBER_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_DISC_NUMBER],
+ SEARCH_RESULT_YEAR_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_YEAR],
+ SEARCH_RESULT_TRACK_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_TRACK],
+ SEARCH_RESULT_GENRE_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_GENRE],
+ SEARCH_RESULT_COMMENT_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_COMMENT],
+ SEARCH_RESULT_COMPOSER_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_COMPOSER],
+ SEARCH_RESULT_ORIG_ARTIST_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_ORIG_ARTIST],
+ SEARCH_RESULT_COPYRIGHT_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_COPYRIGHT],
+ SEARCH_RESULT_URL_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_URL],
+ SEARCH_RESULT_ENCODED_BY_WEIGHT, SearchResultList_Weight[SEARCH_RESULT_ENCODED_BY],
+
+ SEARCH_RESULT_FILENAME_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_FILENAME],
+ SEARCH_RESULT_TITLE_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_TITLE],
+ SEARCH_RESULT_ARTIST_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_ARTIST],
+ SEARCH_RESULT_ALBUM_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_ALBUM],
+ SEARCH_RESULT_DISC_NUMBER_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_DISC_NUMBER],
+ SEARCH_RESULT_YEAR_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_YEAR],
+ SEARCH_RESULT_TRACK_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_TRACK],
+ SEARCH_RESULT_GENRE_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_GENRE],
+ SEARCH_RESULT_COMMENT_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_COMMENT],
+ SEARCH_RESULT_COMPOSER_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_COMPOSER],
+ SEARCH_RESULT_ORIG_ARTIST_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_ORIG_ARTIST],
+ SEARCH_RESULT_COPYRIGHT_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_COPYRIGHT],
+ SEARCH_RESULT_URL_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_URL],
+ SEARCH_RESULT_ENCODED_BY_FOREGROUND, SearchResultList_Color[SEARCH_RESULT_ENCODED_BY],
+
+ SEARCH_RESULT_POINTER, ETFile,
+ -1);
+
+ // Frees allocated data
+ g_free(SearchResultList_Text[SEARCH_RESULT_FILENAME]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_TITLE]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_ARTIST]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_ALBUM]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_DISC_NUMBER]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_YEAR]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_TRACK]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_GENRE]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_COMMENT]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_COMPOSER]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_ORIG_ARTIST]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_COPYRIGHT]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_URL]);
+ g_free(SearchResultList_Text[SEARCH_RESULT_ENCODED_BY]);
+}
+
+/*
+ * Callback to select-row event
+ * Select all results that are selected in the search result list also in the browser list
+ */
+void Search_Result_List_Row_Selected(GtkTreeSelection *selection, gpointer data)
+{
+ GList *selectedRows;
+ GList *selectedRowsCopy;
+ ET_File *ETFile;
+ GtkTreeIter currentFile;
+ gboolean found;
+
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+ selectedRowsCopy = selectedRows;
+
+ /* We might be called with no rows selected */
+ if (g_list_length(selectedRows) == 0)
+ {
+ g_list_foreach(selectedRowsCopy, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRowsCopy);
+ return;
+ }
+
+ Browser_List_Unselect_All_Files();
+
+ while (selectedRows)
+ {
+ found = gtk_tree_model_get_iter(GTK_TREE_MODEL(SearchResultListModel), &currentFile, (GtkTreePath*)selectedRows->data);
+ if (found)
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(SearchResultListModel), &currentFile, SEARCH_RESULT_POINTER, &ETFile, -1);
+ Browser_List_Select_File_By_Etfile(ETFile, TRUE);
+ Action_Select_Nth_File_By_Etfile(ETFile);
+ }
+ selectedRows = selectedRows->next;
+ }
+
+ g_list_foreach(selectedRowsCopy, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRowsCopy);
+}
+
+
+/********************************************
+ * Load Filenames from a TXT file functions *
+ ********************************************/
+/*
+ * The window to load the filenames from a txt.
+ */
+void Open_Load_Filename_Window (void)
+{
+ GtkWidget *VBox, *hbox;
+ GtkWidget *Frame;
+ GtkWidget *Label;
+ GtkWidget *ButtonBox;
+ GtkWidget *Button;
+ GtkWidget *Entry;
+ GtkWidget *ButtonLoad;
+ GtkWidget *Separator;
+ GtkWidget *ScrollWindow;
+ GtkWidget *loadedvbox;
+ GtkWidget *filelistvbox;
+ GtkWidget *vboxpaned;
+ GtkTooltips *Tips;
+ gchar *path;
+ GtkCellRenderer* renderer;
+ GtkTreeViewColumn* column;
+
+ if (LoadFilenameWindow != NULL)
+ {
+ gdk_window_raise(LoadFilenameWindow->window);
+ return;
+ }
+
+ LoadFilenameWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(LoadFilenameWindow),_("Load the filenames from a TXT file"));
+ gtk_window_set_transient_for(GTK_WINDOW(LoadFilenameWindow),GTK_WINDOW(MainWindow));
+ g_signal_connect(G_OBJECT(LoadFilenameWindow),"destroy",G_CALLBACK(Destroy_Load_Filename_Window),NULL);
+ g_signal_connect(G_OBJECT(LoadFilenameWindow),"delete_event", G_CALLBACK(Destroy_Load_Filename_Window),NULL);
+ g_signal_connect(G_OBJECT(LoadFilenameWindow),"key_press_event", G_CALLBACK(Load_Filename_Window_Key_Press),NULL);
+
+ // Just center on mainwindow
+ gtk_window_set_position(GTK_WINDOW(LoadFilenameWindow), GTK_WIN_POS_CENTER_ON_PARENT);
+ gtk_window_set_default_size(GTK_WINDOW(LoadFilenameWindow),LOAD_FILE_WINDOW_WIDTH,LOAD_FILE_WINDOW_HEIGHT);
+
+ Tips = gtk_tooltips_new();
+
+ Frame = gtk_frame_new(NULL);
+ gtk_container_add(GTK_CONTAINER(LoadFilenameWindow),Frame);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),2);
+
+ VBox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 2);
+
+ // Hbox for file entry and browser/load buttons
+ hbox = gtk_hbox_new(FALSE,4);
+ gtk_box_pack_start(GTK_BOX(VBox),hbox,FALSE,TRUE,0);
+
+ // File to load
+ if (!FileToLoadModel)
+ FileToLoadModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(FileToLoadModel);
+
+ Label = gtk_label_new(_("File :"));
+ gtk_misc_set_alignment(GTK_MISC(Label),1.0,0.5);
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+ FileToLoadCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(FileToLoadModel), MISC_COMBO_TEXT);
+ gtk_widget_set_size_request(GTK_WIDGET(FileToLoadCombo), 200, -1);
+ gtk_box_pack_start(GTK_BOX(hbox),FileToLoadCombo,TRUE,TRUE,0);
+ // History List
+ Load_File_To_Load_List(FileToLoadModel, MISC_COMBO_TEXT);
+ // Initial value
+ if ((path=Browser_Get_Current_Path())!=NULL)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(FileToLoadCombo)->child),path);
+ // the 'changed' signal is attached below to enable/disable the button to load
+ // Button 'browse'
+ Button = Create_Button_With_Pixmap(BUTTON_BROWSE);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked", G_CALLBACK(File_Selection_Window_For_File), G_OBJECT(GTK_BIN(FileToLoadCombo)->child));
+ // Button 'load'
+ // the signal attached to this button, to load the file, is placed after the LoadFileContentList definition
+ ButtonLoad = Create_Button_With_Icon_And_Label("easytag-add",_(" Load "));
+ //ButtonLoad = gtk_button_new_with_label(_(" Load "));
+ gtk_box_pack_start(GTK_BOX(hbox),ButtonLoad,FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(GTK_BIN(FileToLoadCombo)->child),"changed", G_CALLBACK(Button_Load_Set_Sensivity), G_OBJECT(ButtonLoad));
+
+ // Separator line
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ loadedvbox = gtk_vbox_new(FALSE, 4);
+
+ // Label of file content
+ Label = gtk_label_new(_("Loaded File Content :"));
+ gtk_box_pack_start(GTK_BOX(loadedvbox), Label, FALSE, FALSE, 0);
+
+ // Content of the loaded file
+ ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_widget_set_size_request(GTK_WIDGET(ScrollWindow), 250, 200);
+ LoadFileContentListModel = gtk_list_store_new(LOAD_FILE_CONTENT_COUNT, G_TYPE_STRING);
+ LoadFileContentList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(LoadFileContentListModel));
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("",
+ renderer, "text", LOAD_FILE_CONTENT_TEXT, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(LoadFileContentList), column);
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(LoadFileContentList), FALSE);
+ gtk_container_add(GTK_CONTAINER(ScrollWindow),LoadFileContentList);
+ gtk_box_pack_start(GTK_BOX(loadedvbox), ScrollWindow, TRUE, TRUE, 0);
+
+ // Signal to automatically load the file
+ g_signal_connect_swapped(G_OBJECT(ButtonLoad),"clicked", G_CALLBACK(Load_File_Content), G_OBJECT(GTK_BIN(FileToLoadCombo)->child));
+ g_signal_connect(G_OBJECT(LoadFileContentList),"key-press-event", G_CALLBACK(Load_Filename_List_Key_Press),NULL);
+
+ gtk_widget_show_all(loadedvbox);
+
+ filelistvbox = gtk_vbox_new(FALSE, 4);
+
+ // Label of current list
+ Label = gtk_label_new(_("Files Name List :"));
+ gtk_box_pack_start(GTK_BOX(filelistvbox), Label, FALSE, FALSE, 0);
+
+ // List of current filenames
+ ScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindow),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_widget_set_size_request(GTK_WIDGET(ScrollWindow), 250, 200);
+ gtk_box_pack_start(GTK_BOX(filelistvbox), ScrollWindow, TRUE, TRUE, 0);
+ LoadFileNameListModel = gtk_list_store_new(LOAD_FILE_NAME_COUNT, G_TYPE_STRING,G_TYPE_POINTER);
+ LoadFileNameList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(LoadFileNameListModel));
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes("", renderer, "text", LOAD_FILE_NAME_TEXT, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(LoadFileNameList), column);
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(LoadFileNameList), FALSE);
+ g_signal_connect(G_OBJECT(LoadFileNameList),"key-press-event", G_CALLBACK(Load_Filename_List_Key_Press),NULL);
+ gtk_container_add(GTK_CONTAINER(ScrollWindow),LoadFileNameList);
+
+ // Signals to 'select' the same row into the other list (to show the corresponding filenames)
+ g_signal_connect_swapped(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(LoadFileContentList))),"changed", G_CALLBACK(Load_Filename_Select_Row_In_Other_List), G_OBJECT(LoadFileNameList));
+ g_signal_connect_swapped(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(LoadFileNameList))),"changed", G_CALLBACK(Load_Filename_Select_Row_In_Other_List), G_OBJECT(LoadFileContentList));
+
+ gtk_widget_show_all(filelistvbox);
+
+ // Load the list of files in the list widget
+ Load_File_List();
+
+ vboxpaned = gtk_hpaned_new();
+ gtk_paned_pack1(GTK_PANED(vboxpaned),loadedvbox, TRUE,FALSE);
+ gtk_paned_pack2(GTK_PANED(vboxpaned),filelistvbox,TRUE,FALSE);
+ gtk_box_pack_start(GTK_BOX(VBox),vboxpaned,TRUE,TRUE,0);
+
+ // Create popup menus
+ Create_Load_Filename_Popup_Menu(LoadFileContentList);
+ Create_Load_Filename_Popup_Menu(LoadFileNameList);
+
+ // Entry to edit a line into the list
+ Entry = gtk_entry_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Entry,FALSE,TRUE,0);
+ g_signal_connect(G_OBJECT(Entry),"changed",G_CALLBACK(Load_Filename_Update_Text_Line),G_OBJECT(LoadFileContentList));
+
+ // Signal to load the line text in the editing entry
+ g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(LoadFileContentList))),"changed", G_CALLBACK(Load_Filename_Edit_Text_Line), G_OBJECT(Entry));
+
+ // Separator line
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ LoadFileRunScanner = gtk_check_button_new_with_label(_("Run the current scanner for each file"));
+ gtk_box_pack_start(GTK_BOX(VBox),LoadFileRunScanner,FALSE,TRUE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LoadFileRunScanner),LOAD_FILE_RUN_SCANNER);
+ gtk_tooltips_set_tip(Tips,LoadFileRunScanner,_("When activating this option, after loading the "
+ "filenames, the current selected scanner will be ran (the scanner window must be opened)."),NULL);
+
+ // Separator line
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ ButtonBox = gtk_hbutton_box_new ();
+ gtk_box_pack_start(GTK_BOX(VBox),ButtonBox,FALSE,FALSE,0);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(ButtonBox),GTK_BUTTONBOX_END);
+ gtk_box_set_spacing(GTK_BOX(ButtonBox), 10);
+
+ // Button to cancel
+ Button = Create_Button_With_Pixmap(BUTTON_CLOSE);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(Button);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Destroy_Load_Filename_Window),NULL);
+
+ // Button to load filenames
+ Button = Create_Button_With_Pixmap(BUTTON_APPLY);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(Load_Filename_Set_Filenames),NULL);
+
+
+ // To initialize 'ButtonLoad' sensivity
+ g_signal_emit_by_name(G_OBJECT(GTK_BIN(FileToLoadCombo)->child),"changed");
+
+ gtk_widget_show_all(LoadFilenameWindow);
+ if (LOAD_FILE_WINDOW_X > 0 && LOAD_FILE_WINDOW_Y > 0)
+ gdk_window_move(LoadFilenameWindow->window,LOAD_FILE_WINDOW_X,LOAD_FILE_WINDOW_Y);
+}
+
+void Destroy_Load_Filename_Window (void)
+{
+ if (LoadFilenameWindow)
+ {
+ /* Save combobox history lists before exit */
+ Save_File_To_Load_List(FileToLoadModel, MISC_COMBO_TEXT);
+
+ Load_Filename_Window_Apply_Changes();
+
+ gtk_widget_destroy(LoadFilenameWindow);
+ LoadFilenameWindow = (GtkWidget *)NULL;
+ }
+}
+
+/*
+ * For the configuration file...
+ */
+void Load_Filename_Window_Apply_Changes (void)
+{
+ if (LoadFilenameWindow)
+ {
+ gint x, y, width, height;
+
+ if ( LoadFilenameWindow->window && gdk_window_is_visible(LoadFilenameWindow->window)
+ && gdk_window_get_state(LoadFilenameWindow->window)!=GDK_WINDOW_STATE_MAXIMIZED )
+ {
+ // Position and Origin of the window
+ gdk_window_get_root_origin(LoadFilenameWindow->window,&x,&y);
+ LOAD_FILE_WINDOW_X = x;
+ LOAD_FILE_WINDOW_Y = y;
+ gdk_window_get_size(LoadFilenameWindow->window,&width,&height);
+ LOAD_FILE_WINDOW_WIDTH = width;
+ LOAD_FILE_WINDOW_HEIGHT = height;
+ }
+
+ LOAD_FILE_RUN_SCANNER = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(LoadFileRunScanner));
+ }
+}
+
+gboolean Load_Filename_Window_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ Destroy_Load_Filename_Window();
+ break;
+ }
+ }
+ return FALSE;
+}
+
+/*
+ * To enable/disable sensivity of the button 'Load'
+ */
+void Button_Load_Set_Sensivity (GtkWidget *button, GtkWidget *entry)
+{
+ struct stat statbuf;
+ gchar *path;
+
+ if (!entry || !button)
+ return;
+
+ path = filename_from_display(gtk_entry_get_text(GTK_ENTRY(entry)));
+ if ( path && stat(path,&statbuf)==0 && S_ISREG(statbuf.st_mode))
+ gtk_widget_set_sensitive(GTK_WIDGET(button),TRUE);
+ else
+ gtk_widget_set_sensitive(GTK_WIDGET(button),FALSE);
+
+ g_free(path);
+}
+
+void Load_Filename_List_Key_Press (GtkWidget *treeview, GdkEvent *event)
+{
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ GdkEventKey *kevent = (GdkEventKey *)event;
+
+ switch(kevent->keyval)
+ {
+ case GDK_Delete:
+ Load_Filename_List_Delete_Line(treeview);
+ break;
+ case GDK_I:
+ case GDK_i:
+ Load_Filename_List_Insert_Blank_Line(treeview);
+ break;
+ }
+ }
+}
+
+/*
+ * Load content of the file into the LoadFileContentList list
+ */
+void Load_File_Content (GtkWidget *entry)
+{
+ FILE *file;
+ gchar *filename;
+ const gchar *filename_utf8;
+ gchar buffer[MAX_STRING_LEN];
+ gchar *text;
+ gchar *valid;
+ GtkTreeIter iter;
+
+ if (!entry)
+ return;
+
+ // The file to read
+ filename_utf8 = gtk_entry_get_text(GTK_ENTRY(entry)); // Don't free me!
+ Add_String_To_Combo_List(FileToLoadModel, (gchar*)filename_utf8);
+ filename = filename_from_display(filename_utf8);
+
+ if ( (file=fopen(filename,"r"))==0 )
+ {
+ Log_Print(_("Can't open file '%s' (%s)"),filename_utf8,g_strerror(errno));
+ g_free(filename);
+ return;
+ }
+
+ gtk_list_store_clear(LoadFileContentListModel);
+ while (fgets(buffer, sizeof(buffer), file))
+ {
+ if (buffer[strlen(buffer)-1]=='\n')
+ buffer[strlen(buffer)-1]='\0';
+ if (buffer[strlen(buffer)-1]=='\r')
+ buffer[strlen(buffer)-1]='\0';
+ text = &buffer[0];
+
+ if (g_utf8_validate(text, -1, NULL))
+ {
+ valid = g_strdup(buffer);
+ } else
+ {
+ valid = convert_to_utf8(text);
+ }
+
+ gtk_list_store_append(LoadFileContentListModel, &iter);
+ gtk_list_store_set(LoadFileContentListModel, &iter,
+ LOAD_FILE_CONTENT_TEXT, valid,
+ -1);
+ g_free(valid);
+ }
+
+ fclose(file);
+ g_free(filename);
+}
+
+/*
+ * Load the names of the current list of files
+ */
+void Load_File_List (void)
+{
+ GList *etfilelist;
+ ET_File *etfile;
+ gchar *filename_utf8;
+ gchar *pos;
+ GtkTreeIter iter;
+
+ gtk_list_store_clear(LoadFileNameListModel);
+ etfilelist = g_list_first(ETCore->ETFileList);
+ while (etfilelist)
+ {
+ etfile = (ET_File *)etfilelist->data;
+ filename_utf8 = g_path_get_basename(((File_Name *)etfile->FileNameNew->data)->value_utf8);
+ // Remove the extension ('filename' must be allocated to don't affect the initial value)
+ if ((pos=strrchr(filename_utf8,'.'))!=NULL)
+ *pos = 0;
+ gtk_list_store_append(LoadFileNameListModel, &iter);
+ gtk_list_store_set(LoadFileNameListModel, &iter,
+ LOAD_FILE_NAME_TEXT, filename_utf8,
+ LOAD_FILE_NAME_POINTER, etfilelist->data,
+ -1);
+ g_free(filename_utf8);
+ etfilelist = etfilelist->next;
+ }
+}
+/*
+ * To select the corresponding row in the other list
+ */
+void Load_Filename_Select_Row_In_Other_List(GtkWidget* treeview_target, gpointer origselection)
+{
+ GtkAdjustment *ct_adj, *ce_adj;
+ GtkTreeSelection *selection_orig;
+ GtkTreeSelection *selection_target;
+ GtkTreeView *treeview_orig;
+ GtkTreeModel *treemodel_orig;
+ GtkTreeModel *treemodel_target;
+ GtkTreeIter iter_orig;
+ GtkTreeIter iter_target;
+ GtkTreePath *path_orig;
+ gint *indices_orig;
+ gchar *stringiter;
+
+ if (!treeview_target || !origselection)
+ return;
+
+ selection_orig = (GtkTreeSelection*) origselection;
+ selection_target = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview_target));
+ treemodel_target = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview_target));
+
+ if (!gtk_tree_selection_get_selected(selection_orig, &treemodel_orig, &iter_orig))
+ return; /* Might be called with no selection */
+
+ treeview_orig = gtk_tree_selection_get_tree_view(selection_orig);
+ path_orig = gtk_tree_model_get_path(treemodel_orig, &iter_orig);
+ gtk_tree_selection_unselect_all(selection_target);
+
+ // Synchronize the two lists
+ ce_adj = gtk_tree_view_get_vadjustment(treeview_orig);
+ ct_adj = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(treeview_target));
+
+ if (GTK_ADJUSTMENT(ct_adj)->upper >= GTK_ADJUSTMENT(ct_adj)->page_size
+ && GTK_ADJUSTMENT(ce_adj)->upper >= GTK_ADJUSTMENT(ce_adj)->page_size)
+ {
+ // Rules are displayed in the both clist
+ if (GTK_ADJUSTMENT(ce_adj)->value <= GTK_ADJUSTMENT(ct_adj)->upper - GTK_ADJUSTMENT(ct_adj)->page_size)
+ {
+ gtk_adjustment_set_value(GTK_ADJUSTMENT(ct_adj),GTK_ADJUSTMENT(ce_adj)->value);
+ } else
+ {
+ gtk_adjustment_set_value(GTK_ADJUSTMENT(ct_adj),GTK_ADJUSTMENT(ct_adj)->upper - GTK_ADJUSTMENT(ct_adj)->page_size);
+ indices_orig = gtk_tree_path_get_indices(path_orig);
+
+ if (indices_orig[0] <= (gtk_tree_model_iter_n_children(treemodel_target, NULL) - 1))
+ gtk_adjustment_set_value(GTK_ADJUSTMENT(ce_adj),GTK_ADJUSTMENT(ct_adj)->value);
+
+ }
+ }else if (GTK_ADJUSTMENT(ct_adj)->upper < GTK_ADJUSTMENT(ct_adj)->page_size) // Target Clist rule not visible
+ {
+ indices_orig = gtk_tree_path_get_indices(path_orig);
+
+ if (indices_orig[0] <= (gtk_tree_model_iter_n_children(treemodel_target, NULL) - 1))
+ gtk_adjustment_set_value(GTK_ADJUSTMENT(ce_adj),GTK_ADJUSTMENT(ct_adj)->value);
+ }
+
+ // Must block the select signal of the target to avoid looping
+ g_signal_handlers_block_by_func(G_OBJECT(selection_target), G_CALLBACK(Load_Filename_Select_Row_In_Other_List), G_OBJECT(treeview_orig));
+
+ stringiter = gtk_tree_model_get_string_from_iter(treemodel_orig, &iter_orig);
+ if (gtk_tree_model_get_iter_from_string(treemodel_target, &iter_target, stringiter))
+ {
+ gtk_tree_selection_select_iter(selection_target, &iter_target);
+ }
+
+ g_free(stringiter);
+ g_signal_handlers_unblock_by_func(G_OBJECT(selection_target), G_CALLBACK(Load_Filename_Select_Row_In_Other_List), G_OBJECT(treeview_orig));
+}
+
+/*
+ * Set the new file name of each file.
+ * Associate lines from LoadFileContentList with LoadFileNameList
+ */
+void Load_Filename_Set_Filenames (void)
+{
+ gint row;
+ ET_File *ETFile;
+ File_Name *FileName;
+ gchar *list_text;
+ gint rowcount;
+ gboolean found;
+
+ GtkTreePath *currentPath = NULL;
+ GtkTreeIter iter_name;
+ GtkTreeIter iter_content;
+
+ if ( !ETCore->ETFileList || !LoadFileContentList || !LoadFileNameList)
+ return;
+
+ /* Save current file */
+ ET_Save_File_Data_From_UI(ETCore->ETFileDisplayed);
+
+ rowcount = MIN(gtk_tree_model_iter_n_children(GTK_TREE_MODEL(LoadFileNameListModel), NULL),
+ gtk_tree_model_iter_n_children(GTK_TREE_MODEL(LoadFileContentListModel), NULL));
+
+ for (row=0; row < rowcount; row++)
+ {
+ if (row == 0)
+ currentPath = gtk_tree_path_new_first();
+ else
+ gtk_tree_path_next(currentPath);
+
+ found = gtk_tree_model_get_iter(GTK_TREE_MODEL(LoadFileNameListModel), &iter_name, currentPath);
+ if (found)
+ gtk_tree_model_get(GTK_TREE_MODEL(LoadFileNameListModel), &iter_name, LOAD_FILE_NAME_POINTER, &ETFile, -1);
+
+ found = gtk_tree_model_get_iter(GTK_TREE_MODEL(LoadFileContentListModel), &iter_content, currentPath);
+ if (found)
+ gtk_tree_model_get(GTK_TREE_MODEL(LoadFileContentListModel), &iter_content, LOAD_FILE_CONTENT_TEXT, &list_text, -1);
+
+ if (ETFile && list_text && g_utf8_strlen(list_text, -1)>0)
+ {
+ gchar *list_text_tmp;
+ gchar *filename_new_utf8;
+
+ list_text_tmp = g_strdup(list_text);
+ ET_File_Name_Convert_Character(list_text_tmp); // Replace invalid characters
+
+ /* Build the filename with the path */
+ filename_new_utf8 = ET_File_Name_Generate(ETFile,list_text_tmp);
+ g_free(list_text_tmp);
+
+ /* Set the new filename */
+ // Create a new 'File_Name' item
+ FileName = ET_File_Name_Item_New();
+ // Save changes of the 'File_Name' item
+ ET_Set_Filename_File_Name_Item(FileName,filename_new_utf8,NULL);
+ ET_Manage_Changes_Of_File_Data(ETFile,FileName,NULL);
+
+ g_free(filename_new_utf8);
+
+ // Then run current scanner if asked...
+ if (ScannerWindow && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(LoadFileRunScanner)) )
+ Scan_Select_Mode_And_Run_Scanner(ETFile);
+ }
+ g_free(list_text);
+ }
+
+ g_free(currentPath);
+
+ Browser_List_Refresh_Whole_List();
+ ET_Display_File_Data_To_UI(ETCore->ETFileDisplayed);
+}
+
+/*
+ * Create and attach a popup menu on the two clist of the LoadFileWindow
+ */
+gboolean Load_Filename_Popup_Menu_Handler (GtkMenu *menu, GdkEventButton *event)
+{
+ if (event && (event->type==GDK_BUTTON_PRESS) && (event->button==3))
+ {
+ gtk_menu_popup(menu,NULL,NULL,NULL,NULL,event->button,event->time);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+GtkWidget *Create_Load_Filename_Popup_Menu(GtkWidget *list)
+{
+ GtkWidget *BrowserPopupMenu;
+ GtkWidget *Image;
+ GtkWidget *MenuItem;
+
+
+ BrowserPopupMenu = gtk_menu_new();
+ g_signal_connect_swapped(G_OBJECT(list),"button_press_event", G_CALLBACK(Load_Filename_Popup_Menu_Handler), G_OBJECT(BrowserPopupMenu));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Insert a blank line"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_ADD,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu), MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate", G_CALLBACK(Load_Filename_List_Insert_Blank_Line), G_OBJECT(list));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Delete this line"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate", G_CALLBACK(Load_Filename_List_Delete_Line), G_OBJECT(list));
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Delete all blank lines"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_REMOVE,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate", G_CALLBACK(Load_Filename_List_Delete_All_Blank_Lines),G_OBJECT(list));
+
+ MenuItem = gtk_menu_item_new();
+ gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu),MenuItem);
+
+ MenuItem = gtk_image_menu_item_new_with_label(_("Reload"));
+ Image = gtk_image_new_from_stock(GTK_STOCK_REFRESH,GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(MenuItem),Image);
+ gtk_menu_shell_append(GTK_MENU_SHELL(BrowserPopupMenu),MenuItem);
+ g_signal_connect_swapped(G_OBJECT(MenuItem),"activate", G_CALLBACK(Load_Filename_List_Reload), G_OBJECT(list));
+
+ gtk_widget_show_all(BrowserPopupMenu);
+ return BrowserPopupMenu;
+}
+
+/*
+ * Insert a blank line before the selected line in the treeview passed as parameter
+ */
+void Load_Filename_List_Insert_Blank_Line(GtkWidget *treeview)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter selectedIter;
+ GtkTreeIter *temp;
+ GtkTreeModel *model;
+
+ if (!treeview) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+
+ if (gtk_tree_selection_get_selected(selection, &model, &selectedIter) != TRUE)
+ return;
+
+ temp = &selectedIter; /* Not used here, but it must be non-NULL to keep GTK+ happy! */
+ gtk_list_store_insert_before(GTK_LIST_STORE(model), temp, &selectedIter);
+}
+
+/*
+ * Delete all blank lines in the treeview passed in as parameter
+ */
+void Load_Filename_List_Delete_All_Blank_Lines (GtkWidget *treeview)
+{
+ gchar *text = NULL;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
+
+ if (!gtk_tree_model_get_iter_first(model, &iter))
+ return;
+
+ while (TRUE)
+ {
+ gtk_tree_model_get(model, &iter, LOAD_FILE_NAME_TEXT, &text, -1);
+
+ /* Check for blank entry */
+ if (!text || g_utf8_strlen(text, -1) == 0)
+ {
+ g_free(text);
+
+ if (!gtk_list_store_remove(GTK_LIST_STORE(model), &iter))
+ break;
+ else
+ continue;
+ }
+ g_free(text);
+
+ if (!gtk_tree_model_iter_next(model, &iter))
+ break;
+ }
+}
+
+/*
+ * Delete the selected line in the treeview passed in as parameter
+ */
+void Load_Filename_List_Delete_Line(GtkWidget *treeview)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter selectedIter, itercopy;
+ GtkTreeModel *model;
+ gboolean rowafter;
+
+ if (!treeview) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+
+ if (gtk_tree_selection_get_selected(selection, &model, &selectedIter) != TRUE)
+ {
+ return;
+ }
+
+ // If there is a line following the one about to be removed, select it for convenience
+ itercopy = selectedIter;
+ rowafter = gtk_tree_model_iter_next(model, &itercopy);
+
+ // Remove the line to be deleted
+ gtk_list_store_remove(GTK_LIST_STORE(model), &selectedIter);
+
+ if (rowafter)
+ gtk_tree_selection_select_iter(selection, &itercopy);
+}
+
+/*
+ * Reload a list of choice
+ * The list parameter refers to a GtkTreeView (LoadFileNameList or LoadFileContentList)
+ */
+void Load_Filename_List_Reload (GtkWidget *treeview)
+{
+ if (!treeview) return;
+
+ if (GTK_TREE_VIEW(treeview) == (GtkTreeView *)LoadFileContentList)
+ {
+ Load_File_Content(GTK_BIN(FileToLoadCombo)->child);
+ } else if (GTK_TREE_VIEW(treeview) == (GtkTreeView *)LoadFileNameList)
+ {
+ Load_File_List();
+ }
+}
+
+/*
+ * Update the text of the selected line into the list, with the text entered into the entry
+ */
+void Load_Filename_Update_Text_Line(GtkWidget *entry, GtkWidget *list)
+{
+ GtkTreeIter SelectedRow;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ gboolean hasSelectedRows = FALSE;
+
+ if (!list || !entry) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list));
+ hasSelectedRows = gtk_tree_selection_get_selected(selection, &model, &SelectedRow);
+ if (hasSelectedRows)
+ {
+ const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry));
+ gtk_list_store_set(GTK_LIST_STORE(model), &SelectedRow, LOAD_FILE_CONTENT_TEXT, text, -1);
+ }
+}
+
+/*
+ * Set the text of the selected line of the list into the entry
+ */
+void Load_Filename_Edit_Text_Line(GtkTreeSelection *selection, gpointer data)
+{
+ gchar *text;
+ GtkTreeIter selectedIter;
+ GtkEntry *entry = (GtkEntry*)data;
+ gulong handler;
+
+ if (gtk_tree_selection_get_selected(selection, NULL, &selectedIter) != TRUE)
+ return;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(LoadFileContentListModel), &selectedIter, LOAD_FILE_NAME_TEXT, &text, -1);
+
+ handler = g_signal_handler_find(entry, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, Load_Filename_Update_Text_Line, NULL);
+ g_signal_handler_block(entry, handler);
+ if (text)
+ {
+ gtk_entry_set_text(entry, text);
+ g_free(text);
+ } else
+ gtk_entry_set_text(entry, "");
+
+ g_signal_handler_unblock(entry, handler);
+}
diff --git a/src/misc.h b/src/misc.h
new file mode 100755
index 0000000..2fbadde
--- /dev/null
+++ b/src/misc.h
@@ -0,0 +1,122 @@
+/* misc.h - 2000/06/28 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __MISC_H__
+#define __MISC_H__
+
+
+#include <gtk/gtk.h>
+
+/***************
+ * Declaration *
+ ***************/
+
+GtkWidget *WritePlaylistWindow;
+GtkWidget *playlist_use_mask_name;
+GtkWidget *PlayListNameMaskCombo;
+GtkWidget *playlist_use_dir_name;
+GtkWidget *playlist_only_selected_files;
+GtkWidget *playlist_full_path;
+GtkWidget *playlist_relative_path;
+GtkWidget *playlist_create_in_parent_dir;
+GtkWidget *playlist_use_dos_separator;
+GtkWidget *playlist_content_none;
+GtkWidget *playlist_content_filename;
+GtkWidget *playlist_content_mask;
+GtkWidget *PlayListContentMaskCombo;
+GtkListStore *PlayListNameMaskModel;
+GtkListStore *PlayListContentMaskModel;
+
+GtkWidget *LoadFilenameWindow;
+GtkWidget *LoadFileRunScanner;
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+/*
+ * Create Pixmaps, buttons...
+ */
+GtkWidget *Create_Button_With_Pixmap (guint button_type);
+GtkWidget *Create_Pixmap_Icon_With_Event_Box (const gchar *pixmap_name);
+GtkWidget *Create_Button_With_Icon_And_Label (const gchar *pixmap_name, gchar *label);
+GtkWidget *Create_Xpm_Image (const char **xpm_name);
+
+
+/*
+ * Combobox misc functions
+ */
+gboolean Add_String_To_Combo_List(GtkListStore *liststore, gchar *string);
+gchar *Get_Active_Combo_Box_Item(GtkComboBox *combo);
+
+
+/*
+ * Other
+ */
+void Entry_Changed_Disable_Object (GtkObject *widget_to_disable, GtkEditable *source_widget);
+void Insert_Only_Digit (GtkEditable *editable,const gchar *text,gint length,gint *position,gpointer data);
+gboolean Parse_Date (void);
+void Load_Genres_List_To_UI (void);
+void Load_Track_List_To_UI (void);
+void Init_Character_Translation_Table (void);
+void Init_Custom_Icons (void);
+gchar *Check_If_Executable_Exists (const gchar *program);
+
+// Mouse cursor
+void Init_Mouse_Cursor (void);
+void Destroy_Mouse_Cursor (void);
+void Set_Busy_Cursor (void);
+void Set_Unbusy_Cursor (void);
+
+// Run Audio Player
+void Run_Audio_Player_Using_File_List (GList *etfilelist);
+void Run_Audio_Player_Using_Directory (void);
+void Run_Audio_Player_Using_Selection (void);
+void Run_Audio_Player_Using_Browser_Artist_List (void);
+void Run_Audio_Player_Using_Browser_Album_List (void);
+
+gchar *Convert_Size (gfloat size);
+gchar *Convert_Size_1 (gfloat size);
+gchar *Convert_Duration (gulong duration);
+
+gulong Get_File_Size (gchar *filename);
+
+void Strip_String (gchar *string);
+gint Combo_Alphabetic_Sort (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data);
+
+void File_Selection_Window_For_File (GtkWidget *entry);
+void File_Selection_Window_For_Directory (GtkWidget *entry);
+
+// Playlist window
+void Open_Write_Playlist_Window (void);
+void Write_Playlist_Window_Apply_Changes (void);
+
+// Search file window
+void Open_Search_File_Window (void);
+void Search_File_Window_Apply_Changes (void);
+
+// Load filenames window
+void Open_Load_Filename_Window (void);
+void Load_Filename_Window_Apply_Changes (void);
+
+
+#endif /* __MISC_H__ */
diff --git a/src/monkeyaudio_header.c b/src/monkeyaudio_header.c
new file mode 100755
index 0000000..e6cf0ab
--- /dev/null
+++ b/src/monkeyaudio_header.c
@@ -0,0 +1,122 @@
+/* monkeyaudio_header.c */
+/*
+ * EasyTAG - Tag editor for MP3, Ogg Vorbis and MPC files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2002-2003 Artur Polaczyñski <artii@o2.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "easytag.h"
+#include "et_core.h"
+#include "misc.h"
+#include "setting.h"
+#include "charset.h"
+#include "monkeyaudio_header.h"
+#include "libapetag/info_mac.h"
+
+
+/***************
+ * Header info *
+ ***************/
+
+gboolean Mac_Header_Read_File_Info(gchar *filename, ET_File_Info *ETFileInfo)
+{
+ StreamInfoMac Info;
+
+ if (info_mac_read(filename, &Info))
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ fprintf(stderr,"MAC header not found for file '%s'\n", filename_utf8);
+ g_free(filename_utf8);
+ return FALSE;
+ }
+ ETFileInfo->mpc_profile = g_strdup(Info.CompresionName);
+ ETFileInfo->version = Info.Version;
+ ETFileInfo->bitrate = Info.Bitrate/1000.0;
+ ETFileInfo->samplerate = Info.SampleFreq;
+ ETFileInfo->mode = Info.Channels;
+ ETFileInfo->size = Info.FileSize;
+ ETFileInfo->duration = Info.Duration/1000;
+
+ return TRUE;
+}
+
+
+
+gboolean Mac_Header_Display_File_Info_To_UI (gchar *filename_utf8, ET_File_Info *ETFileInfo)
+{
+ gchar *text;
+ gchar *time = NULL;
+ gchar *time1 = NULL;
+ gchar *size = NULL;
+ gchar *size1 = NULL;
+
+ /* Mode changed to profile name */
+ text = g_strdup_printf(_("Profile:"));
+ gtk_label_set_text(GTK_LABEL(ModeLabel),text);
+ g_free(text);
+ text = g_strdup_printf("%s",ETFileInfo->mpc_profile);
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel),text);
+ g_free(text);
+
+ /* Bitrate */
+ text = g_strdup_printf(_("%d kb/s"),ETFileInfo->bitrate);
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel),text);
+ g_free(text);
+
+ /* Samplerate */
+ text = g_strdup_printf(_("%d Hz"),ETFileInfo->samplerate);
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),text);
+ g_free(text);
+
+ /* Version changed to encoder version */
+ text = g_strdup_printf(_("Encoder:"));
+ gtk_label_set_text(GTK_LABEL(VersionLabel),text);
+ g_free(text);
+ text = g_strdup_printf("%i.%i",ETFileInfo->version/1000,ETFileInfo->version%1000);
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),text);
+ g_free(text);
+
+ /* Size */
+ size = Convert_Size(ETFileInfo->size);
+ size1 = Convert_Size(ETCore->ETFileDisplayedList_TotalSize);
+ text = g_strdup_printf("%s (%s)",size,size1);
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel),text);
+ g_free(size);
+ g_free(size1);
+ g_free(text);
+
+ /* Duration */
+ time = Convert_Duration(ETFileInfo->duration);
+ time1 = Convert_Duration(ETCore->ETFileDisplayedList_TotalDuration);
+ text = g_strdup_printf("%s (%s)",time,time1);
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel),text);
+ g_free(time);
+ g_free(time1);
+ g_free(text);
+
+ return TRUE;
+}
diff --git a/src/monkeyaudio_header.h b/src/monkeyaudio_header.h
new file mode 100755
index 0000000..a717472
--- /dev/null
+++ b/src/monkeyaudio_header.h
@@ -0,0 +1,42 @@
+/* monkeyaudio_header.h - 16 IV 2003 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2002-2003 Artur Polaczyñski <artii@o2.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __MONKEYAUDIO_HEADER_H__
+#define __MONKEYAUDIO_HEADER_H__
+
+
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+gboolean Mac_Header_Read_File_Info(gchar *filename, ET_File_Info *ETFileInfo);
+gboolean Mac_Header_Display_File_Info_To_UI (gchar *filename, ET_File_Info *ETFileInfo);
+
+
+#endif /* __MONKAYAUDIO_HEADER_H__ */
diff --git a/src/mp4_header.c b/src/mp4_header.c
new file mode 100755
index 0000000..0ba1449
--- /dev/null
+++ b/src/mp4_header.c
@@ -0,0 +1,315 @@
+/* mp4_header.c - 2005/02/05 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2005 Stewart Whitman <swhitman@cox.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h> // For definition of ENABLE_MP4
+
+#ifdef ENABLE_MP4
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "mp4_header.h"
+#include "easytag.h"
+#include "et_core.h"
+#include "log.h"
+#include "misc.h"
+#include "charset.h"
+
+/* These undefs are because the mpeg4ip library contains a gnu config file in it's .h file */
+#undef PACKAGE_BUGREPORT
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
+#include <mp4.h>
+
+
+/****************
+ * Declarations *
+ ****************/
+
+static const struct
+{
+ uint8_t profile;
+ const char *format;
+ const char *subformat;
+} MP4AudioProfileToName[] = {
+ { MP4_MPEG4_AAC_MAIN_AUDIO_TYPE, "MPEG", "4, AAC main", },
+ { MP4_MPEG4_AAC_LC_AUDIO_TYPE, "MPEG", "4, AAC LC", },
+ { MP4_MPEG4_AAC_SSR_AUDIO_TYPE, "MPEG", "4, AAC SSR", },
+ { MP4_MPEG4_AAC_LTP_AUDIO_TYPE, "MPEG", "4, AAC LTP", },
+ { MP4_MPEG4_AAC_HE_AUDIO_TYPE, "MPEG", "4, AAC HE", },
+ { MP4_MPEG4_AAC_SCALABLE_AUDIO_TYPE, "MPEG", "4, AAC Scalable", },
+ { 7, "MPEG", "4, TwinVQ", },
+ { MP4_MPEG4_CELP_AUDIO_TYPE, "MPEG", "4, CELP", },
+ { MP4_MPEG4_HVXC_AUDIO_TYPE, "MPEG", "4, HVXC", },
+ // 10, 11 unused
+ { MP4_MPEG4_TTSI_AUDIO_TYPE, "MPEG", "4, TTSI", },
+ { MP4_MPEG4_MAIN_SYNTHETIC_AUDIO_TYPE, "MPEG", "4, Main Synthetic", },
+ { MP4_MPEG4_WAVETABLE_AUDIO_TYPE, "MPEG", "4, Wavetable Syn", },
+ { MP4_MPEG4_MIDI_AUDIO_TYPE, "MPEG", "4, General MIDI", },
+ { MP4_MPEG4_ALGORITHMIC_FX_AUDIO_TYPE, "MPEG", "4, Algo Syn and Audio FX", },
+ { 17, "MPEG", "4, ER AAC LC", },
+ // 18 unused
+ { 19, "MPEG", "4, ER AAC LTP", },
+ { 20, "MPEG", "4, ER AAC Scalable", },
+ { 21, "MPEG", "4, ER TwinVQ", },
+ { 22, "MPEG", "4, ER BSAC", },
+ { 23, "MPEG", "4, ER ACC LD", },
+ { 24, "MPEG", "4, ER CELP", },
+ { 25, "MPEG", "4, ER HVXC", },
+ { 26, "MPEG", "4, ER HILN", },
+ { 27, "MPEG", "4, ER Parametric", },
+};
+
+static const struct
+{
+ uint8_t profile;
+ const char *format;
+ const char *subformat;
+} AudioProfileToName[] = {
+ { MP4_MPEG2_AAC_MAIN_AUDIO_TYPE, "MPEG", "2, AAC Main" },
+ { MP4_MPEG2_AAC_LC_AUDIO_TYPE, "MPEG", "2, AAC LC" },
+ { MP4_MPEG2_AAC_SSR_AUDIO_TYPE, "MPEG", "2, AAC SSR" },
+ { MP4_MPEG2_AUDIO_TYPE, "MPEG", "2, Audio (13818-3)" },
+ { MP4_MPEG1_AUDIO_TYPE, "MPEG", "1, Audio (11172-3)" },
+ // mpeg4ip's private definitions
+ { MP4_PCM16_LITTLE_ENDIAN_AUDIO_TYPE, "PCM16", "Little Endian" },
+ { MP4_VORBIS_AUDIO_TYPE, "Vorbis", "" },
+ { MP4_ALAW_AUDIO_TYPE, "G.711", "aLaw" },
+ { MP4_ULAW_AUDIO_TYPE, "G.711", "uLaw" },
+ { MP4_G723_AUDIO_TYPE, "G.723.1", "" },
+ { MP4_PCM16_BIG_ENDIAN_AUDIO_TYPE, "PCM16", "Big Endian" },
+};
+
+#define NUMBER_OF(A) (sizeof(A) / sizeof(A[0]))
+
+
+/**************
+ * Prototypes *
+ **************/
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * getType:
+ *
+ * Returns a format/sub-format information. Taken from mp4.h/mp4info.
+ */
+static void getType(MP4FileHandle file, MP4TrackId trackId, const char **format, const char **subformat )
+{
+ unsigned i;
+ const char *media_data_name = MP4GetTrackMediaDataName(file, trackId);
+
+ *format = _("Audio");
+ *subformat = _("Unknown");
+
+ if (media_data_name == NULL)
+ {
+ ;
+ } else if (strcasecmp(media_data_name, "samr") == 0)
+ {
+ *subformat = "AMR";
+ } else if (strcasecmp(media_data_name, "sawb") == 0)
+ {
+ *subformat = "AMR-WB";
+ } else if (strcasecmp(media_data_name, "mp4a") == 0)
+ {
+ u_int8_t type = MP4GetTrackEsdsObjectTypeId(file, trackId);
+
+ if( type == MP4_MPEG4_AUDIO_TYPE )
+ {
+ u_int8_t* pAacConfig = NULL;
+ u_int32_t aacConfigLength;
+
+ MP4GetTrackESConfiguration(file, trackId, &pAacConfig, &aacConfigLength);
+
+ if (pAacConfig != NULL)
+ {
+ type = aacConfigLength >= 2 ? ((pAacConfig[0] >> 3) & 0x1f) : 0;
+ free(pAacConfig);
+
+ for (i = 0; i < NUMBER_OF(MP4AudioProfileToName); i++)
+ {
+ if (type == MP4AudioProfileToName[i].profile)
+ {
+ *format = MP4AudioProfileToName[i].format;
+ *subformat = MP4AudioProfileToName[i].subformat;
+ return;
+ }
+ }
+ }
+ *format = "MPEG";
+ *subformat = "4, Unknown";
+ } else
+ {
+ for (i = 0; i < NUMBER_OF(AudioProfileToName); i++)
+ {
+ if (type == AudioProfileToName[i].profile)
+ {
+ *format = AudioProfileToName[i].format;
+ *subformat = AudioProfileToName[i].subformat;
+ return;
+ }
+ }
+ }
+ } else
+ {
+ *subformat = media_data_name;
+ }
+}
+
+
+/*
+ * Mp4_Header_Read_File_Info:
+ *
+ * Get header info into the ETFileInfo structure
+ */
+gboolean Mp4_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
+{
+ MP4FileHandle file;
+ MP4TrackId trackId = 1;
+ //const char* trackType;
+ const char *format, *subformat;
+
+ if (!filename || !ETFileInfo)
+ return FALSE;
+
+ /* Get size of file */
+ ETFileInfo->size = Get_File_Size(filename);
+
+ if ((file = MP4Read(filename, 0)) == MP4_INVALID_FILE_HANDLE )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ //g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ /* Check for audio track */
+ if( MP4GetNumberOfTracks(file,MP4_AUDIO_TRACK_TYPE,0) < 1 )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,("Contains no audio track"));
+ MP4Close(file);
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ /* Get the first track id (index 0) */
+ trackId = MP4FindTrackId(file, 0, MP4_AUDIO_TRACK_TYPE, 0);
+
+ /* Get format/subformat */
+ {
+ getType( file, trackId, &format, &subformat );
+ ETFileInfo->mpc_version = g_strdup( format );
+ ETFileInfo->mpc_profile = g_strdup( subformat );
+ }
+
+ ETFileInfo->version = 4;
+ ETFileInfo->mpeg25 = 0;
+ ETFileInfo->layer = 14;
+
+ ETFileInfo->variable_bitrate = TRUE;
+ ETFileInfo->bitrate = MP4GetTrackBitRate(file, trackId) / 1000;
+ ETFileInfo->samplerate = MP4GetTrackTimeScale(file, trackId);
+ ETFileInfo->mode = MP4GetTrackAudioChannels(file, trackId);
+ ETFileInfo->duration = MP4ConvertFromTrackDuration(file, trackId, MP4GetTrackDuration(file, trackId), MP4_SECS_TIME_SCALE);
+
+ MP4Close(file);
+ return TRUE;
+}
+
+
+
+/*
+ * Mp4_Header_Display_File_Info_To_UI:
+ *
+ * Display header info in the main window
+ */
+gboolean Mp4_Header_Display_File_Info_To_UI(gchar *filename, ET_File_Info *ETFileInfo)
+{
+ gchar *text;
+ gchar *time = NULL;
+ gchar *time1 = NULL;
+ gchar *size = NULL;
+ gchar *size1 = NULL;
+
+ /* MPEG, Layer versions */
+ gtk_label_set_text(GTK_LABEL(VersionLabel),ETFileInfo->mpc_version);
+ //text = g_strdup_printf("%d",ETFileInfo->version);
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),ETFileInfo->mpc_profile);
+ //g_free(text);
+
+ /* Bitrate */
+ if (ETFileInfo->variable_bitrate)
+ text = g_strdup_printf(_("~%d kb/s"),ETFileInfo->bitrate);
+ else
+ text = g_strdup_printf(_("%d kb/s"),ETFileInfo->bitrate);
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel),text);
+ g_free(text);
+
+ /* Samplerate */
+ text = g_strdup_printf(_("%d Hz"),ETFileInfo->samplerate);
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),text);
+ g_free(text);
+
+ /* Mode */
+ /* mpeg4ip library seems to always return -1 */
+ gtk_label_set_text(GTK_LABEL(ModeLabel),_("Channels:"));
+ if( ETFileInfo->mode == -1 )
+ text = g_strdup_printf("Unknown");
+ else
+ text = g_strdup_printf("%d",ETFileInfo->mode);
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel),text);
+ g_free(text);
+
+ /* Size */
+ size = Convert_Size(ETFileInfo->size);
+ size1 = Convert_Size(ETCore->ETFileDisplayedList_TotalSize);
+ text = g_strdup_printf("%s (%s)",size,size1);
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel),text);
+ if (size) g_free(size);
+ if (size1) g_free(size1);
+ g_free(text);
+
+ /* Duration */
+ time = Convert_Duration(ETFileInfo->duration);
+ time1 = Convert_Duration(ETCore->ETFileDisplayedList_TotalDuration);
+ text = g_strdup_printf("%s (%s)",time,time1);
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel),text);
+ if (time) g_free(time);
+ if (time1) g_free(time1);
+ g_free(text);
+
+ return TRUE;
+}
+
+#endif
diff --git a/src/mp4_header.h b/src/mp4_header.h
new file mode 100755
index 0000000..2e2f2a1
--- /dev/null
+++ b/src/mp4_header.h
@@ -0,0 +1,42 @@
+/* mp4_header.h - 2005/02/15 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2005 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2005 Stewart Whitman <swhitman@cox.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __MP4_HEADER_H__
+#define __MP4_HEADER_H__
+
+
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+gboolean Mp4_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo);
+gboolean Mp4_Header_Display_File_Info_To_UI (gchar *filename, ET_File_Info *ETFileInfo);
+
+
+#endif /* __MP4_HEADER_H__ */
diff --git a/src/mp4_tag.c b/src/mp4_tag.c
new file mode 100755
index 0000000..86b4cff
--- /dev/null
+++ b/src/mp4_tag.c
@@ -0,0 +1,429 @@
+/* mp4_tag.c - 2005/08/06 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2005 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2005 Michael Ihde <mike.ihde@randomwalking.com>
+ * Copyright (C) 2005 Stewart Whitman <swhitman@cox.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/* Portions of this code was borrowed from the MPEG4IP tools project */
+#include <config.h> // For definition of ENABLE_MP4
+
+#ifdef ENABLE_MP4
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "mp4_tag.h"
+#include "picture.h"
+#include "easytag.h"
+#include "setting.h"
+#include "log.h"
+#include "misc.h"
+#include "et_core.h"
+#include "charset.h"
+
+/* These undefs are because the mpeg4ip library contains a gnu config file in it's .h file */
+#undef PACKAGE_BUGREPORT
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
+#include <mp4.h>
+
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * Mp4_Tag_Read_File_Tag:
+ *
+ * Read tag data into an Mp4 file.
+ *
+ * Note:
+ * - for string fields, //if field is found but contains no info (strlen(str)==0), we don't read it
+ * - for track numbers, if they are zero, then we don't read it
+ */
+gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
+{
+ FILE *file;
+ MP4FileHandle mp4file = NULL;
+ uint16_t track, track_total;
+ uint16_t disk, disktotal;
+ u_int8_t *coverArt;
+ u_int32_t coverSize;
+
+ if (!filename || !FileTag)
+ return FALSE;
+
+ if ( (file=fopen(filename,"r"))==NULL )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+ fclose(file); // We close it cause mp4 opens/closes file itself
+
+ /* Get data from tag */
+ mp4file = MP4Read(filename, 0);
+ if (mp4file == MP4_INVALID_FILE_HANDLE)
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ /* TODO Add error detection */
+
+ /*********
+ * Title *
+ *********/
+ MP4GetMetadataName(mp4file, &FileTag->title);
+
+ /**********
+ * Artist *
+ **********/
+ MP4GetMetadataArtist(mp4file, &FileTag->artist);
+
+ /*********
+ * Album *
+ *********/
+ MP4GetMetadataAlbum(mp4file, &FileTag->album);
+
+ /**********************
+ * Disk / Total Disks *
+ **********************/
+ if (MP4GetMetadataDisk(mp4file, &disk, &disktotal))
+ {
+ if (disk != 0 && disktotal != 0)
+ FileTag->disc_number = g_strdup_printf("%d/%d",(gint)disk,(gint)disktotal);
+ else if (disk != 0)
+ FileTag->disc_number = g_strdup_printf("%d",(gint)disk);
+ else if (disktotal != 0)
+ FileTag->disc_number = g_strdup_printf("/%d",(gint)disktotal);
+ //if (disktotal != 0)
+ // FileTag->disk_number_total = g_strdup_printf("%d",(gint)disktotal);
+ }
+
+ /********
+ * Year *
+ ********/
+ MP4GetMetadataYear(mp4file, &FileTag->year);
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ if (MP4GetMetadataTrack(mp4file, &track, &track_total))
+ {
+ if (track != 0)
+ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track); // Just to have numbers like this : '01', '05', '12', ...
+ if (track_total != 0)
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track_total); // Just to have numbers like this : '01', '05', '12', ...
+ }
+
+ /*********
+ * Genre *
+ *********/
+ MP4GetMetadataGenre(mp4file, &FileTag->genre);
+
+ /***********
+ * Comment *
+ ***********/
+ MP4GetMetadataComment(mp4file, &FileTag->comment);
+
+ /**********************
+ * Composer or Writer *
+ **********************/
+ MP4GetMetadataWriter(mp4file, &FileTag->composer);
+
+ /*****************
+ * Encoding Tool *
+ *****************/
+ MP4GetMetadataTool(mp4file, &FileTag->encoded_by);
+
+ /* Unimplemented
+
+ Tempo / BPM
+ MP4GetMetadataTempo(file, &string)
+ */
+
+ /***********
+ * Picture *
+ ***********/
+ // There is only one picture!
+ if ( MP4GetMetadataCoverArt( mp4file, &coverArt, &coverSize ) )
+ {
+ Picture *pic = Picture_Allocate();
+ pic->size = coverSize;
+ pic->data = coverArt;
+ pic->type = PICTURE_TYPE_FRONT_COVER;
+ pic->description = NULL;
+
+ FileTag->picture = pic;
+ }
+
+
+ /* Free allocated data */
+ MP4Close(mp4file);
+
+ return TRUE;
+}
+
+
+/*
+ * Mp4_Tag_Write_File_Tag:
+ *
+ * Write tag data into an Mp4 file.
+ *
+ * Note:
+ * - for track numbers, we write 0's if one or the other is blank
+ */
+gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
+{
+ File_Tag *FileTag;
+ gchar *filename;
+ gchar *filename_utf8;
+ FILE *file;
+ MP4FileHandle mp4file = NULL;
+ gint error = 0;
+
+ if (!ETFile || !ETFile->FileTag)
+ return FALSE;
+
+ FileTag = (File_Tag *)ETFile->FileTag->data;
+ filename = ((File_Name *)ETFile->FileNameCur->data)->value;
+ filename_utf8 = ((File_Name *)ETFile->FileNameCur->data)->value_utf8;
+
+ /* Test to know if we can write into the file */
+ if ( (file=fopen(filename,"r+"))==NULL )
+ {
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ return FALSE;
+ }
+ fclose(file);
+
+ /* Open file for writing */
+ mp4file = MP4Modify(filename,0,0);
+ if (mp4file == MP4_INVALID_FILE_HANDLE)
+ {
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
+ return FALSE;
+ }
+
+ /*********
+ * Title *
+ *********/
+ if (FileTag->title && g_utf8_strlen(FileTag->title, -1) > 0)
+ {
+ MP4SetMetadataName(mp4file, FileTag->title);
+ }else
+ {
+ //MP4DeleteMetadataName(mp4file); // Not available on mpeg4ip-1.2 (only in 1.3)
+ MP4SetMetadataName(mp4file, "");
+ }
+
+ /**********
+ * Artist *
+ **********/
+ if (FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
+ {
+ MP4SetMetadataArtist(mp4file, FileTag->artist);
+ }else
+ {
+ //MP4DeleteMetadataArtist(mp4file);
+ MP4SetMetadataArtist(mp4file, "");
+ }
+
+ /*********
+ * Album *
+ *********/
+ if (FileTag->album && g_utf8_strlen(FileTag->album, -1) > 0)
+ {
+ MP4SetMetadataAlbum(mp4file, FileTag->album);
+ }else
+ {
+ //MP4DeleteMetadataAlbum(mp4file);
+ MP4SetMetadataAlbum(mp4file, "");
+ }
+
+ /**********************
+ * Disk / Total Disks *
+ **********************/
+ if (FileTag->disc_number && g_utf8_strlen(FileTag->disc_number, -1) > 0)
+ //|| FileTag->disc_number_total && g_utf8_strlen(FileTag->disc_number_total, -1) > 0)
+ {
+ uint16_t disk = 0;
+ uint16_t disktotal = 0;
+
+ /* At the present time, we manage only disk number like '1' or '1/2', we
+ * don't use disk number total... so here we try to decompose */
+ if (FileTag->disc_number)
+ {
+ gchar *dn_tmp = g_strdup(FileTag->disc_number);
+ gchar *tmp = strchr(dn_tmp,'/');
+ if (tmp)
+ {
+ // A disc_number_total was entered
+ if ( (tmp+1) && atoi(tmp+1) )
+ disktotal = atoi(tmp+1);
+
+ // Fill disc_number
+ *tmp = '\0';
+ disk = atoi(dn_tmp);
+ }else
+ {
+ disk = atoi(FileTag->disc_number);
+ }
+ g_free(dn_tmp);
+ }
+ /*if (FileTag->disc_number)
+ disk = atoi(FileTag->disc_number);
+ if (FileTag->disc_number_total)
+ disktotal = atoi(FileTag->disc_number_total);
+ */
+ MP4SetMetadataDisk(mp4file, disk, disktotal);
+ }else
+ {
+ //MP4DeleteMetadataDisk(mp4file);
+ MP4SetMetadataDisk(mp4file, 0, 0);
+ }
+
+ /********
+ * Year *
+ ********/
+ if (FileTag->year && g_utf8_strlen(FileTag->year, -1) > 0)
+ {
+ MP4SetMetadataYear(mp4file, FileTag->year);
+ }else
+ {
+ //MP4DeleteMetadataYear(mp4file);
+ MP4SetMetadataYear(mp4file, "");
+ }
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ if ( (FileTag->track && g_utf8_strlen(FileTag->track, -1) > 0)
+ || (FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0) )
+ {
+ uint16_t track = 0;
+ uint16_t track_total = 0;
+ if (FileTag->track)
+ track = atoi(FileTag->track);
+ if (FileTag->track_total)
+ track_total = atoi(FileTag->track_total);
+ MP4SetMetadataTrack(mp4file, track, track_total);
+ }else
+ {
+ //MP4DeleteMetadataTrack(mp4file);
+ MP4SetMetadataTrack(mp4file, 0, 0);
+ }
+
+ /*********
+ * Genre *
+ *********/
+ if (FileTag->genre && g_utf8_strlen(FileTag->genre, -1) > 0 )
+ {
+ MP4SetMetadataGenre(mp4file, FileTag->genre);
+ }else
+ {
+ //MP4DeleteMetadataGenre(mp4file);
+ MP4SetMetadataGenre(mp4file, "");
+ }
+
+ /***********
+ * Comment *
+ ***********/
+ if (FileTag->comment && g_utf8_strlen(FileTag->comment, -1) > 0)
+ {
+ MP4SetMetadataComment(mp4file, FileTag->comment);
+ }else
+ {
+ //MP4DeleteMetadataComment(mp4file);
+ MP4SetMetadataComment(mp4file, "");
+ }
+
+ /**********************
+ * Composer or Writer *
+ **********************/
+ if (FileTag->composer && g_utf8_strlen(FileTag->composer, -1) > 0)
+ {
+ MP4SetMetadataWriter(mp4file, FileTag->composer);
+ }else
+ {
+ //MP4DeleteMetadataWriter(mp4file);
+ MP4SetMetadataWriter(mp4file, "");
+ }
+
+ /*****************
+ * Encoding Tool *
+ *****************/
+ if (FileTag->encoded_by && g_utf8_strlen(FileTag->encoded_by, -1) > 0)
+ {
+ MP4SetMetadataTool(mp4file, FileTag->encoded_by);
+ }else
+ {
+ //MP4DeleteMetadataTool(mp4file);
+ MP4SetMetadataTool(mp4file, "");
+ }
+
+ /***********
+ * Picture *
+ ***********/
+ {
+ Picture *pic;
+
+ //MP4DeleteMetadataCoverArt(mp4file);
+ MP4SetMetadataCoverArt(mp4file, NULL, 0);
+ for( pic = FileTag->picture; pic; pic = pic->next )
+ {
+ if( pic->type == PICTURE_TYPE_FRONT_COVER )
+ {
+ MP4SetMetadataCoverArt(mp4file, pic->data, pic->size);
+ }
+ }
+ }
+
+
+ MP4Close(mp4file);
+
+ if (error) return FALSE;
+ else return TRUE;
+}
+
+
+#endif /* ENABLE_MP4 */
diff --git a/src/mp4_tag.h b/src/mp4_tag.h
new file mode 100755
index 0000000..b25d3a2
--- /dev/null
+++ b/src/mp4_tag.h
@@ -0,0 +1,41 @@
+/* mp4_tag.h - 2005/08/06 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2005 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2005 Michael Ihde <mike.ihde@randomwalking.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __MP4_TAG_H__
+#define __MP4_TAG_H__
+
+
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag);
+gboolean Mp4tag_Write_File_Tag (ET_File *ETFile);
+
+#endif /* __MP4_TAG_H__ */
diff --git a/src/mpeg_header.c b/src/mpeg_header.c
new file mode 100755
index 0000000..1c9400d
--- /dev/null
+++ b/src/mpeg_header.c
@@ -0,0 +1,401 @@
+/* mpeg_header.c - 2000/05/12 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "mpeg_header.h"
+#include "easytag.h"
+#include "et_core.h"
+#include "log.h"
+#include "misc.h"
+#include "charset.h"
+
+// Set to :
+// - 1 to use ID3lib for reading headers
+// - 0 to use mpeg123 for reading headers
+#define USE_ID3LIB_4_HEADER 0
+
+#if USE_ID3LIB_4_HEADER
+# include <id3.h>
+# include "id3lib/id3_bugfix.h"
+#else
+# include "libmpg123/mpg123.h"
+#endif
+
+
+
+
+/****************
+ * Declarations *
+ ****************/
+gchar *layer_names[3] =
+{
+ "I", /* Layer 1 */
+ "II", /* Layer 2 */
+ "III" /* Layer 3 */
+};
+
+
+
+/**************
+ * Prototypes *
+ **************/
+static gchar* channel_mode_name(int mode);
+
+
+
+/*************
+ * Functions *
+ *************/
+
+static gchar* channel_mode_name(int mode)
+{
+ static const gchar *channel_mode[] =
+ {
+ N_("Stereo"),
+ N_("Joint stereo"),
+ N_("Dual channel"),
+ N_("Single channel")
+ };
+ if (mode < 0 || mode > 3)
+ return "";
+ return _(channel_mode[mode]);
+}
+
+
+
+/*
+ * Read infos into header of first frame
+ */
+gboolean Mpeg_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
+{
+#if (!USE_ID3LIB_4_HEADER)
+ FILE *file;
+ gulong filesize;
+
+
+ if (!filename || !ETFileInfo)
+ return FALSE;
+
+ /* Get size of file */
+ filesize = Get_File_Size(filename);
+ ETFileInfo->size = filesize;
+
+
+ /*
+ * This part was taken from XMMS
+ */
+ if ((file = fopen(filename, "rb")) != NULL)
+ {
+ guint32 head;
+ unsigned char tmp[4];
+ struct frame frm;
+ gboolean id3_found = FALSE;
+
+ if (fread(tmp, 1, 4, file) != 4)
+ {
+ fclose(file);
+ return FALSE;
+ }
+
+ // Skip data of the ID3v2.x tag (It may contain data similar to mpeg frame
+ // as, for example, in the id3 APIC frame) (patch from Artur Polaczynski)
+ if (tmp[0] == 'I' && tmp[1] == 'D' && tmp[2] == '3' && tmp[3] < 0xFF)
+ {
+ // ID3v2 tag skipeer $49 44 33 yy yy xx zz zz zz zz [zz size]
+ long id3v2size;
+ fseek(file, 2, SEEK_CUR); // Size is 6-9 position
+ if (fread(tmp, 1, 4, file) != 4) // Read bytes of tag size
+ {
+ fclose(file);
+ return FALSE;
+ }
+ id3v2size = 10 + ( (long)(tmp[3]) | ((long)(tmp[2]) << 7) | ((long)(tmp[1]) << 14) | ((long)(tmp[0]) << 21) );
+ fseek(file, id3v2size, SEEK_SET);
+ if (fread(tmp, 1, 4, file) != 4) // Read mpeg header
+ {
+ fclose(file);
+ return FALSE;
+ }
+ }
+
+ head = ((guint32) tmp[0] << 24) | ((guint32) tmp[1] << 16) | ((guint32) tmp[2] << 8) | (guint32) tmp[3];
+ while (!mpg123_head_check(head))
+ {
+ head <<= 8;
+ if (fread(tmp, 1, 1, file) != 1)
+ {
+ fclose(file);
+ return FALSE;
+ }
+ head |= tmp[0];
+ }
+ if (mpg123_decode_header(&frm, head))
+ {
+ guchar *buf;
+ gdouble tpf;
+ gint pos;
+ XHEADDATA xing_header;
+ guint32 num_frames;
+
+ buf = g_malloc(frm.framesize + 4);
+ fseek(file, -4, SEEK_CUR);
+ fread(buf, 1, frm.framesize + 4, file);
+ xing_header.toc = NULL;
+ tpf = mpg123_compute_tpf(&frm);
+ // MPEG and Layer version
+ ETFileInfo->mpeg25 = frm.mpeg25;
+ if (!ETFileInfo->mpeg25)
+ ETFileInfo->version = frm.lsf+1;
+ ETFileInfo->layer = frm.lay;
+ //if (ETFileInfo->mpeg25) g_print("mpeg_level: MPEG 2.5, layer %d\n",ETFileInfo->layer);
+ //else g_print("mpeg_level: MPEG %d, layer %d\n",ETFileInfo->version,ETFileInfo->layer);
+
+ pos = ftell(file);
+ fseek(file, 0, SEEK_END);
+ // Variable bitrate? + bitrate
+ if ( (ETFileInfo->variable_bitrate=mpg123_get_xing_header(&xing_header,buf)) )
+ {
+ num_frames = xing_header.frames;
+ ETFileInfo->bitrate = (gint) ((xing_header.bytes * 8) / (tpf * xing_header.frames * 1000));
+ //g_print("Bitrate: Variable,\navg. bitrate: %d kb/s\n",ETFileInfo->bitrate);
+ } else
+ {
+ num_frames = ((ftell(file) - pos - (id3_found ? 128 : 0)) / mpg123_compute_bpf(&frm)) + 1;
+ ETFileInfo->bitrate = tabsel_123[frm.lsf][frm.lay - 1][frm.bitrate_index];
+ //g_print("Bitrate: %d kb/s\n",ETFileInfo->bitrate);
+ }
+ // Samplerate
+ ETFileInfo->samplerate = mpg123_freqs[frm.sampling_frequency];
+ // Mode
+ ETFileInfo->mode = frm.mode;
+ //g_print("Samplerate: %ld Hz\n", mpg123_freqs[frm.sampling_frequency]);
+ //g_print("%s\nError protection: %s\nCopyright: %s\nOriginal: %s\nEmphasis: %s\n", channel_mode_name(frm.mode), bool_label[frm.error_protection], bool_label[frm.copyright], bool_label[frm.original], emphasis[frm.emphasis]);
+ //g_print("%d frames\nFilesize: %lu B\n", num_frames, ftell(file));
+ g_free(buf);
+ }
+
+ // Duration
+ ETFileInfo->duration = mpg123_get_song_time(file)/1000;
+ //g_print("time %s\n",Convert_Duration(ETFileInfo->duration));
+
+ fclose(file);
+ }else
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+#else
+ // Needs to uncomment some #include at the beginning
+
+ /*
+ * With id3lib, the header frame couldn't be read if the file contains an ID3v2 tag with an APIC frame
+ */
+ gulong filesize;
+ ID3Tag *id3_tag = NULL; /* Tag defined by the id3lib */
+ const Mp3_Headerinfo* headerInfo = NULL;
+
+
+ if (!filename || !ETFileInfo)
+ return FALSE;
+
+ /* Get size of file */
+ filesize = Get_File_Size(filename);
+ ETFileInfo->size = filesize;
+
+ /* Get data from tag */
+ if ( (id3_tag = ID3Tag_New()) == NULL )
+ return FALSE;
+
+ /* Link the file to the tag (uses ID3TT_ID3V2 to get header if APIC is present in Tag) */
+ ID3Tag_LinkWithFlags(id3_tag,filename,ID3TT_ID3V2);
+
+ /*ID3_STRUCT(Mp3_Headerinfo)
+ {
+ Mpeg_Layers layer;
+ Mpeg_Version version;
+ MP3_BitRates bitrate;
+ Mp3_ChannelMode channelmode;
+ Mp3_ModeExt modeext;
+ Mp3_Emphasis emphasis;
+ Mp3_Crc crc;
+ uint32 vbr_bitrate; // avg bitrate from xing header
+ uint32 frequency; // samplerate
+ uint32 framesize;
+ uint32 frames; // nr of frames
+ uint32 time; // nr of seconds in song
+ bool privatebit;
+ bool copyrighted;
+ bool original;
+ };*/
+
+ if ( (headerInfo = ID3Tag_GetMp3HeaderInfo(id3_tag)) )
+ {
+ switch (headerInfo->version)
+ {
+ case MPEGVERSION_1:
+ ETFileInfo->version = 1;
+ ETFileInfo->mpeg25 = FALSE;
+ break;
+ case MPEGVERSION_2:
+ ETFileInfo->version = 2;
+ ETFileInfo->mpeg25 = FALSE;
+ break;
+ case MPEGVERSION_2_5:
+ ETFileInfo->mpeg25 = TRUE;
+ ETFileInfo->mpeg25 = FALSE;
+ break;
+ default:
+ break;
+ }
+
+ switch (headerInfo->layer)
+ {
+ case MPEGLAYER_I:
+ ETFileInfo->layer = 1;
+ break;
+ case MPEGLAYER_II:
+ ETFileInfo->layer = 2;
+ break;
+ case MPEGLAYER_III:
+ ETFileInfo->layer = 3;
+ break;
+ default:
+ break;
+ }
+
+ // Samplerate
+ ETFileInfo->samplerate = headerInfo->frequency;
+
+ // Mode -> Seems to be detected but incorrect?!
+ switch (headerInfo->modeext)
+ {
+ case MP3CHANNELMODE_STEREO:
+ ETFileInfo->mode = 0;
+ break;
+ case MP3CHANNELMODE_JOINT_STEREO:
+ ETFileInfo->mode = 1;
+ break;
+ case MP3CHANNELMODE_DUAL_CHANNEL:
+ ETFileInfo->mode = 2;
+ break;
+ case MP3CHANNELMODE_SINGLE_CHANNEL:
+ ETFileInfo->mode = 3;
+ break;
+ default:
+ break;
+ }
+
+ // Bitrate
+ if (headerInfo->vbr_bitrate <= 0)
+ {
+ ETFileInfo->variable_bitrate = FALSE;
+ ETFileInfo->bitrate = headerInfo->bitrate/1000;
+ }else
+ {
+ ETFileInfo->variable_bitrate = TRUE;
+ ETFileInfo->bitrate = headerInfo->vbr_bitrate/1000;
+ }
+
+ // Duration
+ ETFileInfo->duration = headerInfo->time;
+ }
+
+ /* Free allocated data */
+ ID3Tag_Delete(id3_tag);
+
+#endif
+
+ return TRUE;
+}
+
+
+
+/*
+ * Display header infos in the main window
+ */
+gboolean Mpeg_Header_Display_File_Info_To_UI(gchar *filename_utf8, ET_File_Info *ETFileInfo)
+{
+ gchar *text;
+ gchar *time = NULL;
+ gchar *time1 = NULL;
+ gchar *size = NULL;
+ gchar *size1 = NULL;
+ gint ln_num = sizeof(layer_names)/sizeof(layer_names[0]);
+
+
+ /* MPEG, Layer versions */
+ gtk_label_set_text(GTK_LABEL(VersionLabel),_("MPEG"));
+ ln_num = sizeof(layer_names)/sizeof(layer_names[0]); // Used to avoid problem with layer_names[]
+ if (ETFileInfo->mpeg25)
+ text = g_strdup_printf("2.5, Layer %s",(ETFileInfo->layer>=1 && ETFileInfo->layer<=ln_num)?layer_names[ETFileInfo->layer-1]:"?");
+ else
+ text = g_strdup_printf("%d, Layer %s",ETFileInfo->version,(ETFileInfo->layer>=1 && ETFileInfo->layer<=ln_num)?layer_names[ETFileInfo->layer-1]:"?");
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),text);
+ g_free(text);
+
+ /* Bitrate */
+ if (ETFileInfo->variable_bitrate)
+ text = g_strdup_printf(_("~%d kb/s"),ETFileInfo->bitrate);
+ else
+ text = g_strdup_printf(_("%d kb/s"),ETFileInfo->bitrate);
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel),text);
+ g_free(text);
+
+ /* Samplerate */
+ text = g_strdup_printf(_("%d Hz"),ETFileInfo->samplerate);
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),text);
+ g_free(text);
+
+ /* Mode */
+ gtk_label_set_text(GTK_LABEL(ModeLabel),_("Mode:"));
+ text = g_strdup_printf("%s",_(channel_mode_name(ETFileInfo->mode)));
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel),text);
+ g_free(text);
+
+ /* Size */
+ size = Convert_Size(ETFileInfo->size);
+ size1 = Convert_Size(ETCore->ETFileDisplayedList_TotalSize);
+ text = g_strdup_printf("%s (%s)",size,size1);
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel),text);
+ g_free(size);
+ g_free(size1);
+ g_free(text);
+
+ /* Duration */
+ time = Convert_Duration(ETFileInfo->duration);
+ time1 = Convert_Duration(ETCore->ETFileDisplayedList_TotalDuration);
+ text = g_strdup_printf("%s (%s)",time,time1);
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel),text);
+ g_free(time);
+ g_free(time1);
+ g_free(text);
+
+ return TRUE;
+}
diff --git a/src/mpeg_header.h b/src/mpeg_header.h
new file mode 100755
index 0000000..7cb46cd
--- /dev/null
+++ b/src/mpeg_header.h
@@ -0,0 +1,41 @@
+/* mpeg_header.h - 2000/05/12 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __MPEG_HEADER_H__
+#define __MPEG_HEADER_H__
+
+
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+gboolean Mpeg_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo);
+gboolean Mpeg_Header_Display_File_Info_To_UI (gchar *filename, ET_File_Info *ETFileInfo);
+
+
+#endif /* __MPEG_HEADER_H__ */
diff --git a/src/msgbox.c b/src/msgbox.c
new file mode 100755
index 0000000..3099e50
--- /dev/null
+++ b/src/msgbox.c
@@ -0,0 +1,312 @@
+/* msgbox.c - 2000/10/13 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+/* Note: Some pieces of codes come from gnome-dialog.c
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdarg.h>
+
+#include "msgbox.h"
+#include "easytag.h"
+#include "misc.h"
+#include "setting.h"
+
+
+static void msg_box_class_init (MsgBoxClass *class);
+static void msg_box_init (MsgBox *mb);
+
+static void msg_box_show (GtkWidget *widget);
+static gint msg_box_delete_event (GtkWidget *widget, GdkEventAny *event);
+static void msg_box_button_clicked (GtkButton *button, gpointer data);
+void check_button_toggled (GtkCheckButton *checkbutton, gpointer data);
+
+
+static GtkDialogClass *parent_klass = NULL;
+
+
+GType msg_box_get_type(void)
+{
+ static GType mb_type = 0;
+
+ if (!mb_type)
+ {
+ GTypeInfo mb_info =
+ {
+ sizeof(MsgBoxClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) msg_box_class_init,
+ NULL,
+ NULL,
+ sizeof(MsgBox),
+ 0,
+ (GInstanceInitFunc) msg_box_init
+ };
+ mb_type = g_type_register_static(GTK_TYPE_DIALOG, "MsgBox", &mb_info, 0);
+ }
+ return mb_type;
+}
+
+
+static void msg_box_button_clicked (GtkButton *button, gpointer data)
+{
+ MsgBox *mb;
+
+ g_return_if_fail( (mb = MSG_BOX(data)) );
+
+ mb->button_clicked = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button),"button_value"));
+
+ if (gtk_main_level()>1)
+ gtk_main_quit();
+}
+
+
+static void msg_box_class_init (MsgBoxClass *class)
+{
+ GtkObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+ GtkDialogClass *dialog_class;
+
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+ dialog_class = (GtkDialogClass*) class;
+
+ parent_klass = gtk_type_class(gtk_dialog_get_type());
+
+ object_class->destroy = msg_box_destroy;
+ widget_class->delete_event = msg_box_delete_event;
+ widget_class->show = msg_box_show;
+}
+
+
+static void msg_box_init (MsgBox *mb)
+{
+ g_return_if_fail(mb != NULL);
+ g_return_if_fail(IS_MSG_BOX(mb));
+
+ mb->icon = -1;
+ mb->check_button = NULL;
+ mb->check_button_state = 0;
+
+}
+
+
+/*
+ * Create a new message box
+ */
+GtkWidget *msg_box_new (gchar *title, gchar *message, const gchar *stock_id,
+ /* Put all the buttons to display, and terminate by 0 */
+ ...)
+{
+ MsgBox *mb;
+ GtkWidget *Table;
+ GtkWidget *Pixmap;
+ GtkWidget *Label;
+ GtkWidget *ButtonBox;
+ GtkWidget *Button = NULL;
+ va_list cursor;
+ gint cursor_value;
+
+
+ g_return_val_if_fail(message!=NULL, NULL);
+
+ mb = MSG_BOX(g_object_new(TYPE_MSG_BOX, NULL));
+ //mb->icon = icon;
+ mb->check_button = gtk_check_button_new_with_label(_("Repeat action for the rest of the files")); /* Can save or cancel all files */
+
+ /* Window configuration */
+ gtk_window_set_title(GTK_WINDOW(mb),title);
+ gtk_window_set_transient_for(GTK_WINDOW(mb),GTK_WINDOW(MainWindow));
+ gtk_window_set_modal(GTK_WINDOW(mb),TRUE);
+
+ if (MESSAGE_BOX_POSITION_NONE)
+ gtk_window_set_position(GTK_WINDOW(mb),GTK_WIN_POS_NONE);
+ else if (MESSAGE_BOX_POSITION_CENTER)
+ gtk_window_set_position(GTK_WINDOW(mb),GTK_WIN_POS_CENTER);
+ else if (MESSAGE_BOX_POSITION_MOUSE)
+ gtk_window_set_position(GTK_WINDOW(mb),GTK_WIN_POS_MOUSE);
+ else if (MESSAGE_BOX_POSITION_CENTER_ON_PARENT)
+ gtk_window_set_position(GTK_WINDOW(mb),GTK_WIN_POS_CENTER_ON_PARENT);
+
+
+ /* Table to put: the pixmap, the message and the check button */
+ Table = gtk_table_new(2,2,FALSE);
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mb)->vbox),Table,TRUE,TRUE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(Table),4);
+ gtk_widget_show(Table);
+
+ /* The Pixmap */
+ Pixmap = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_DIALOG);
+ gtk_table_attach_defaults(GTK_TABLE(Table),Pixmap,0,1,0,1);
+ //gtk_table_attach(GTK_TABLE(Table),Pixmap,0,1,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_padding(GTK_MISC(Pixmap),6,6);
+ gtk_widget_show(Pixmap);
+
+ /* The Message */
+ Label = gtk_label_new (message);
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,1,2,0,1);
+ gtk_misc_set_padding(GTK_MISC(Label),6,6);
+ gtk_label_set_justify(GTK_LABEL(Label),GTK_JUSTIFY_CENTER);
+ //gtk_label_set_line_wrap(GTK_LABEL(Label),TRUE);
+ gtk_widget_show(Label);
+
+ /* The Check Button */
+ gtk_table_attach_defaults(GTK_TABLE(Table),mb->check_button,0,2,1,2);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mb->check_button),mb->check_button_state);
+ g_signal_connect(G_OBJECT(mb->check_button),"toggled",G_CALLBACK(check_button_toggled),mb);
+ gtk_widget_show(mb->check_button);
+
+
+ /* Buttons */
+ ButtonBox = gtk_hbutton_box_new();
+ gtk_box_set_spacing(GTK_BOX(ButtonBox), 15);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(ButtonBox), GTK_BUTTONBOX_END);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(mb)->action_area),ButtonBox);
+
+ /* Read buttons from variable arguments */
+ va_start (cursor,stock_id);
+ while ( (cursor_value = va_arg(cursor,gint)) != 0 )
+ {
+ Button = Create_Button_With_Pixmap(cursor_value);
+ gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ GTK_WIDGET_SET_FLAGS(Button,GTK_CAN_DEFAULT);
+ g_signal_connect(G_OBJECT(Button),"destroy", G_CALLBACK(gtk_widget_destroyed),&Button);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(msg_box_button_clicked),mb);
+ g_object_set_data(G_OBJECT(Button),"button_value", GINT_TO_POINTER(cursor_value));
+ }
+ va_end(cursor);
+ gtk_widget_grab_default(Button);
+ gtk_widget_show_all(ButtonBox);
+
+ return GTK_WIDGET(mb);
+}
+
+
+void msg_box_destroy (GtkObject *object)
+{
+ MsgBox *mb;
+
+ g_return_if_fail( (mb = MSG_BOX(object)) );
+
+ if (mb->check_button)
+ gtk_widget_destroy(mb->check_button);
+
+/* FIXME: causes segfault in some cases (when callin gtk_widget_destroy(msgbox) ) */
+/* if (GTK_OBJECT_CLASS(parent_klass)->destroy)
+ * (* GTK_OBJECT_CLASS(parent_klass)->destroy) (object);
+ */
+}
+
+
+static gint msg_box_delete_event (GtkWidget *widget, GdkEventAny *event)
+{
+ MsgBox *mb;
+
+ g_return_val_if_fail((mb = MSG_BOX(widget)), FALSE);
+
+ /* If the window is closed whitout pressing a button, we return -1 */
+ mb->button_clicked = -1;
+
+ if (gtk_main_level()>1)
+ gtk_main_quit();
+
+ return TRUE;
+}
+
+
+/*
+ * "Run" and show the msgbox, and send which button was pressed (or not a button)
+ */
+gint msg_box_run (MsgBox *msgbox)
+{
+ MsgBox *mb;
+
+ g_return_val_if_fail((mb = MSG_BOX(msgbox)),0);
+
+ gtk_widget_show(GTK_WIDGET(mb));
+ gtk_main();
+ gtk_widget_hide(GTK_WIDGET(mb));
+ gtk_window_set_modal(GTK_WINDOW(mb),FALSE);
+
+ return (MSG_BOX(mb)->button_clicked);
+}
+
+
+static void msg_box_show (GtkWidget *widget)
+{
+ if (GTK_WIDGET_CLASS(parent_klass)->show)
+ (* (GTK_WIDGET_CLASS(parent_klass)->show))(widget);
+}
+
+
+/*
+ * Callback when the check_button is pressed
+ */
+void check_button_toggled (GtkCheckButton *checkbutton, gpointer data)
+{
+ MsgBox *mb;
+
+ g_return_if_fail((mb = MSG_BOX(data)));
+
+ mb->check_button_state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton));
+}
+
+
+/*
+ * Set the check_button to the 'is_active' state
+ */
+void msg_box_check_button_set_active (MsgBox *msgbox, gboolean is_active)
+{
+ MsgBox *mb;
+
+ g_return_if_fail((mb = MSG_BOX(msgbox)));
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mb->check_button),is_active);
+ mb->check_button_state = is_active;
+}
+
+
+/*
+ * Get state of the check_button
+ */
+gboolean msg_box_check_button_get_active (MsgBox *msgbox)
+{
+ MsgBox *mb;
+
+ g_return_val_if_fail((mb = MSG_BOX(msgbox)),FALSE);
+
+ return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mb->check_button));
+}
+
+
+/*
+ * Hide the check_button.
+ */
+void msg_box_hide_check_button (MsgBox *msgbox)
+{
+ MsgBox *mb;
+
+ g_return_if_fail((mb = MSG_BOX(msgbox)));
+
+ gtk_widget_hide(mb->check_button);
+}
diff --git a/src/msgbox.h b/src/msgbox.h
new file mode 100755
index 0000000..6b5d663
--- /dev/null
+++ b/src/msgbox.h
@@ -0,0 +1,103 @@
+/* msgbox.h - 2000/10/13 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __MSGBOX_H__
+#define __MSGBOX_H__
+
+
+#include <gtk/gtkdialog.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#define TYPE_MSG_BOX (msg_box_get_type())
+#define MSG_BOX(obj) (GTK_CHECK_CAST((obj), TYPE_MSG_BOX, MsgBox))
+#define MSG_BOX_CLASS(klass) (GTK_CHECK_CLASS_CAST((klass), TYPE_MSG_BOX, MsgBoxClass))
+#define IS_MSG_BOX(obj) (GTK_CHECK_TYPE((obj), TYPE_MSG_BOX))
+#define IS_MSG_BOX_CLASS(klass) (GTK_CHECK_CLASS_TYPE((klass), TYPE_MSG_BOX))
+
+
+typedef struct _MsgBox MsgBox;
+typedef struct _MsgBoxClass MsgBoxClass;
+
+struct _MsgBox
+{
+ GtkDialog dialog;
+
+ gint icon;
+
+ /* Check button */
+ GtkWidget *check_button;
+ gint check_button_state;
+
+ /* To know which button have been pressed */
+ gint button_clicked;
+};
+
+struct _MsgBoxClass
+{
+ GtkDialogClass parent_class;
+};
+
+
+enum Button_Type
+{
+ BUTTON_OK = 1<<0 ,
+ BUTTON_YES = 1<<1 ,
+ BUTTON_NO = 1<<2 ,
+ BUTTON_APPLY = 1<<3 ,
+ BUTTON_SAVE = 1<<4 ,
+ BUTTON_CANCEL = 1<<5 ,
+ BUTTON_CLOSE = 1<<6 ,
+ BUTTON_WRITE = 1<<7 ,
+ BUTTON_EXECUTE = 1<<8 ,
+ BUTTON_SEARCH = 1<<9 ,
+ BUTTON_BROWSE = 1<<10
+};
+
+enum Message_Type
+{
+ MSG_INFO = 1<<0,
+ MSG_ERROR = 1<<1,
+ MSG_QUESTION = 1<<2,
+ MSG_WARNING = 1<<3
+};
+
+
+GType msg_box_get_type(void);
+
+GtkWidget *msg_box_new (gchar *title, gchar *message, const gchar *icon, ...);
+gint msg_box_run (MsgBox *msgbox);
+void msg_box_destroy (GtkObject *object);
+void msg_box_check_button_set_active (MsgBox *msgbox, gboolean is_active);
+gboolean msg_box_check_button_get_active (MsgBox *msgbox);
+void msg_box_hide_check_button (MsgBox *msgbox);
+
+
+#ifdef __cplusplus
+};
+#endif /* __cplusplus */
+
+
+#endif /* __MSGBOX_H__ */
diff --git a/src/musepack_header.c b/src/musepack_header.c
new file mode 100755
index 0000000..8bd4982
--- /dev/null
+++ b/src/musepack_header.c
@@ -0,0 +1,125 @@
+/* musepack_header.c */
+/*
+ * EasyTAG - Tag editor for MP3, Ogg Vorbis and MPC files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2002-2003 Artur Polaczyñski <artii@o2.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "easytag.h"
+#include "et_core.h"
+#include "misc.h"
+#include "setting.h"
+#include "charset.h"
+#include "musepack_header.h"
+#include "libapetag/info_mpc.h"
+
+
+/***************
+ * Header info *
+ ***************/
+
+gboolean Mpc_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
+{
+ StreamInfoMpc Info;
+
+ if (info_mpc_read(filename, &Info))
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ fprintf(stderr,"MPC header not found for file '%s'\n", filename_utf8);
+ g_free(filename_utf8);
+ return FALSE;
+ }
+ //printf("%",Info.fields);
+ ETFileInfo->mpc_profile = g_strdup(Info.ProfileName);
+ ETFileInfo->version = Info.StreamVersion;
+ ETFileInfo->bitrate = Info.Bitrate/1000.0;
+ ETFileInfo->samplerate = Info.SampleFreq;
+ ETFileInfo->mode = Info.Channels;
+ ETFileInfo->size = Info.FileSize;
+ ETFileInfo->duration = Info.Duration/1000;
+ ETFileInfo->mpc_version = g_strdup_printf("%s",Info.Encoder);
+
+ return TRUE;
+}
+
+
+
+gboolean Mpc_Header_Display_File_Info_To_UI (gchar *filename_utf8, ET_File_Info *ETFileInfo)
+{
+ gchar *text;
+ gchar *time = NULL;
+ gchar *time1 = NULL;
+ gchar *size = NULL;
+ gchar *size1 = NULL;
+
+ /* Mode changed to profile name */
+ text = g_strdup_printf(_("Profile:"));
+ gtk_label_set_text(GTK_LABEL(ModeLabel),text);
+ g_free(text);
+ text = g_strdup_printf("%s (SV%d)",ETFileInfo->mpc_profile,ETFileInfo->version);
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel),text);
+ g_free(text);
+
+ /* Bitrate */
+ text = g_strdup_printf(_("%d kb/s"),ETFileInfo->bitrate);
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel),text);
+ g_free(text);
+
+ /* Samplerate */
+ text = g_strdup_printf(_("%d Hz"),ETFileInfo->samplerate);
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),text);
+ g_free(text);
+
+ /* Version changed to encoder version */
+ text = g_strdup_printf(_("Encoder:"));
+ gtk_label_set_text(GTK_LABEL(VersionLabel),text);
+ g_free(text);
+
+ text = g_strdup_printf("%s",ETFileInfo->mpc_version);
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),text);
+ g_free(text);
+
+ /* Size */
+ size = Convert_Size(ETFileInfo->size);
+ size1 = Convert_Size(ETCore->ETFileDisplayedList_TotalSize);
+ text = g_strdup_printf("%s (%s)",size,size1);
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel),text);
+ g_free(size);
+ g_free(size1);
+ g_free(text);
+
+ /* Duration */
+ time = Convert_Duration(ETFileInfo->duration);
+ time1 = Convert_Duration(ETCore->ETFileDisplayedList_TotalDuration);
+ text = g_strdup_printf("%s (%s)",time,time1);
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel),text);
+ g_free(time);
+ g_free(time1);
+ g_free(text);
+
+ return TRUE;
+}
diff --git a/src/musepack_header.h b/src/musepack_header.h
new file mode 100755
index 0000000..8d321ee
--- /dev/null
+++ b/src/musepack_header.h
@@ -0,0 +1,42 @@
+/* musepack_header.h - 26 XI 2002 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ * Copyright (C) 2002-2003 Artur Polaczyñski <artii@o2.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __MUSEPACK_HEADER_H__
+#define __MUSEPACK_HEADER_H__
+
+
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+gboolean Mpc_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo);
+gboolean Mpc_Header_Display_File_Info_To_UI (gchar *filename, ET_File_Info *ETFileInfo);
+
+
+#endif /* __MUSEPACK_HEADER_H__ */
diff --git a/src/ogg_header.c b/src/ogg_header.c
new file mode 100755
index 0000000..61d7a76
--- /dev/null
+++ b/src/ogg_header.c
@@ -0,0 +1,293 @@
+/* ogg_header.c - 2003/12/29 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h> // For definition of ENABLE_OGG
+
+#ifdef ENABLE_OGG
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <vorbis/codec.h>
+#include <vorbis/vorbisfile.h>
+
+#ifdef ENABLE_SPEEX
+#include <speex/speex_header.h>
+#include "vcedit.h"
+#endif
+
+#include "easytag.h"
+#include "ogg_header.h"
+#include "et_core.h"
+#include "charset.h"
+#include "log.h"
+#include "misc.h"
+
+
+/***************
+ * Declaration *
+ ***************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+
+/*************
+ * Functions *
+ *************/
+
+gboolean Ogg_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
+{
+ FILE *file;
+ OggVorbis_File vf;
+ vorbis_info *vi;
+ gint encoder_version = 0;
+ gint channels = 0;
+ glong rate = 0;
+ glong bitrate_upper = 0;
+ glong bitrate_nominal = 0;
+ glong bitrate_lower = 0;
+ gdouble duration = 0;
+ gulong filesize;
+ gint ret;
+ gchar *filename_utf8;
+
+ if (!filename || !ETFileInfo)
+ return FALSE;
+
+ filename_utf8 = filename_to_display(filename);
+
+ if ( (file=fopen(filename,"rb"))==NULL ) // Warning : it is important to open the file in binary mode! (to get header informations under Win32)
+ {
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ if ( (ret=ov_open(file,&vf,NULL,0)) == 0)
+ {
+ if ( (vi=ov_info(&vf,0)) != NULL )
+ {
+ encoder_version = vi->version; // Vorbis encoder version used to create this bitstream.
+ channels = vi->channels; // Number of channels in bitstream.
+ rate = vi->rate; // (Hz) Sampling rate of the bitstream.
+ bitrate_upper = vi->bitrate_upper; // (b/s) Specifies the upper limit in a VBR bitstream.
+ bitrate_nominal = vi->bitrate_nominal; // (b/s) Specifies the average bitrate for a VBR bitstream.
+ //bitrate_nominal = ov_bitrate(&vf,-1); // (b/s) Specifies the average bitrate for the specified logical bitstream.
+ bitrate_lower = vi->bitrate_nominal; // (b/s) Specifies the lower limit in a VBR bitstream.
+ }else
+ {
+ Log_Print(_("Ogg Vorbis: The specified bitstream does not exist or the "
+ "file has been initialized improperly (file: '%s')."),filename_utf8);
+ }
+
+ duration = ov_time_total(&vf,-1); // (s) Total time.
+ //g_print("play time: %ld s\n",(long)ov_time_total(&vf,-1));
+ //g_print("serialnumber: %ld\n",(long)ov_serialnumber(&vf,-1));
+ //g_print("compressed length: %ld bytes\n",(long)(ov_raw_total(&vf,-1)));
+
+ /***{
+ // Test for displaying comments
+ vorbis_comment *vc = ov_comment(&vf,-1);
+ Log_Print(">>> %s",filename_utf8);
+ Log_Print("Nbr comments : %d",vc->comments);
+ Log_Print("Vendor : %s",vc->vendor);
+ char **ptr = vc->user_comments;
+ while(*ptr){
+ Log_Print("> %s",*ptr);
+ ++ptr;
+ }
+ }***/
+ ov_clear(&vf); // This close also the file
+ }else
+ {
+ // Because not closed by ov_clear()
+ fclose(file);
+
+ // On error...
+ switch (ret)
+ {
+ case OV_EREAD:
+ Log_Print(_("Ogg Vorbis: Read from media returned an error (file: '%s')."),filename_utf8);
+ break;
+ case OV_ENOTVORBIS:
+ Log_Print(_("Ogg Vorbis: Bitstream is not Vorbis data (file: '%s')."),filename_utf8);
+ break;
+ case OV_EVERSION:
+ Log_Print(_("Ogg Vorbis: Vorbis version mismatch (file: '%s')."),filename_utf8);
+ break;
+ case OV_EBADHEADER:
+ Log_Print(_("Ogg Vorbis: Invalid Vorbis bitstream header (file: '%s')."),filename_utf8);
+ break;
+ case OV_EFAULT:
+ Log_Print(_("Ogg Vorbis: Internal logic fault, indicates a bug or heap/stack corruption (file: '%s')."),filename_utf8);
+ break;
+ default:
+ break;
+ }
+ }
+
+ filesize = Get_File_Size(filename);
+
+ ETFileInfo->version = encoder_version;
+ ETFileInfo->bitrate = bitrate_nominal/1000;
+ ETFileInfo->samplerate = rate;
+ ETFileInfo->mode = channels;
+ ETFileInfo->size = filesize;
+ ETFileInfo->duration = duration;
+
+ g_free(filename_utf8);
+ return TRUE;
+}
+
+
+#ifdef ENABLE_SPEEX
+
+gboolean Speex_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
+{
+ FILE *file;
+ vcedit_state *state;
+ SpeexHeader *si;
+ gchar *encoder_version = NULL;
+ gint channels = 0;
+ glong rate = 0;
+ glong bitrate = 0;
+ gdouble duration = 0;
+ gulong filesize;
+ gchar *filename_utf8;
+
+ if (!filename || !ETFileInfo)
+ return FALSE;
+
+ filename_utf8 = filename_to_display(filename);
+
+ if ( (file=fopen(filename,"rb"))==NULL ) // Warning : it is important to open the file in binary mode! (to get header informations under Win32)
+ {
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+
+ state = vcedit_new_state(); // Allocate memory for 'state'
+ if ( vcedit_open(state,file) < 0 )
+ {
+ Log_Print(_("ERROR: Failed to open file: '%s' as vorbis (%s)."),filename_utf8,vcedit_error(state));
+ fclose(file);
+ g_free(filename_utf8);
+ vcedit_clear(state);
+ return FALSE;
+ }
+
+ // Get Speex informations
+ if ( (si=state->si) != NULL )
+ {
+ encoder_version = si->speex_version;
+ channels = si->nb_channels; // Number of channels in bitstream.
+ rate = si->rate; // (Hz) Sampling rate of the bitstream.
+ bitrate = si->bitrate; // (b/s) Specifies the bitrate
+
+ duration = 0;//ov_time_total(&vf,-1); // (s) Total time.
+
+ //g_print("play time: %ld s\n",(long)ov_time_total(&vf,-1));
+ //g_print("serialnumber: %ld\n",(long)ov_serialnumber(&vf,-1));
+ //g_print("compressed length: %ld bytes\n",(long)(ov_raw_total(&vf,-1)));
+ }
+
+ filesize = Get_File_Size(filename);
+
+ ETFileInfo->mpc_version = g_strdup(encoder_version);
+ ETFileInfo->bitrate = bitrate/1000;
+ ETFileInfo->samplerate = rate;
+ ETFileInfo->mode = channels;
+ ETFileInfo->size = filesize;
+ //if (bitrate > 0)
+ // ETFileInfo->duration = filesize*8/bitrate/1000; // FIXME : Approximation!! Needs to remove tag size!
+ //else
+ ETFileInfo->duration = duration;
+
+ vcedit_clear(state);
+ fclose(file);
+ g_free(filename_utf8);
+ return TRUE;
+}
+#endif
+
+gboolean Ogg_Header_Display_File_Info_To_UI (gchar *filename, ET_File_Info *ETFileInfo)
+{
+ gchar *text;
+ gchar *time = NULL;
+ gchar *time1 = NULL;
+ gchar *size = NULL;
+ gchar *size1 = NULL;
+
+ /* Encoder version */
+ gtk_label_set_text(GTK_LABEL(VersionLabel),_("Encoder:"));
+ if (!ETFileInfo->mpc_version)
+ {
+ text = g_strdup_printf("%d",ETFileInfo->version);
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),text);
+ g_free(text);
+ }else
+ {
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),ETFileInfo->mpc_version);
+ }
+
+ /* Bitrate */
+ text = g_strdup_printf(_("%d kb/s"),ETFileInfo->bitrate);
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel),text);
+ g_free(text);
+
+ /* Samplerate */
+ text = g_strdup_printf(_("%d Hz"),ETFileInfo->samplerate);
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),text);
+ g_free(text);
+
+ /* Mode */
+ gtk_label_set_text(GTK_LABEL(ModeLabel),_("Channels:"));
+ text = g_strdup_printf("%d",ETFileInfo->mode);
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel),text);
+ g_free(text);
+
+ /* Size */
+ size = Convert_Size(ETFileInfo->size);
+ size1 = Convert_Size(ETCore->ETFileDisplayedList_TotalSize);
+ text = g_strdup_printf("%s (%s)",size,size1);
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel),text);
+ g_free(size);
+ g_free(size1);
+ g_free(text);
+
+ /* Duration */
+ time = Convert_Duration(ETFileInfo->duration);
+ time1 = Convert_Duration(ETCore->ETFileDisplayedList_TotalDuration);
+ text = g_strdup_printf("%s (%s)",time,time1);
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel),text);
+ g_free(time);
+ g_free(time1);
+ g_free(text);
+
+ return TRUE;
+}
+
+#endif /* ENABLE_OGG */
diff --git a/src/ogg_header.h b/src/ogg_header.h
new file mode 100755
index 0000000..467b0b7
--- /dev/null
+++ b/src/ogg_header.h
@@ -0,0 +1,44 @@
+/* ogg_header.h - 2003/12/29 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __OGG_HEADER_H__
+#define __OGG_HEADER_H__
+
+
+#include <glib.h>
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+gboolean Ogg_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo);
+gboolean Ogg_Header_Display_File_Info_To_UI (gchar *filename, ET_File_Info *ETFileInfo);
+
+gboolean Speex_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo);
+
+
+#endif /* __OGG_HEADER_H__ */
diff --git a/src/ogg_tag.c b/src/ogg_tag.c
new file mode 100755
index 0000000..ce13c48
--- /dev/null
+++ b/src/ogg_tag.c
@@ -0,0 +1,836 @@
+/* ogg_tag.c - 2001/11/08 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h> // For definition of ENABLE_OGG
+
+#ifdef ENABLE_OGG
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <vorbis/codec.h>
+#include <vorbis/vorbisfile.h>
+#include <unistd.h>
+
+#include "easytag.h"
+#include "ogg_tag.h"
+#include "vcedit.h"
+#include "et_core.h"
+#include "log.h"
+#include "misc.h"
+#include "setting.h"
+#include "charset.h"
+
+#ifdef WIN32
+// for mkstemp
+# include "win32/win32dep.h"
+#endif
+
+
+/***************
+ * Declaration *
+ ***************/
+
+#define MULTIFIELD_SEPARATOR " - "
+
+/* Ogg Vorbis fields names in UTF-8 : http://www.xiph.org/vorbis/doc/v-comment.html
+ *
+ * Field names :
+ *
+ * Below is a proposed, minimal list of standard field names with a description of intended use. No single or group of field names is mandatory; a comment header may contain one, all or none of the names in this list.
+ *
+ * TITLE : Track/Work name
+ * VERSION : The version field may be used to differentiate multiple versions of the same track title in a single collection. (e.g. remix info)
+ * ALBUM : The collection name to which this track belongs
+ * TRACKNUMBER : The track number of this piece if part of a specific larger collection or album
+ * ARTIST : The artist generally considered responsible for the work. In popular music this is usually the performing band or singer. For classical music it would be the composer. For an audio book it would be the author of the original text.
+ * PERFORMER : The artist(s) who performed the work. In classical music this would be the conductor, orchestra, soloists. In an audio book it would be the actor who did the reading. In popular music this is typically the same as the ARTIST and is omitted.
+ * COPYRIGHT : Copyright attribution, e.g., '2001 Nobody's Band' or '1999 Jack Moffitt'
+ * LICENSE : License information, eg, 'All Rights Reserved', 'Any Use Permitted', a URL to a license such as a Creative Commons license ("www.creativecommons.org/blahblah/license.html") or the EFF Open Audio License ('distributed under the terms of the Open Audio License. see http://www.eff.org/IP/Open_licenses/eff_oal.html for details'), etc.
+ * ORGANIZATION : Name of the organization producing the track (i.e. the 'record label')
+ * DESCRIPTION : A short text description of the contents
+ * GENRE : A short text indication of music genre
+ * DATE : Date the track was recorded
+ * LOCATION : Location where track was recorded
+ * CONTACT : Contact information for the creators or distributors of the track. This could be a URL, an email address, the physical address of the producing label.
+ * ISRC : ISRC number for the track; see the ISRC intro page for more information on ISRC numbers.
+ *
+ * The remaining tags are multiples; if they are present more than once, all their occurances are considered significant.
+ *
+ * PUBLISHER : who publishes the disc the track came from
+ * DISCNUMBER : if part of a multi-disc album, put the disc number here
+ * EAN/UPN : there may be a barcode on the CD; it is most likely an EAN or UPN (Universal Product Number).
+ * LABEL : the record label or imprint on the disc
+ * LABELNO : record labels often put the catalog number of the source media somewhere on the packaging. use this tag to record it.
+ * OPUS : the number of the work; eg, Opus 10, BVW 81, K6
+ * SOURCEMEDIA : the recording media the track came from. eg, CD, Cassette, Radio Broadcast, LP, CD Single
+ * TRACKTOTAL :
+ * ENCODED-BY : The person who encoded the Ogg file. May include contact information such as email address and phone number.
+ * ENCODING : Put the settings you used to encode the Ogg file here. This tag is NOT expected to be stored or returned by cddb type databases. It includes information about the quality setting, bit rate, and bitrate management settings used to encode the Ogg. It also is used for information about which encoding software was used to do the encoding.
+ * COMPOSER : composer of the work. eg, Gustav Mahler
+ * ARRANGER : the person who arranged the piece, eg, Ravel
+ * LYRICIST : the person who wrote the lyrics, eg Donizetti
+ * AUTHOR : for text that is spoken, or was originally meant to be spoken, the author, eg JRR Tolkien
+ * CONDUCTOR : conductor of the work; eg Herbert von Karajan. choir directors would also use this tag.
+ * PERFORMER : individual performers singled out for mention; eg, Yoyo Ma (violinist)
+ * ENSEMBLE : the group playing the piece, whether orchestra, singing duo, or rock and roll band.
+ * PART : a division within a work; eg, a movement of a symphony. Some tracks contain several parts. Use a single PART tag for each part contained in a track. ie, PART="Oh sole mio"
+ * PARTNUMBER : The part number goes in here. You can use any format you like, such as Roman numerals, regular numbers, or whatever. The numbers should be entered in such a way that an alphabetical sort on this tag will correctly show the proper ordering of all the oggs that contain the contain the piece of music.
+ * LOCATION : location of recording, or other location of interest
+ * COMMENT : additional comments of any nature.
+ */
+
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Ogg_Tag_Write_File (FILE *file_in, gchar *filename_in, vcedit_state *state);
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * Read tag data into an Ogg Vorbis file.
+ * Note:
+ * - if field is found but contains no info (strlen(str)==0), we don't read it
+ */
+gboolean Ogg_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
+{
+ FILE *file;
+ vcedit_state *state;
+ vorbis_comment *vc;
+ gchar *string = NULL;
+ gchar *string1 = NULL;
+ gchar *string2 = NULL;
+ gchar *filename_utf8 = filename_to_display(filename);
+ guint field_num, i;
+
+
+ if (!filename || !FileTag)
+ return FALSE;
+
+ ogg_error_msg = NULL;
+
+ if ( (file=fopen(filename,"rb")) == NULL )
+ {
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ {
+ // Skip the id3v2 tag
+ guchar tmp_id3[4];
+ gulong id3v2size;
+
+ // Check if there is an ID3v2 tag...
+ fseek(file, 0L, SEEK_SET);
+ if (fread(tmp_id3, 1, 4, file) == 4)
+ {
+ // Calculate ID3v2 length
+ if (tmp_id3[0] == 'I' && tmp_id3[1] == 'D' && tmp_id3[2] == '3' && tmp_id3[3] < 0xFF)
+ {
+ // id3v2 tag skipeer $49 44 33 yy yy xx zz zz zz zz [zz size]
+ fseek(file, 2, SEEK_CUR); // Size is 6-9 position
+ if (fread(tmp_id3, 1, 4, file) == 4)
+ {
+ id3v2size = 10 + ( (long)(tmp_id3[3]) | ((long)(tmp_id3[2]) << 7)
+ | ((long)(tmp_id3[1]) << 14) | ((long)(tmp_id3[0]) << 21) );
+ fseek(file, id3v2size, SEEK_SET);
+ Log_Print(_("Warning : The Ogg Vorbis file '%s' contains an ID3v2 tag."),filename_utf8);
+ }else
+ {
+ fseek(file, 0L, SEEK_SET);
+ }
+ }else
+ {
+ fseek(file, 0L, SEEK_SET);
+ }
+ }else
+ {
+ fseek(file, 0L, SEEK_SET);
+ }
+ }
+
+ state = vcedit_new_state(); // Allocate memory for 'state'
+ if ( vcedit_open(state,file) < 0 )
+ {
+ Log_Print(_("ERROR: Failed to open file: '%s' as vorbis (%s)."),filename_utf8,vcedit_error(state));
+ ogg_error_msg = vcedit_error(state);
+ fclose(file);
+ g_free(filename_utf8);
+ vcedit_clear(state);
+ return FALSE;
+ }
+
+
+ /* Get data from tag */
+ vc = vcedit_comments(state);
+ /*{
+ gint i;
+ for (i=0;i<vc->comments;i++)
+ g_print("%s -> Ogg vc:'%s'\n",g_path_get_basename(filename),vc->user_comments[i]);
+ }*/
+
+ /*********
+ * Title *
+ *********/
+ /* Note : don't forget to add any new field to 'Save unsupported fields' */
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"TITLE",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->title==NULL)
+ FileTag->title = g_strdup(string);
+ else
+ FileTag->title = g_strconcat(FileTag->title,MULTIFIELD_SEPARATOR,string,NULL);
+ // If strlen = 0, then no allocated data!
+ }
+
+ g_free(string);
+ }
+
+ /**********
+ * Artist *
+ **********/
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"ARTIST",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->artist==NULL)
+ FileTag->artist = g_strdup(string);
+ else
+ FileTag->artist = g_strconcat(FileTag->artist,MULTIFIELD_SEPARATOR,string,NULL);
+ }
+
+ g_free(string);
+ }
+
+ /*********
+ * Album *
+ *********/
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"ALBUM",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->album==NULL)
+ FileTag->album = g_strdup(string);
+ else
+ FileTag->album = g_strconcat(FileTag->album,MULTIFIELD_SEPARATOR,string,NULL);
+ }
+
+ g_free(string);
+ }
+
+ /*******************************
+ * Disc Number (Part of a Set) *
+ *******************************/
+ if ( (string = vorbis_comment_query(vc,"DISCNUMBER",0)) != NULL && g_utf8_strlen(string, -1) > 0 )
+ {
+ FileTag->disc_number = g_strdup(string);
+ }
+
+ /********
+ * Year *
+ ********/
+ if ( (string = vorbis_comment_query(vc,"DATE",0)) != NULL && g_utf8_strlen(string, -1) > 0 )
+ {
+ FileTag->year = g_strdup(string);
+ }
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ if ( (string = vorbis_comment_query(vc,"TRACKNUMBER",0)) != NULL && g_utf8_strlen(string, -1) > 0 )
+ {
+ if (NUMBER_TRACK_FORMATED)
+ {
+ // Ckeck if TRACKTOTAL used, else takes it in TRACKNUMBER
+ if ( (string1 = vorbis_comment_query(vc,"TRACKTOTAL",0)) != NULL && g_utf8_strlen(string1, -1) > 0 )
+ {
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string1));
+ }else
+ if ( (string1 = g_utf8_strchr(string, -1, '/')) )
+ {
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string1+1));
+ *string1 = '\0';
+ }
+ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string));
+ }else
+ {
+ // Ckeck if TRACKTOTAL used, else takes it in TRACKNUMBER
+ if ( (string1 = vorbis_comment_query(vc,"TRACKTOTAL",0)) != NULL && g_utf8_strlen(string1, -1) > 0 )
+ {
+ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string1));
+ }else
+ if ( (string1 = g_utf8_strchr(string, -1, '/')) )
+ {
+ FileTag->track_total = g_strdup(string1+1);
+ *string1 = '\0';
+ }
+ FileTag->track = g_strdup(string);
+ }
+ }
+
+ /*********
+ * Genre *
+ *********/
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"GENRE",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->genre==NULL)
+ FileTag->genre = g_strdup(string);
+ else
+ FileTag->genre = g_strconcat(FileTag->genre,MULTIFIELD_SEPARATOR,string,NULL);
+ }
+
+ g_free(string);
+ }
+
+ /***********
+ * Comment *
+ ***********/
+ field_num = 0;
+ string1 = NULL; // Cause it may be not updated into the 'while' condition
+ while ( ((string2 = vorbis_comment_query(vc,"DESCRIPTION",field_num)) != NULL ) // New specifications
+ || ((string = vorbis_comment_query(vc,"COMMENT", field_num)) != NULL ) // Old : Winamp format (for EasyTAG 1.99.11 and older)
+ || ((string1 = vorbis_comment_query(vc,"", field_num)) != NULL ) ) // Old : Xmms format (for EasyTAG 1.99.11 and older)
+ {
+ string = Try_To_Validate_Utf8_String(string);
+ string1 = Try_To_Validate_Utf8_String(string1);
+ string2 = Try_To_Validate_Utf8_String(string2);
+
+ if ( string2 && g_utf8_strlen(string2, -1) > 0 ) // Contains comment to new specifications format and we prefer this format (field name defined)
+ {
+ if (FileTag->comment==NULL)
+ FileTag->comment = g_strdup(string2);
+ else
+ FileTag->comment = g_strconcat(FileTag->comment,MULTIFIELD_SEPARATOR,string2,NULL);
+
+ // Frees allocated data
+ if (string && g_utf8_strlen(string, -1) > 0)
+ g_free(string);
+ if (string1 && g_utf8_strlen(string1, -1) > 0)
+ g_free(string1);
+ }else if ( string && g_utf8_strlen(string, -1) > 0 ) // Contains comment to Winamp format and we prefer this format (field name defined)
+ {
+ if (FileTag->comment==NULL)
+ FileTag->comment = g_strdup(string);
+ else
+ FileTag->comment = g_strconcat(FileTag->comment,MULTIFIELD_SEPARATOR,string,NULL);
+
+ // Frees allocated data
+ if (string1 && g_utf8_strlen(string1, -1) > 0)
+ g_free(string1);
+ }else if ( string1 && g_utf8_strlen(string1, -1) > 0 ) // Contains comment to Xmms format only
+ {
+ if (FileTag->comment==NULL)
+ FileTag->comment = g_strdup(string1);
+ else
+ FileTag->comment = g_strconcat(FileTag->comment,MULTIFIELD_SEPARATOR,string1,NULL);
+ }
+
+ g_free(string);
+ g_free(string1);
+ g_free(string2);
+
+ string = NULL;
+ string1 = NULL;
+ field_num++;
+ }
+
+ /************
+ * Composer *
+ ************/
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"COMPOSER",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->composer==NULL)
+ FileTag->composer = g_strdup(string);
+ else
+ FileTag->composer = g_strconcat(FileTag->composer,MULTIFIELD_SEPARATOR,string,NULL);
+ }
+
+ g_free(string);
+ }
+
+ /*******************
+ * Original artist *
+ *******************/
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"PERFORMER",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->orig_artist==NULL)
+ FileTag->orig_artist = g_strdup(string);
+ else
+ FileTag->orig_artist = g_strconcat(FileTag->orig_artist,MULTIFIELD_SEPARATOR,string,NULL);
+ }
+
+ g_free(string);
+ }
+
+ /*************
+ * Copyright *
+ *************/
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"COPYRIGHT",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->copyright==NULL)
+ FileTag->copyright = g_strdup(string);
+ else
+ FileTag->copyright = g_strconcat(FileTag->copyright,MULTIFIELD_SEPARATOR,string,NULL);
+ }
+
+ g_free(string);
+ }
+
+ /*******
+ * URL *
+ *******/
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"LICENSE",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->url==NULL)
+ FileTag->url = g_strdup(string);
+ else
+ FileTag->url = g_strconcat(FileTag->url,MULTIFIELD_SEPARATOR,string,NULL);
+ }
+
+ g_free(string);
+ }
+
+ /**************
+ * Encoded by *
+ **************/
+ field_num = 0;
+ while ( (string = vorbis_comment_query(vc,"ENCODED-BY",field_num++)) != NULL )
+ {
+ string = Try_To_Validate_Utf8_String(string);
+
+ if ( g_utf8_strlen(string, -1) > 0 )
+ {
+ if (FileTag->encoded_by==NULL)
+ FileTag->encoded_by = g_strdup(string);
+ else
+ FileTag->encoded_by = g_strconcat(FileTag->encoded_by,MULTIFIELD_SEPARATOR,string,NULL);
+ }
+
+ g_free(string);
+ }
+
+
+ /***************************
+ * Save unsupported fields *
+ ***************************/
+ for (i=0;i<(guint)vc->comments;i++)
+ {
+ if ( strncasecmp(vc->user_comments[i],"TITLE=", 6) != 0
+ && strncasecmp(vc->user_comments[i],"ARTIST=", 7) != 0
+ && strncasecmp(vc->user_comments[i],"ALBUM=", 6) != 0
+ && strncasecmp(vc->user_comments[i],"DISCNUMBER=", 11) != 0
+ && strncasecmp(vc->user_comments[i],"DATE=", 5) != 0
+ && strncasecmp(vc->user_comments[i],"TRACKNUMBER=",12) != 0
+ && strncasecmp(vc->user_comments[i],"TRACKTOTAL=", 11) != 0
+ && strncasecmp(vc->user_comments[i],"GENRE=", 6) != 0
+ && strncasecmp(vc->user_comments[i],"DESCRIPTION=",12) != 0
+ && strncasecmp(vc->user_comments[i],"COMMENT=", 8) != 0
+ && strncasecmp(vc->user_comments[i],"=", 1) != 0
+ && strncasecmp(vc->user_comments[i],"COMPOSER=", 9) != 0
+ && strncasecmp(vc->user_comments[i],"PERFORMER=", 10) != 0
+ && strncasecmp(vc->user_comments[i],"COPYRIGHT=", 10) != 0
+ && strncasecmp(vc->user_comments[i],"LICENSE=", 8) != 0
+ && strncasecmp(vc->user_comments[i],"ENCODED-BY=", 11) != 0 )
+ {
+ FileTag->other = g_list_append(FileTag->other,
+ Try_To_Validate_Utf8_String(vc->user_comments[i]));
+ }
+ }
+
+ vcedit_clear(state);
+ fclose(file);
+ g_free(filename_utf8);
+
+ return TRUE;
+}
+
+
+
+gboolean Ogg_Tag_Write_File_Tag (ET_File *ETFile)
+{
+ File_Tag *FileTag;
+ gchar *filename;
+ gchar *filename_utf8;
+ gchar *basename_utf8;
+ FILE *file_in;
+ vcedit_state *state;
+ vorbis_comment *vc;
+ gchar *string;
+ GList *list;
+
+ if (!ETFile || !ETFile->FileTag)
+ return FALSE;
+
+ FileTag = (File_Tag *)ETFile->FileTag->data;
+ filename = ((File_Name *)ETFile->FileNameCur->data)->value;
+ filename_utf8 = ((File_Name *)ETFile->FileNameCur->data)->value_utf8;
+ ogg_error_msg = NULL;
+
+ /* Test to know if we can write into the file */
+ if ( (file_in=fopen(filename,"rb"))==NULL )
+ {
+ Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ return FALSE;
+ }
+
+ {
+ // Skip the id3v2 tag
+ guchar tmp_id3[4];
+ gulong id3v2size;
+
+ // Check if there is an ID3v2 tag...
+ fseek(file_in, 0L, SEEK_SET);
+ if (fread(tmp_id3, 1, 4, file_in) == 4)
+ {
+ // Calculate ID3v2 length
+ if (tmp_id3[0] == 'I' && tmp_id3[1] == 'D' && tmp_id3[2] == '3' && tmp_id3[3] < 0xFF)
+ {
+ // id3v2 tag skipeer $49 44 33 yy yy xx zz zz zz zz [zz size]
+ fseek(file_in, 2, SEEK_CUR); // Size is 6-9 position
+ if (fread(tmp_id3, 1, 4, file_in) == 4)
+ {
+ id3v2size = 10 + ( (long)(tmp_id3[3]) | ((long)(tmp_id3[2]) << 7)
+ | ((long)(tmp_id3[1]) << 14) | ((long)(tmp_id3[0]) << 21) );
+ fseek(file_in, id3v2size, SEEK_SET);
+ }else
+ {
+ fseek(file_in, 0L, SEEK_SET);
+ }
+ }else
+ {
+ fseek(file_in, 0L, SEEK_SET);
+ }
+ }else
+ {
+ fseek(file_in, 0L, SEEK_SET);
+ }
+ }
+
+ state = vcedit_new_state(); // Allocate memory for 'state'
+ if ( vcedit_open(state,file_in) < 0 )
+ {
+ Log_Print(_("ERROR: Failed to open file: '%s' as vorbis (%s)."),filename_utf8,vcedit_error(state));
+ ogg_error_msg = vcedit_error(state);
+ fclose(file_in);
+ vcedit_clear(state);
+ return FALSE;
+ }
+
+ /* Get data from tag */
+ vc = vcedit_comments(state);
+ vorbis_comment_clear(vc);
+ vorbis_comment_init(vc);
+
+ /*********
+ * Title *
+ *********/
+ if ( FileTag->title )
+ {
+ string = g_strconcat("TITLE=",FileTag->title,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /**********
+ * Artist *
+ **********/
+ if ( FileTag->artist )
+ {
+ string = g_strconcat("ARTIST=",FileTag->artist,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /*********
+ * Album *
+ *********/
+ if ( FileTag->album )
+ {
+ string = g_strconcat("ALBUM=",FileTag->album,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /***************
+ * Disc Number *
+ ***************/
+ if ( FileTag->disc_number )
+ {
+ string = g_strconcat("DISCNUMBER=",FileTag->disc_number,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /********
+ * Year *
+ ********/
+ if ( FileTag->year )
+ {
+ string = g_strconcat("DATE=",FileTag->year,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+ if ( FileTag->track )
+ {
+ string = g_strconcat("TRACKNUMBER=",FileTag->track,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+ if ( FileTag->track_total /*&& strlen(FileTag->track_total)>0*/ )
+ {
+ string = g_strconcat("TRACKTOTAL=",FileTag->track_total,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /*********
+ * Genre *
+ *********/
+ if ( FileTag->genre )
+ {
+ string = g_strconcat("GENRE=",FileTag->genre,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /***********
+ * Comment *
+ ***********/
+ // We write the comment using the two formats "DESCRIPTION" and "COMMENT" to be compatible with old versions
+ if ( FileTag->comment )
+ {
+ // Format of new specification
+ string = g_strconcat("DESCRIPTION=",FileTag->comment,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+
+ // Format used in winamp plugin
+ string = g_strconcat("COMMENT=",FileTag->comment,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+
+ if (OGG_TAG_WRITE_XMMS_COMMENT)
+ {
+ // Format used into xmms-1.2.5
+ string = g_strconcat("=",FileTag->comment,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+ }
+
+ /************
+ * Composer *
+ ************/
+ if ( FileTag->composer )
+ {
+ string = g_strconcat("COMPOSER=",FileTag->composer,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /*******************
+ * Original artist *
+ *******************/
+ if ( FileTag->orig_artist )
+ {
+ string = g_strconcat("PERFORMER=",FileTag->orig_artist,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /*************
+ * Copyright *
+ *************/
+ if ( FileTag->copyright )
+ {
+ string = g_strconcat("COPYRIGHT=",FileTag->copyright,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /*******
+ * URL *
+ *******/
+ if ( FileTag->url )
+ {
+ string = g_strconcat("LICENSE=",FileTag->url,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+ /**************
+ * Encoded by *
+ **************/
+ if ( FileTag->encoded_by )
+ {
+ string = g_strconcat("ENCODED-BY=",FileTag->encoded_by,NULL);
+ vorbis_comment_add(vc,string);
+ g_free(string);
+ }
+
+
+ /**************************
+ * Set unsupported fields *
+ **************************/
+ list = FileTag->other;
+ while (list)
+ {
+ if (list->data)
+ vorbis_comment_add(vc,(gchar *)list->data);
+ list = list->next;
+ }
+
+ /* Write tag, and close also 'file_in' in all cases */
+ if ( Ogg_Tag_Write_File(file_in,filename,state) == FALSE )
+ {
+ ogg_error_msg = vcedit_error(state);
+ Log_Print(_("ERROR: Failed to write comments to file '%s' (%s)."),filename_utf8,ogg_error_msg == NULL ? "" : ogg_error_msg);
+
+ vcedit_clear(state);
+ return FALSE;
+ }else
+ {
+ basename_utf8 = g_path_get_basename(filename_utf8);
+ Log_Print(_("Written tag of '%s'"),basename_utf8);
+
+ vcedit_clear(state);
+ }
+
+ return TRUE;
+}
+
+
+
+/*
+ * Write tag informations to a new temporary file, and rename it the the initial name.
+ */
+gboolean Ogg_Tag_Write_File (FILE *file_in, gchar *filename_in, vcedit_state *state)
+{
+ gchar *filename_out;
+ gint file_mkstemp;
+ FILE *file_out;
+ gboolean return_code = TRUE;
+
+
+ filename_out = g_strdup_printf("%s.XXXXXX",filename_in);
+
+ // Function mkstemp() opens also the file!
+ if ((file_mkstemp = mkstemp(filename_out)) < 0)
+ {
+ fclose(file_in);
+ close(file_mkstemp);
+ g_free(filename_out);
+ return FALSE;
+ }
+ close(file_mkstemp);
+
+ if ( (file_out=fopen(filename_out,"wb")) == NULL )
+ {
+ fclose(file_in);
+ remove(filename_out);
+ g_free(filename_out);
+ return FALSE;
+ }
+
+ if (vcedit_write(state,file_out) < 0)
+ {
+ fclose(file_in);
+ fclose(file_out);
+ remove(filename_out);
+ g_free(filename_out);
+ return FALSE;
+ }
+ fclose(file_in);
+ fclose(file_out);
+
+ // Some platforms fail to rename a file if the new name already
+ // exists, so we need to remove, then rename...
+ if (rename(filename_out,filename_in))
+ {
+ // Can't rename directly
+ if (remove(filename_in))
+ {
+ // Can't remove file
+ remove(filename_out);
+ return_code = FALSE;
+
+ }else if (rename(filename_out,filename_in))
+ {
+ // Can't rename after removing file
+ remove(filename_out);
+ return_code = FALSE;
+ }
+ }
+
+ g_free(filename_out);
+
+ return return_code;
+}
+
+
+#endif /* ENABLE_OGG */
diff --git a/src/ogg_tag.h b/src/ogg_tag.h
new file mode 100755
index 0000000..df4bbb3
--- /dev/null
+++ b/src/ogg_tag.h
@@ -0,0 +1,42 @@
+/* ogg_tag.h - 2001/11/08 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2001-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __OGG_TAG_H__
+#define __OGG_TAG_H__
+
+
+#include <glib.h>
+#include "et_core.h"
+
+/***************
+ * Declaration *
+ ***************/
+gchar *ogg_error_msg;
+
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Ogg_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag);
+gboolean Ogg_Tag_Write_File_Tag (ET_File *ETFile);
+
+
+#endif /* __OGG_TAG_H__ */
diff --git a/src/picture.c b/src/picture.c
new file mode 100755
index 0000000..8dd7b37
--- /dev/null
+++ b/src/picture.c
@@ -0,0 +1,1174 @@
+/* picture.c - 2004/11/21 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#include <config.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdk.h>
+#include <glib/gi18n-lib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include "picture.h"
+#include "easytag.h"
+#include "log.h"
+#include "misc.h"
+#include "setting.h"
+#include "msgbox.h"
+#include "bar.h"
+#include "charset.h"
+
+#ifdef WIN32
+# include "win32/win32dep.h"
+#endif
+
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void Tag_Area_Picture_Drag_Data (GtkWidget *widget, GdkDragContext *dc,
+ gint x, gint y, GtkSelectionData *selection_data,
+ guint info, guint t, gpointer data);
+void Picture_Selection_Changed_cb (GtkTreeSelection *selection, gpointer data);
+void Picture_Load_Filename (gchar *filename, gpointer user_data);
+
+void Picture_Add_Button_Clicked (GObject *object);
+void Picture_Properties_Button_Clicked (GObject *object);
+void Picture_Save_Button_Clicked (GObject *object);
+void Picture_Clear_Button_Clicked (GObject *object);
+
+gint Picture_Format (Picture *pic);
+const gchar *Picture_Format_String (gint format);
+const gchar *Picture_Type_String (gint type);
+gchar *Picture_Info (Picture *pic);
+void PictureEntry_Clear (void);
+void PictureEntry_Update (Picture *pic, gint select);
+
+Picture *Picture_Allocate (void);
+Picture *Picture_Copy_One (const Picture *pic);
+Picture *Picture_Copy (const Picture *pic);
+void Picture_Free (Picture *pic);
+Picture *Picture_Load_File_Data (const gchar *filename);
+gboolean Picture_Save_File_Data (const Picture *pic, const gchar *filename);
+
+gboolean Picture_Entry_View_Button_Pressed (GtkTreeView *treeview, GdkEventButton *event, gpointer data);
+gboolean Picture_Entry_View_Key_Pressed (GtkTreeView *treeview, GdkEvent *event, gpointer data);
+
+
+/*
+ * Note :
+ * -> MP4_TAG :
+ * Just has one picture (PICTURE_TYPE_FRONT_COVER).
+ * The format's don't matter to the MP4 side.
+ *
+ */
+
+/*************
+ * Functions *
+ *************/
+
+void Tag_Area_Picture_Drag_Data (GtkWidget *widget, GdkDragContext *dc,
+ gint x, gint y, GtkSelectionData *selection_data,
+ guint info, guint t, gpointer data)
+{
+ GtkTreeSelection *selection;
+ gchar **uri_list, **uri;
+
+ gtk_drag_finish(dc, TRUE, FALSE, t);
+
+ if (info != TARGET_URI_LIST
+ || !selection_data
+ || !PictureEntryView)
+ return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(PictureEntryView));
+ gtk_tree_selection_unselect_all(selection);
+
+ uri = uri_list = g_strsplit((const gchar *)selection_data->data, "\r\n", 0);
+ while (*uri && strlen(*uri))
+ {
+ //Picture *pic;
+ gchar *filename;
+
+ filename = g_filename_from_uri(*uri, 0, 0);
+ if (filename)
+ {
+ Picture_Load_Filename(filename,NULL);
+ /*pic = Picture_Load_File_Data(filename);
+ g_free(filename);
+ if (pic)
+ PictureEntry_Update(pic, 1);*/
+ }
+ uri++;
+ }
+ g_strfreev(uri_list);
+}
+
+void Picture_Selection_Changed_cb (GtkTreeSelection *selection, gpointer data)
+{
+ //if (gtk_tree_selection_count_selected_rows(GTK_TREE_SELECTION(selection)) == 1)
+ //{
+ gtk_widget_set_sensitive(GTK_WIDGET(PictureSaveButton), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(PicturePropertiesButton), TRUE);
+ //}else
+ //{
+ // gtk_widget_set_sensitive(GTK_WIDGET(PictureSaveButton), FALSE);
+ // gtk_widget_set_sensitive(GTK_WIDGET(PicturePropertiesButton), FALSE);
+ //}
+}
+
+void Picture_Clear_Button_Clicked (GObject *object)
+{
+ GList *paths, *refs = NULL, *node = NULL;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gpointer proxy;
+ gint n = 0;
+
+ if (!PictureEntryView) return;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(PictureEntryView));
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(PictureEntryView));
+ paths = gtk_tree_selection_get_selected_rows(selection, 0);
+ proxy = g_object_newv(G_TYPE_OBJECT, 0, NULL);
+
+ // List of items to delete
+ for (node = paths; node; node = node->next)
+ {
+ refs = g_list_append(refs, gtk_tree_row_reference_new_proxy(proxy, model, node->data));
+ gtk_tree_path_free(node->data);
+ }
+ g_list_free(paths);
+
+ for (node = refs; node; node = node->next)
+ {
+ GtkTreePath *path = gtk_tree_row_reference_get_path(node->data);
+ Picture *pic;
+ gboolean valid;
+
+ valid = gtk_tree_model_get_iter(model, &iter, path);
+ if (valid)
+ {
+ gtk_tree_model_get(model, &iter, PICTURE_COLUMN_DATA, &pic,-1);
+ Picture_Free(pic);
+
+ gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
+ }
+
+ gtk_tree_row_reference_deleted(proxy, path);
+ gtk_tree_path_free(path);
+ gtk_tree_row_reference_free(node->data);
+ n++;
+ }
+ g_list_free(refs);
+
+ if (!n)
+ // Delete all if no one was selected.
+ PictureEntry_Clear();
+}
+
+/*
+ * - 'filename' : path + filename of picture file
+ */
+void Picture_Load_Filename (gchar *filename, gpointer user_data)
+{
+ Picture *pic;
+ gchar *filename_utf8;
+ gchar *filename_utf8_folded = NULL;
+ gchar *front_folded = NULL;
+ gchar *back_folded = NULL;
+ gchar *cd_folded = NULL;
+ gchar *inside_folded = NULL;
+ //gchar *inlay_folded = NULL;
+
+ // Filename must be passed in filesystem encoding!
+ pic = Picture_Load_File_Data(filename);
+
+ filename_utf8 = filename_to_display(filename);
+
+ if (pic && filename_utf8)
+ {
+ // Behaviour following the tag type...
+ switch (ETCore->ETFileDisplayed->ETFileDescription->TagType)
+ {
+ case MP4_TAG:
+ {
+ pic->type = PICTURE_TYPE_FRONT_COVER;
+ break;
+ }
+
+ // Other tag types
+ default:
+ {
+ // By default, set the filename in the description
+ pic->description = g_path_get_basename(filename_utf8);
+
+ // Try to identify the type of the picture from the file name
+ filename_utf8_folded = g_utf8_casefold(pic->description, -1);
+ front_folded = g_utf8_casefold("Front", -1);
+ back_folded = g_utf8_casefold("Back", -1);
+ cd_folded = g_utf8_casefold("CD", -1);
+ inside_folded = g_utf8_casefold("inside", -1);
+ //inlay_folded = g_utf8_casefold("inlay", -1);
+ if ( strstr(filename_utf8_folded, front_folded) != NULL )
+ pic->type = PICTURE_TYPE_FRONT_COVER;
+ else if ( strstr(filename_utf8_folded, back_folded) != NULL )
+ pic->type = PICTURE_TYPE_BACK_COVER;
+ else if ( strstr(filename_utf8_folded, cd_folded) != NULL )
+ pic->type = PICTURE_TYPE_MEDIA;
+ else if ( strstr(filename_utf8_folded, inside_folded) != NULL )
+ pic->type = PICTURE_TYPE_LEAFLET_PAGE;
+ //else if ( strstr(filename_utf8_folded, inlay_folded) != NULL )
+ // pic->type = PICTURE_TYPE_LEAFLET_PAGE;
+
+ break;
+ }
+ }
+
+ PictureEntry_Update(pic, 1);
+
+ // FIXME: Call Picture_Free(pic) here? It seems PictureEntry_Update makes copies of pic.
+ //Picture_Free(pic);
+ }
+
+ g_free(filename_utf8);
+ g_free(filename_utf8_folded);
+ g_free(front_folded);
+ g_free(back_folded);
+ g_free(cd_folded);
+ g_free(inside_folded);
+ //g_free(inlay_folded);
+}
+
+/*
+ * To add an image in the list -> call a FileSelectionWindow
+ */
+void Picture_Add_Button_Clicked (GObject *object)
+{
+ GtkWidget *FileSelectionWindow;
+ GtkFileFilter *filter;
+ GtkWindow *parent_window = NULL;
+ static gchar *init_dir = NULL;
+
+ if (!PictureEntryView) return;
+
+ parent_window = (GtkWindow *) gtk_widget_get_toplevel(GTK_WIDGET(object));
+ if (!GTK_WIDGET_TOPLEVEL(parent_window))
+ {
+ g_warning("Could not get parent window\n");
+ return;
+ }
+
+
+ FileSelectionWindow = gtk_file_chooser_dialog_new(_("Add pictures"),
+ parent_window,
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_OK,
+ NULL);
+
+ // Add files filters
+ // "All files" filter
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name(GTK_FILE_FILTER(filter), _("All Files"));
+ gtk_file_filter_add_pattern(GTK_FILE_FILTER(filter), "*");
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(FileSelectionWindow), GTK_FILE_FILTER(filter));
+
+ // "PNG and JPEG" filter
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name(GTK_FILE_FILTER(filter), _("PNG and JPEG"));
+ //gtk_file_filter_add_mime_type(GTK_FILE_FILTER(filter), "image/jpeg");
+ //gtk_file_filter_add_mime_type(GTK_FILE_FILTER(filter), "image/png");
+ gtk_file_filter_add_pattern(GTK_FILE_FILTER(filter), "*.jpeg");
+ gtk_file_filter_add_pattern(GTK_FILE_FILTER(filter), "*.jpg");
+ gtk_file_filter_add_pattern(GTK_FILE_FILTER(filter), "*.png");
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (FileSelectionWindow), GTK_FILE_FILTER(filter));
+ // Make this filter the default
+ gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(FileSelectionWindow), GTK_FILE_FILTER(filter));
+
+ // Set window position
+ if (MESSAGE_BOX_POSITION_NONE)
+ gtk_window_set_position(GTK_WINDOW(FileSelectionWindow),GTK_WIN_POS_NONE);
+ else if (MESSAGE_BOX_POSITION_CENTER)
+ gtk_window_set_position(GTK_WINDOW(FileSelectionWindow),GTK_WIN_POS_CENTER);
+ else if (MESSAGE_BOX_POSITION_MOUSE)
+ gtk_window_set_position(GTK_WINDOW(FileSelectionWindow),GTK_WIN_POS_MOUSE);
+
+ // Behaviour following the tag type...
+ switch (ETCore->ETFileDisplayed->ETFileDescription->TagType)
+ {
+ case MP4_TAG:
+ {
+ // Only one file can be selected
+ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(FileSelectionWindow), FALSE);
+ break;
+ }
+
+ // Other tag types
+ default:
+ {
+ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(FileSelectionWindow), TRUE);
+ break;
+ }
+ }
+
+ gtk_dialog_set_default_response(GTK_DIALOG(FileSelectionWindow), GTK_RESPONSE_OK);
+
+ // Starting directory (the same of the current file)
+ if (ETCore->ETFileDisplayed)
+ {
+ gchar *cur_filename_utf8 = ((File_Name *)((GList *)ETCore->ETFileDisplayed->FileNameCur)->data)->value_utf8;
+ init_dir = g_path_get_dirname(cur_filename_utf8);
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(FileSelectionWindow),init_dir);
+ }else
+ // Starting directory (the same than the previous one)
+ if (init_dir)
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(FileSelectionWindow),init_dir);
+
+ if (gtk_dialog_run(GTK_DIALOG(FileSelectionWindow)) == GTK_RESPONSE_OK)
+ {
+ GtkTreeSelection *selection;
+ GSList *list;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(PictureEntryView));
+ gtk_tree_selection_unselect_all(selection);
+
+ list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(FileSelectionWindow));
+ g_slist_foreach(list, (GFunc) Picture_Load_Filename, 0);
+ g_slist_free(list);
+
+ // Save the directory selected for initialize next time
+ g_free(init_dir);
+ init_dir = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(FileSelectionWindow));
+ }
+ gtk_widget_destroy(FileSelectionWindow);
+}
+
+
+void Picture_Properties_Button_Clicked (GObject *object)
+{
+ GtkWidget *ScrollWindowPictureTypes, *PictureTypesWindow;
+ GtkWidget *type, *label, *desc;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
+ GtkListStore *store;
+ GtkTreeIter type_iter_to_select, iter;
+ GtkTreeModel *model;
+ GtkWindow *parent_window = NULL;
+ GList *selection_list = NULL;
+ guint i;
+ gint selection_nbr, selection_i = 1;
+ gint picture_types[] =
+ {
+ PICTURE_TYPE_OTHER,
+ PICTURE_TYPE_FILE_ICON,
+ PICTURE_TYPE_OTHER_FILE_ICON,
+ PICTURE_TYPE_FRONT_COVER,
+ PICTURE_TYPE_BACK_COVER,
+ PICTURE_TYPE_LEAFLET_PAGE,
+ PICTURE_TYPE_MEDIA,
+ PICTURE_TYPE_LEAD_ARTIST_LEAD_PERFORMER_SOLOIST,
+ PICTURE_TYPE_ARTIST_PERFORMER,
+ PICTURE_TYPE_CONDUCTOR,
+ PICTURE_TYPE_BAND_ORCHESTRA,
+ PICTURE_TYPE_COMPOSER,
+ PICTURE_TYPE_LYRICIST_TEXT_WRITER,
+ PICTURE_TYPE_RECORDING_LOCATION,
+ PICTURE_TYPE_DURING_RECORDING,
+ PICTURE_TYPE_DURING_PERFORMANCE,
+ PICTURE_TYPE_MOVIDE_VIDEO_SCREEN_CAPTURE,
+ PICTURE_TYPE_A_BRIGHT_COLOURED_FISH,
+ PICTURE_TYPE_ILLUSTRATION,
+ PICTURE_TYPE_BAND_ARTIST_LOGOTYPE,
+ PICTURE_TYPE_PUBLISHER_STUDIO_LOGOTYPE
+ };
+
+
+ if (!PictureEntryView) return;
+
+ parent_window = (GtkWindow *) gtk_widget_get_toplevel(GTK_WIDGET(object));
+ if (!GTK_WIDGET_TOPLEVEL(parent_window))
+ {
+ g_warning("Could not get parent window\n");
+ return;
+ }
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(PictureEntryView));
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(PictureEntryView));
+ selection_list = gtk_tree_selection_get_selected_rows(selection, NULL);
+ selection_nbr = gtk_tree_selection_count_selected_rows(GTK_TREE_SELECTION(selection));
+ while (selection_list)
+ {
+ GtkTreePath *path = selection_list->data;
+ Picture *pic = NULL;
+ GtkTreeSelection *selectiontype;
+ gchar *title;
+ GtkTreePath *rowPath;
+ gboolean valid;
+
+ // Get corresponding picture
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
+ if (valid)
+ gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, PICTURE_COLUMN_DATA, &pic, -1);
+
+ title = g_strdup_printf(_("Picture Properties %d/%d"),selection_i++,selection_nbr);
+ PictureTypesWindow = gtk_dialog_new_with_buttons(title,
+ parent_window,
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
+ GTK_STOCK_OK, GTK_RESPONSE_OK,
+ NULL);
+ g_free(title);
+
+ // Set window position
+ if (MESSAGE_BOX_POSITION_NONE)
+ gtk_window_set_position(GTK_WINDOW(PictureTypesWindow),GTK_WIN_POS_NONE);
+ else if (MESSAGE_BOX_POSITION_CENTER)
+ gtk_window_set_position(GTK_WINDOW(PictureTypesWindow),GTK_WIN_POS_CENTER);
+ else if (MESSAGE_BOX_POSITION_MOUSE)
+ gtk_window_set_position(GTK_WINDOW(PictureTypesWindow),GTK_WIN_POS_MOUSE);
+
+ gtk_dialog_set_default_response(GTK_DIALOG(PictureTypesWindow), GTK_RESPONSE_OK);
+
+ ScrollWindowPictureTypes = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollWindowPictureTypes),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ store = gtk_list_store_new(PICTURE_TYPE_COLUMN_COUNT, G_TYPE_STRING, G_TYPE_INT);
+ type = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
+ gtk_container_add(GTK_CONTAINER(ScrollWindowPictureTypes), type);
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_pack_start(column, renderer, FALSE);
+ gtk_tree_view_column_set_title(column, _("Picture Type"));
+ gtk_tree_view_column_set_attributes(column, renderer,
+ "text", PICTURE_TYPE_COLUMN_TEXT,
+ NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(type), column);
+ gtk_widget_set_size_request(type, 256, 256);
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(PictureTypesWindow)->vbox),ScrollWindowPictureTypes,TRUE,TRUE,0);
+
+ // Behaviour following the tag type...
+ switch (ETCore->ETFileDisplayed->ETFileDescription->TagType)
+ {
+ case MP4_TAG:
+ {
+ // Load picture type (only Front Cover!)
+ GtkTreeIter itertype;
+
+ gtk_list_store_append(store, &itertype);
+ gtk_list_store_set(store, &itertype,
+ PICTURE_TYPE_COLUMN_TEXT, _(Picture_Type_String(PICTURE_TYPE_FRONT_COVER)),
+ PICTURE_TYPE_COLUMN_TYPE_CODE, PICTURE_TYPE_FRONT_COVER,
+ -1);
+ // Line to select by default
+ type_iter_to_select = itertype;
+ break;
+ }
+
+ // Other tag types
+ default:
+ {
+ // Load pictures types
+ for (i = 0; i < sizeof(picture_types)/sizeof(picture_types[0]); i++)
+ {
+ GtkTreeIter itertype;
+
+ gtk_list_store_append(store, &itertype);
+ gtk_list_store_set(store, &itertype,
+ PICTURE_TYPE_COLUMN_TEXT, _(Picture_Type_String(picture_types[i])),
+ PICTURE_TYPE_COLUMN_TYPE_CODE, picture_types[i],
+ -1);
+ // Line to select by default
+ if (pic->type == picture_types[i])
+ type_iter_to_select = itertype;
+ }
+ break;
+ }
+ }
+
+ // Select the line by default
+ selectiontype = gtk_tree_view_get_selection(GTK_TREE_VIEW(type));
+ gtk_tree_selection_select_iter(selectiontype, &type_iter_to_select);
+
+ // Set visible the current selected line
+ rowPath = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &type_iter_to_select);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(type), rowPath, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(rowPath);
+
+ // Description
+ label = gtk_label_new(_("Picture Description:"));
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(PictureTypesWindow)->vbox),label,FALSE,FALSE,4);
+
+ // Entry for the description
+ desc = gtk_entry_new();
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(PictureTypesWindow)->vbox),desc,FALSE,FALSE,0);
+ if (pic->description)
+ {
+ gchar *tmp = ET_Utf8_Validate_Full_String(pic->description);
+ gtk_entry_set_text(GTK_ENTRY(desc), tmp);
+ g_free(tmp);
+ }
+
+ // Behaviour following the tag type...
+ switch (ETCore->ETFileDisplayed->ETFileDescription->TagType)
+ {
+ case MP4_TAG:
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(desc), FALSE);
+ break;
+ }
+
+ // Other tag types
+ default:
+ {
+ break;
+ }
+ }
+
+ gtk_widget_show_all(PictureTypesWindow);
+
+ if (gtk_dialog_run(GTK_DIALOG(PictureTypesWindow)) == GTK_RESPONSE_OK)
+ {
+ GtkTreeModel *modeltype;
+ GtkTreeIter itertype;
+
+ modeltype = gtk_tree_view_get_model(GTK_TREE_VIEW(type));
+ selectiontype = gtk_tree_view_get_selection(GTK_TREE_VIEW(type));
+ if (gtk_tree_selection_get_selected(selectiontype, &modeltype, &itertype))
+ {
+ gchar *buffer, *pic_info;
+ gint t;
+
+ gtk_tree_model_get(modeltype, &itertype,
+ PICTURE_TYPE_COLUMN_TYPE_CODE, &t, -1);
+ pic->type = t;
+
+ buffer = g_strdup(gtk_entry_get_text(GTK_ENTRY(desc)));
+ Strip_String(buffer);
+ if (pic->description)
+ g_free(pic->description);
+ if ( g_utf8_strlen(buffer, -1) > 0 )
+ {
+ pic->description = buffer;
+ }else
+ {
+ pic->description = 0;
+ g_free(buffer);
+ }
+
+ // Update value in the PictureEntryView
+ pic_info = Picture_Info(pic);
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter,
+ PICTURE_COLUMN_TEXT, pic_info,
+ -1);
+ g_free(pic_info);
+ }
+ }
+ gtk_widget_destroy(PictureTypesWindow);
+
+ if (!selection_list->next) break;
+ selection_list = selection_list->next;
+ }
+}
+
+
+void Picture_Save_Button_Clicked (GObject *object)
+{
+ GtkWidget *FileSelectionWindow;
+ GtkFileFilter *filter;
+ GtkWindow *parent_window = NULL;
+ static gchar *init_dir = NULL;
+
+ GtkTreeSelection *selection;
+ GList *selection_list = NULL;
+ GtkTreeModel *model;
+ gint selection_nbr, selection_i = 1;
+
+
+ if (!PictureEntryView) return;
+
+ parent_window = (GtkWindow*) gtk_widget_get_toplevel(GTK_WIDGET(object));
+ if (!GTK_WIDGET_TOPLEVEL(parent_window))
+ {
+ g_warning("Could not get parent window\n");
+ return;
+ }
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(PictureEntryView));
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(PictureEntryView));
+ selection_list = gtk_tree_selection_get_selected_rows(selection, NULL);
+ selection_nbr = gtk_tree_selection_count_selected_rows(GTK_TREE_SELECTION(selection));
+
+ while (selection_list)
+ {
+ GtkTreePath *path = selection_list->data;
+ GtkTreeIter iter;
+ Picture *pic;
+ gchar *title;
+ gboolean valid;
+
+ // Get corresponding picture
+ valid = gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
+ if (valid)
+ gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, PICTURE_COLUMN_DATA, &pic, -1);
+
+ title = g_strdup_printf(_("Save picture %d/%d"),selection_i++,selection_nbr);
+ FileSelectionWindow = gtk_file_chooser_dialog_new(title,
+ parent_window,
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_OK,
+ NULL);
+ g_free(title);
+
+ // Add files filters
+ // "All files" filter
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name(GTK_FILE_FILTER(filter), _("All Files"));
+ gtk_file_filter_add_pattern(GTK_FILE_FILTER(filter), "*");
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(FileSelectionWindow), GTK_FILE_FILTER(filter));
+
+ // "PNG and JPEG" filter
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name(GTK_FILE_FILTER(filter), _("PNG and JPEG"));
+ gtk_file_filter_add_mime_type(GTK_FILE_FILTER(filter), "image/jpeg");
+ gtk_file_filter_add_mime_type(GTK_FILE_FILTER(filter), "image/png");
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (FileSelectionWindow), GTK_FILE_FILTER(filter));
+ // Make this filter the default
+ gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(FileSelectionWindow), GTK_FILE_FILTER(filter));
+
+ // Set window position
+ if (MESSAGE_BOX_POSITION_NONE)
+ gtk_window_set_position(GTK_WINDOW(FileSelectionWindow),GTK_WIN_POS_NONE);
+ else if (MESSAGE_BOX_POSITION_CENTER)
+ gtk_window_set_position(GTK_WINDOW(FileSelectionWindow),GTK_WIN_POS_CENTER);
+ else if (MESSAGE_BOX_POSITION_MOUSE)
+ gtk_window_set_position(GTK_WINDOW(FileSelectionWindow),GTK_WIN_POS_MOUSE);
+
+ gtk_dialog_set_default_response(GTK_DIALOG(FileSelectionWindow), GTK_RESPONSE_OK);
+
+ // Set the default folder if defined
+ if (init_dir)
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(FileSelectionWindow),init_dir);
+
+ // Suggest a filename to the user
+ if ( pic->description && strlen(pic->description) )
+ {
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(FileSelectionWindow), pic->description); //filename in UTF8
+ }else
+ {
+ gchar *image_name = NULL;
+ switch (Picture_Format(pic))
+ {
+ case PICTURE_FORMAT_JPEG :
+ image_name = g_strdup("image_name.jpg");
+ break;
+ case PICTURE_FORMAT_PNG :
+ image_name = g_strdup("image_name.png");
+ break;
+ case PICTURE_FORMAT_UNKNOWN :
+ image_name = g_strdup("image_name.ext");
+ break;
+ }
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(FileSelectionWindow), image_name); //filename in UTF8
+ g_free(image_name);
+ }
+
+ if (gtk_dialog_run(GTK_DIALOG(FileSelectionWindow)) == GTK_RESPONSE_OK)
+ {
+ FILE *file;
+ gchar *filename, *filename_utf8;
+
+ // Save the directory selected for initialize next time
+ g_free(init_dir);
+ init_dir = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(FileSelectionWindow));
+
+ filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(FileSelectionWindow));
+ filename_utf8 = filename_to_display(filename);
+
+ // Warn user if the file already exists, else saves directly
+ if ( (file=fopen(filename_utf8,"r"))!=NULL )
+ {
+ gchar *msg;
+ GtkWidget *msgbox;
+ gint button;
+
+ fclose(file);
+
+ msg = g_strdup_printf(_("The following file already exists :\n'%s'\n"
+ "Do you want to overwrite?"),filename_utf8);
+ msgbox = msg_box_new(_("Save file..."),msg,GTK_STOCK_DIALOG_QUESTION,BUTTON_NO,BUTTON_YES,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ button = msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ if (button == BUTTON_YES)
+ {
+ Picture_Save_File_Data(pic, filename_utf8);
+ }
+ }else
+ {
+ Picture_Save_File_Data(pic, filename_utf8);
+ }
+ g_free(filename_utf8);
+ }
+ gtk_widget_destroy(FileSelectionWindow);
+
+ if (!selection_list->next) break;
+ selection_list = selection_list->next;
+ }
+}
+
+
+/* FIXME: Possibly use gnome_vfs_get_mime_type_for_buffer. */
+gint Picture_Format (Picture *pic)
+{
+ if (pic->data && pic->size > 2
+ && pic->data[0] == 0xff
+ && pic->data[1] == 0xd8)
+ return PICTURE_FORMAT_JPEG;
+
+ if (pic->data && pic->size > 8
+ && pic->data[0] == 0x89
+ && pic->data[1] == 0x50
+ && pic->data[2] == 0x4e
+ && pic->data[3] == 0x47
+ && pic->data[4] == 0x0d
+ && pic->data[5] == 0x0a
+ && pic->data[6] == 0x1a
+ && pic->data[7] == 0x0a)
+ return PICTURE_FORMAT_PNG;
+
+ return PICTURE_FORMAT_UNKNOWN;
+}
+
+const gchar *Picture_Format_String (gint format)
+{
+ switch (format)
+ {
+ case PICTURE_FORMAT_JPEG:
+ return _("JPEG image");
+ case PICTURE_FORMAT_PNG:
+ return _("PNG image");
+ default:
+ return _("Unknown image");
+ }
+}
+
+const gchar *Picture_Type_String (gint type)
+{
+ switch (type)
+ {
+ case PICTURE_TYPE_OTHER:
+ return _("Other");
+ case PICTURE_TYPE_FILE_ICON:
+ return _("32x32 pixel PNG file icon");
+ case PICTURE_TYPE_OTHER_FILE_ICON:
+ return _("Other file icon");
+ case PICTURE_TYPE_FRONT_COVER:
+ return _("Cover (front)");
+ case PICTURE_TYPE_BACK_COVER:
+ return _("Cover (back)");
+ case PICTURE_TYPE_LEAFLET_PAGE:
+ return _("Leaflet page");
+ case PICTURE_TYPE_MEDIA:
+ return _("Media (e.g. label side of CD)");
+ case PICTURE_TYPE_LEAD_ARTIST_LEAD_PERFORMER_SOLOIST:
+ return _("Lead artist/lead performer/soloist");
+ case PICTURE_TYPE_ARTIST_PERFORMER:
+ return _("Artist/performer");
+ case PICTURE_TYPE_CONDUCTOR:
+ return _("Conductor");
+ case PICTURE_TYPE_BAND_ORCHESTRA:
+ return _("Band/Orchestra");
+ case PICTURE_TYPE_COMPOSER:
+ return _("Composer");
+ case PICTURE_TYPE_LYRICIST_TEXT_WRITER:
+ return _("Lyricist/text writer");
+ case PICTURE_TYPE_RECORDING_LOCATION:
+ return _("Recording location");
+ case PICTURE_TYPE_DURING_RECORDING:
+ return _("During recording");
+ case PICTURE_TYPE_DURING_PERFORMANCE:
+ return _("During performance");
+ case PICTURE_TYPE_MOVIDE_VIDEO_SCREEN_CAPTURE:
+ return _("Movie/video screen capture");
+ case PICTURE_TYPE_A_BRIGHT_COLOURED_FISH:
+ return _("A bright coloured fish");
+ case PICTURE_TYPE_ILLUSTRATION:
+ return _("Illustration");
+ case PICTURE_TYPE_BAND_ARTIST_LOGOTYPE:
+ return _("Band/Artist logotype");
+ case PICTURE_TYPE_PUBLISHER_STUDIO_LOGOTYPE:
+ return _("Publisher/studio logotype");
+ default:
+ return _("Unknown picture type");
+ }
+}
+
+gchar *Picture_Info (Picture *pic)
+{
+ gchar *format, *desc, *type, *r, *size_str;
+ GString *s;
+
+ format = (gchar *)Picture_Format_String(Picture_Format(pic));
+
+ if (pic->description)
+ desc = pic->description;
+ else
+ desc = "";
+
+ type = (gchar *)Picture_Type_String(pic->type);
+ size_str = Convert_Size_1((gfloat)pic->size);
+
+ s = g_string_new(0);
+ // Behaviour following the tag type...
+ switch (ETCore->ETFileDisplayed->ETFileDescription->TagType)
+ {
+ case MP4_TAG:
+ {
+ g_string_sprintf(s, "%s (%s - %dx%d %s)\n%s: %s",
+ format,
+ size_str,
+ pic->width, pic->height, _("pixels"),
+ _("Type"), type);
+ break;
+ }
+
+ // Other tag types
+ default:
+ {
+ g_string_sprintf(s, "%s (%s - %dx%d %s)\n%s: %s\n%s: %s",
+ format,
+ size_str,
+ pic->width, pic->height, _("pixels"),
+ _("Type"), type,
+ _("Description"), desc);
+ break;
+ }
+ }
+ r = ET_Utf8_Validate_Full_String(s->str);
+ g_string_free(s, TRUE); // TRUE to free also 's->str'!
+ g_free(size_str);
+
+ return r;
+}
+
+void PictureEntry_Clear (void)
+{
+ GtkListStore *picture_store;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ Picture *pic;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(PictureEntryView));
+ if (gtk_tree_model_get_iter_first(model, &iter))
+ {
+ do
+ {
+ gtk_tree_model_get(model, &iter, PICTURE_COLUMN_DATA, &pic,-1);
+ Picture_Free(pic);
+ } while (gtk_tree_model_iter_next(model, &iter));
+ }
+
+ picture_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(PictureEntryView)));
+ if (picture_store)
+ gtk_list_store_clear(picture_store);
+}
+
+void PictureEntry_Update (Picture *pic, gint select)
+{
+ GdkPixbufLoader *loader = 0;
+
+ if (!pic || !PictureEntryView) return;
+
+ if (!pic->data)
+ {
+ PictureEntry_Clear();
+ return;
+ }
+
+ loader = gdk_pixbuf_loader_new();
+ if (loader)
+ {
+ if (gdk_pixbuf_loader_write(loader, pic->data, pic->size, 0))
+ {
+ GtkTreeSelection *selection;
+ GdkPixbuf *pixbuf;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(PictureEntryView));
+
+ pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
+ if (pixbuf)
+ {
+ GtkListStore *picture_store;
+ GtkTreeIter iter1;
+ GdkPixbuf *scaled_pixbuf;
+ gint scaled_pixbuf_width;
+ gint scaled_pixbuf_height;
+ gchar *pic_info;
+
+ // Keep aspect ratio of the picture
+ pic->width = gdk_pixbuf_get_width (pixbuf);
+ pic->height = gdk_pixbuf_get_height (pixbuf);
+ if (pic->width > pic->height)
+ {
+ scaled_pixbuf_width = 96;
+ scaled_pixbuf_height = 96 * pic->height / pic->width;
+ }else
+ {
+ scaled_pixbuf_width = 96 * pic->width / pic->height;
+ scaled_pixbuf_height = 96;
+ }
+
+ scaled_pixbuf = gdk_pixbuf_scale_simple(pixbuf,
+ scaled_pixbuf_width, scaled_pixbuf_height,
+ //GDK_INTERP_NEAREST); // Lower quality but better speed
+ GDK_INTERP_BILINEAR);
+ gdk_pixbuf_unref(pixbuf);
+
+ picture_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(PictureEntryView)));
+ gtk_list_store_append(picture_store, &iter1);
+ pic_info = Picture_Info(pic);
+ gtk_list_store_set(picture_store, &iter1,
+ PICTURE_COLUMN_PIC, scaled_pixbuf,
+ PICTURE_COLUMN_TEXT, pic_info,
+ PICTURE_COLUMN_DATA, Picture_Copy_One(pic),
+ -1);
+ g_free(pic_info);
+
+ if (select)
+ gtk_tree_selection_select_iter(selection, &iter1);
+ gdk_pixbuf_unref(scaled_pixbuf);
+ }else
+ {
+ GtkWidget *msgbox = NULL;
+ gchar *msg = NULL;
+
+ msg = g_strdup(_("Can't display the picture, as not enough data "
+ "has been read to determine how to create the image buffer."));
+ Log_Print("%s",msg);
+ msgbox = msg_box_new(_("Loading Picture File..."),msg,
+ GTK_STOCK_DIALOG_ERROR,BUTTON_YES,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ g_free(msg);
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ }
+ }
+ }
+ gdk_pixbuf_loader_close(loader, 0);
+
+ // Do also for next picture
+ if (pic->next)
+ PictureEntry_Update(pic->next, select);
+
+ return;
+}
+
+
+Picture *Picture_Allocate (void)
+{
+ Picture *pic = g_malloc0(sizeof(Picture));
+ return pic;
+}
+
+Picture *Picture_Copy_One (const Picture *pic)
+{
+ Picture *pic2;
+
+ if (!pic)
+ return 0;
+ pic2 = Picture_Allocate();
+ pic2->type = pic->type;
+ pic2->width = pic->width;
+ pic2->height = pic->height;
+ if (pic->description)
+ pic2->description = g_strdup(pic->description);
+ if (pic->data)
+ {
+ pic2->size = pic->size;
+ pic2->data = g_malloc(pic2->size);
+ memcpy(pic2->data, pic->data, pic->size);
+ }
+ return pic2;
+}
+
+Picture *Picture_Copy (const Picture *pic)
+{
+ Picture *pic2 = Picture_Copy_One(pic);
+ if (pic->next)
+ pic2->next = Picture_Copy(pic->next);
+ return pic2;
+}
+
+void Picture_Free (Picture *pic)
+{
+ if (!pic)
+ return;
+ if (pic->next)
+ Picture_Free(pic->next);
+ if (pic->description)
+ g_free(pic->description);
+ if (pic->data)
+ g_free(pic->data);
+ g_free(pic);
+}
+
+
+/*
+ * Load the picture represented by the 'filename' (must be passed in
+ * file system encoding, not UTF-8)
+ */
+Picture *Picture_Load_File_Data (const gchar *filename)
+{
+ Picture *pic;
+ gchar *buffer = 0;
+ size_t size = 0;
+ struct stat st;
+
+ if (lstat(filename, &st)==-1)
+ return (Picture *)NULL;
+
+ size = st.st_size;
+ buffer = g_malloc(size);
+
+ FILE *fd = fopen(filename, "rb");
+ if (!fd)
+ {
+ gchar *msg;
+ gchar *filename_utf8;
+ GtkWidget *msgbox;
+
+ /* Picture file not opened */
+ filename_utf8 = filename_to_display(filename);
+ msg = g_strdup_printf(_("Can't open file :\n'%s'!\n(%s)"),
+ filename_utf8,g_strerror(errno));
+ msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ g_free(msg);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+
+ Statusbar_Message(_("Picture file not loaded..."),TRUE);
+ g_free(filename_utf8);
+ return FALSE;
+ }
+
+ if (fread(buffer, size, 1, fd) != 1)
+ goto fail;
+
+ fclose(fd);
+
+ pic = Picture_Allocate();
+ pic->size = size;
+ pic->data = (guchar *)buffer;
+ return pic;
+
+ fail:
+ if (buffer)
+ g_free(buffer);
+ fclose(fd);
+ return (Picture *)NULL;
+}
+
+/*
+ * Save picture data to a file (jpeg, png)
+ */
+gboolean Picture_Save_File_Data (const Picture *pic, const gchar *filename)
+{
+ gint fd;
+
+ fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0666);
+ if (fd == -1)
+ return FALSE;
+
+ if (write(fd, pic->data, pic->size) != pic->size)
+ {
+ close(fd);
+ return FALSE;
+ }
+
+ close(fd);
+ return TRUE;
+}
+
+/*
+ * If double clicking the PictureEntryView :
+ * - over a selected row : opens properties window
+ * - over an empty area : open the adding window
+ */
+gboolean Picture_Entry_View_Button_Pressed (GtkTreeView *treeview, GdkEventButton *event, gpointer data)
+{
+ if (event->type==GDK_2BUTTON_PRESS && event->button==1)
+ {
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(PictureEntryView));
+
+ if (gtk_tree_selection_count_selected_rows(GTK_TREE_SELECTION(selection)) != 0)
+ Picture_Properties_Button_Clicked(G_OBJECT(PicturePropertiesButton));
+ else
+ Picture_Add_Button_Clicked(G_OBJECT(PictureAddButton));
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+/*
+ * Key press into picture entry
+ * - Delete = delete selected picture files
+ */
+gboolean Picture_Entry_View_Key_Pressed (GtkTreeView *treeview, GdkEvent *event, gpointer data)
+{
+ GdkEventKey *kevent;
+
+ kevent = (GdkEventKey *)event;
+ if (event && event->type==GDK_KEY_PRESS)
+ {
+ switch(kevent->keyval)
+ {
+ case GDK_Delete:
+ Picture_Clear_Button_Clicked(NULL);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
diff --git a/src/picture.h b/src/picture.h
new file mode 100755
index 0000000..eda3af4
--- /dev/null
+++ b/src/picture.h
@@ -0,0 +1,125 @@
+/* picture.h - 2004/11/21 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __PICTURE_H__
+#define __PICTURE_H__
+
+#include "et_core.h"
+
+
+/***************
+ * Declaration *
+ ***************/
+
+/* Defined in et_core.h
+typedef struct _Picture Picture;
+struct _Picture
+{
+ gint type;
+ gchar *description;
+ gint width; // Original width of the picture
+ gint height; // Original height of the picture
+ gulong size; // Picture size in bits
+ guchar *data;
+ Picture *next;
+};*/
+
+enum // Picture types
+{
+ PICTURE_TYPE_OTHER,
+ PICTURE_TYPE_FILE_ICON,
+ PICTURE_TYPE_OTHER_FILE_ICON,
+ PICTURE_TYPE_FRONT_COVER,
+ PICTURE_TYPE_BACK_COVER,
+ PICTURE_TYPE_LEAFLET_PAGE,
+ PICTURE_TYPE_MEDIA,
+ PICTURE_TYPE_LEAD_ARTIST_LEAD_PERFORMER_SOLOIST,
+ PICTURE_TYPE_ARTIST_PERFORMER,
+ PICTURE_TYPE_CONDUCTOR,
+ PICTURE_TYPE_BAND_ORCHESTRA,
+ PICTURE_TYPE_COMPOSER,
+ PICTURE_TYPE_LYRICIST_TEXT_WRITER,
+ PICTURE_TYPE_RECORDING_LOCATION,
+ PICTURE_TYPE_DURING_RECORDING,
+ PICTURE_TYPE_DURING_PERFORMANCE,
+ PICTURE_TYPE_MOVIDE_VIDEO_SCREEN_CAPTURE,
+ PICTURE_TYPE_A_BRIGHT_COLOURED_FISH,
+ PICTURE_TYPE_ILLUSTRATION,
+ PICTURE_TYPE_BAND_ARTIST_LOGOTYPE,
+ PICTURE_TYPE_PUBLISHER_STUDIO_LOGOTYPE
+};
+
+enum
+{
+ PICTURE_FORMAT_JPEG,
+ PICTURE_FORMAT_PNG,
+ PICTURE_FORMAT_UNKNOWN
+};
+
+enum // Columns for PictureEntryView
+{
+ PICTURE_COLUMN_PIC, // Column 0
+ PICTURE_COLUMN_TEXT,
+ PICTURE_COLUMN_DATA,
+ PICTURE_COLUMN_COUNT
+};
+
+enum // Columns for list in properties window
+{
+ PICTURE_TYPE_COLUMN_TEXT, // Column 0
+ PICTURE_TYPE_COLUMN_TYPE_CODE,
+ PICTURE_TYPE_COLUMN_COUNT
+};
+
+enum
+{
+ TARGET_URI_LIST
+};
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void Tag_Area_Picture_Drag_Data (GtkWidget *widget, GdkDragContext *dc,
+ gint x, gint y, GtkSelectionData *selection_data,
+ guint info, guint t, gpointer data);
+void Picture_Selection_Changed_cb (GtkTreeSelection *selection, gpointer data);
+
+void Picture_Add_Button_Clicked (GObject *object);
+void Picture_Properties_Button_Clicked (GObject *object);
+void Picture_Save_Button_Clicked (GObject *object);
+void Picture_Clear_Button_Clicked (GObject *object);
+
+void PictureEntry_Clear (void);
+void PictureEntry_Update (Picture *pic, gint select);
+
+Picture *Picture_Allocate (void);
+Picture *Picture_Copy_One (const Picture *pic);
+Picture *Picture_Copy (const Picture *pic);
+void Picture_Free (Picture *pic);
+gint Picture_Format (Picture *pic);
+
+gboolean Picture_Entry_View_Button_Pressed (GtkTreeView *treeview, GdkEventButton *event, gpointer data);
+gboolean Picture_Entry_View_Key_Pressed (GtkTreeView *treeview, GdkEvent *event, gpointer data);
+
+
+#endif /* __PICTURE_H__ */
diff --git a/src/prefs.c b/src/prefs.c
new file mode 100755
index 0000000..5b649e6
--- /dev/null
+++ b/src/prefs.c
@@ -0,0 +1,1857 @@
+/* prefs.c - 2000/05/06 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "prefs.h"
+#include "setting.h"
+#include "msgbox.h"
+#include "bar.h"
+#include "misc.h"
+#include "scan.h"
+#include "easytag.h"
+#include "browser.h"
+#include "cddb.h"
+#include "charset.h"
+
+//#ifdef WIN32
+//# include "win32/win32dep.h"
+//#endif
+
+
+/**************
+ * Prototypes *
+ **************/
+/* Options window */
+void OptionsWindow_Quit (void);
+void OptionsWindow_Apply_Button (void);
+void OptionsWindow_Save_Button (void);
+void OptionsWindow_Cancel_Button (void);
+gboolean OptionsWindow_Key_Press (GtkWidget *window, GdkEvent *event);
+gint Check_Config (void);
+
+void Set_Default_Comment_Check_Button_Toggled (void);
+void Number_Track_Formated_Toggled (void);
+void Number_Track_Formated_Spin_Button_Changed (GtkObject *Label, GtkObject *SpinButton);
+void Change_Id3_Settings_Toggled (void);
+void File_Writing_Id3v2_Write_Tag_Toggled(void);
+void Use_Non_Standard_Id3_Reading_Character_Set_Toggled (void);
+void Scanner_Convert_Check_Button_Toggled_1 (GtkObject *object_rec, GtkObject *object_emi);
+void Cddb_Use_Proxy_Toggled (void);
+
+void DefaultPathToMp3_Combo_Add_String (void);
+void CddbLocalPath_Combo_Add_String (void);
+
+
+
+/*************
+ * Functions *
+ *************/
+void Init_OptionsWindow (void)
+{
+ OptionsWindow = (GtkWidget *)NULL;
+}
+
+/*
+ * The window for options
+ */
+void Open_OptionsWindow (void)
+{
+ GtkWidget *OptionsVBox;
+ GtkWidget *ButtonBox;
+ GtkWidget *Button;
+ GtkWidget *Label;
+ GtkWidget *Frame;
+ GtkWidget *Table;
+ GtkWidget *VBox, *vbox;
+ GtkWidget *HBox, *hbox, *id3v1v2hbox;
+ GtkWidget *Separator;
+ GtkWidget *EventBox;
+ GtkTooltips *Tips;
+ gchar temp[MAX_STRING_LEN];
+ gchar *path_utf8;
+ gchar *program_path;
+
+ /* Check if already opened */
+ if (OptionsWindow)
+ {
+ gdk_window_show(OptionsWindow->window);
+ return;
+ }
+
+ /* The window */
+ OptionsWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ /* Config */
+ gtk_window_set_position(GTK_WINDOW(OptionsWindow),GTK_WIN_POS_CENTER);
+ gtk_window_set_transient_for(GTK_WINDOW(OptionsWindow),GTK_WINDOW(MainWindow));
+ gtk_container_set_border_width(GTK_CONTAINER(OptionsWindow), 5);
+ gtk_window_set_default_size(GTK_WINDOW(OptionsWindow),OPTIONS_WINDOW_WIDTH,OPTIONS_WINDOW_HEIGHT);
+ /* Title */
+ gtk_window_set_title(GTK_WINDOW(OptionsWindow),_("Preferences..."));
+
+ /* Signals connection */
+ g_signal_connect(G_OBJECT(OptionsWindow),"destroy", G_CALLBACK(OptionsWindow_Quit),NULL);
+ g_signal_connect(G_OBJECT(OptionsWindow),"delete_event",G_CALLBACK(OptionsWindow_Quit),NULL);
+ g_signal_connect(G_OBJECT(OptionsWindow),"key_press_event",
+ G_CALLBACK(OptionsWindow_Key_Press),NULL);
+
+ Tips = gtk_tooltips_new();
+
+ /* Options */
+ /* The vbox */
+ OptionsVBox = gtk_vbox_new(FALSE,0);
+ gtk_box_set_spacing (GTK_BOX(OptionsVBox),5);
+ gtk_container_add(GTK_CONTAINER(OptionsWindow),OptionsVBox);
+
+ /* Options NoteBook */
+ OptionsNoteBook = gtk_notebook_new();
+ gtk_notebook_popup_enable(GTK_NOTEBOOK(OptionsNoteBook));
+ gtk_notebook_set_scrollable(GTK_NOTEBOOK(OptionsNoteBook),TRUE);
+ gtk_box_pack_start(GTK_BOX(OptionsVBox),OptionsNoteBook,TRUE,TRUE,0);
+
+
+
+ /*
+ * Browser
+ */
+ Label = gtk_label_new(_("Browser"));
+ Frame = gtk_frame_new(_("Browser"));
+ gtk_notebook_append_page(GTK_NOTEBOOK(OptionsNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 5);
+
+ VBox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+
+
+ /* File Browser frame */
+ Frame = gtk_frame_new(_("File Browser"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ /* Default directory */
+ HBox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),HBox,FALSE,FALSE,0);
+
+ // Label
+ Label = gtk_label_new(_("Default directory :"));
+ gtk_box_pack_start(GTK_BOX(HBox),Label,FALSE,FALSE,0);
+
+ // Combo
+ if (DefaultPathModel != NULL)
+ gtk_list_store_clear(DefaultPathModel);
+ else
+ DefaultPathModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+
+ DefaultPathToMp3 = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(DefaultPathModel), MISC_COMBO_TEXT);
+ gtk_box_pack_start(GTK_BOX(HBox),DefaultPathToMp3,TRUE,TRUE,0);
+ gtk_widget_set_size_request(DefaultPathToMp3, 400, -1);
+ gtk_tooltips_set_tip(Tips,GTK_BIN(DefaultPathToMp3)->child,_("Specify the directory where "
+ "your files are located. This path will be loaded when EasyTAG starts without parameter."),NULL);
+ g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_BIN(DefaultPathToMp3)->child)),"activate",G_CALLBACK(DefaultPathToMp3_Combo_Add_String),NULL);
+ //g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_BIN(DefaultPathToMp3)->child)),"focus_out_event",G_CALLBACK(DefaultPathToMp3_Combo_Add_String),NULL);
+
+ // History list
+ Load_Default_Path_To_MP3_List(DefaultPathModel, MISC_COMBO_TEXT);
+ // If default path hasn't been added already, add it now..
+ path_utf8 = filename_to_display(DEFAULT_PATH_TO_MP3);
+ Add_String_To_Combo_List(DefaultPathModel, path_utf8);
+ if (path_utf8)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(DefaultPathToMp3)->child), path_utf8);
+ g_free(path_utf8);
+
+ // Button browse
+ Button = Create_Button_With_Pixmap(BUTTON_BROWSE);
+ gtk_box_pack_start(GTK_BOX(HBox),Button,FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(File_Selection_Window_For_Directory),G_OBJECT(GTK_BIN(DefaultPathToMp3)->child));
+
+ /* Load directory on startup */
+ LoadOnStartup = gtk_check_button_new_with_label(_("Load on startup the default directory or the directory passed as argument"));
+ gtk_box_pack_start(GTK_BOX(vbox),LoadOnStartup,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LoadOnStartup),LOAD_ON_STARTUP);
+ gtk_tooltips_set_tip(Tips,LoadOnStartup,_("Automatically search files, when EasyTAG starts, "
+ "into the default directory. Note that this path may be overriden by the parameter "
+ "passed to easytag (easytag /path_to/mp3_files)."),NULL);
+
+ /* Browse subdirectories */
+ BrowseSubdir = gtk_check_button_new_with_label(_("Search subdirectories"));
+ gtk_box_pack_start(GTK_BOX(vbox),BrowseSubdir,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(BrowseSubdir),BROWSE_SUBDIR);
+ gtk_tooltips_set_tip(Tips,BrowseSubdir,_("Search subdirectories for files when reading "
+ "a directory into the tree."),NULL);
+
+ /* Open the node to show subdirectories */
+ OpenSelectedBrowserNode = gtk_check_button_new_with_label(_("Show subdirectories when selecting "
+ "a directory"));
+ gtk_box_pack_start(GTK_BOX(vbox),OpenSelectedBrowserNode,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(OpenSelectedBrowserNode),OPEN_SELECTED_BROWSER_NODE);
+ gtk_tooltips_set_tip(Tips,OpenSelectedBrowserNode,_("This expands the selected node into the file "
+ "browser to display the sub-directories."),NULL);
+
+ /* Browse hidden directories */
+ BrowseHiddendir = gtk_check_button_new_with_label(_("Search hidden directories"));
+#ifndef WIN32 /* Always true and not user modifiable on win32 */
+ gtk_box_pack_start(GTK_BOX(vbox),BrowseHiddendir,FALSE,FALSE,0);
+#endif
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(BrowseHiddendir),BROWSE_HIDDEN_DIR);
+ gtk_tooltips_set_tip(Tips,BrowseHiddendir,_("Search hidden directories for files "
+ "(directories starting by a '.')."),NULL);
+
+
+
+ /*
+ * Misc
+ */
+ Label = gtk_label_new (_("Misc"));
+ Frame = gtk_frame_new (_("Misc"));
+ gtk_notebook_append_page (GTK_NOTEBOOK(OptionsNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 5);
+
+ VBox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+
+
+ /* User interface */
+ Frame = gtk_frame_new (_("User Interface"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ // Show header infos
+ ShowHeaderInfos = gtk_check_button_new_with_label(_("Show header informations of file"));
+ gtk_box_pack_start(GTK_BOX(vbox),ShowHeaderInfos,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ShowHeaderInfos),SHOW_HEADER_INFO);
+ gtk_tooltips_set_tip(Tips,ShowHeaderInfos,_("If activated, informations about the file as "
+ "the bitrate, the time, the size, will be displayed under the filename entry."),NULL);
+
+ // Display color mode for changed files in list
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 2);
+ Label = gtk_label_new(_("Display changed files in list using :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ ChangedFilesDisplayedToRed = gtk_radio_button_new_with_label(NULL,_("Red color"));
+ gtk_box_pack_start(GTK_BOX(hbox),ChangedFilesDisplayedToRed,FALSE,FALSE,4);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ChangedFilesDisplayedToRed),CHANGED_FILES_DISPLAYED_TO_RED);
+
+ // Set "new" Gtk+-2.0ish black/bold style for changed items
+ ChangedFilesDisplayedToBold = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(ChangedFilesDisplayedToRed)),_("Bold style"));
+ gtk_box_pack_start(GTK_BOX(hbox),ChangedFilesDisplayedToBold,FALSE,FALSE,2);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ChangedFilesDisplayedToBold),CHANGED_FILES_DISPLAYED_TO_BOLD);
+
+
+ /* Sorting List Options */
+ Frame = gtk_frame_new (_("Sorting List Options"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 2);
+ /* Sorting method */
+ Label = gtk_label_new(_("Sort the file list by :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ EventBox = gtk_event_box_new();
+ SortingFileCombo = gtk_combo_box_new_text();
+ gtk_container_add(GTK_CONTAINER(EventBox),SortingFileCombo);
+ gtk_box_pack_start(GTK_BOX(hbox),EventBox,FALSE,FALSE,2);
+ gtk_widget_set_size_request(GTK_WIDGET(SortingFileCombo), 260, -1);
+ gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(SortingFileCombo),2); // Two columns
+
+ // Items of option menu
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending file name"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending file name"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending track number"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending track number"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending creation date"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending creation date"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending title"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending title"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending artist"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending artist"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending album"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending album"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending year"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending year"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending genre"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending genre"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Ascending comment"));
+ gtk_combo_box_append_text(GTK_COMBO_BOX(SortingFileCombo), _("Descending comment"));
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(SortingFileCombo), SORTING_FILE_MODE);
+ gtk_tooltips_set_tip(Tips,EventBox,_("Select the type of file sorting "
+ "when loading a directory."),NULL);
+
+ SortingFileCaseSensitive = gtk_check_button_new_with_label(_("Case sensitive"));
+#ifndef WIN32 /* Always true and not user modifiable on win32, as strncasecmp() doesn't work correctly with g_utf8_collate_key() */
+ gtk_box_pack_start(GTK_BOX(hbox),SortingFileCaseSensitive,FALSE,FALSE,0);
+#endif
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SortingFileCaseSensitive),
+ SORTING_FILE_CASE_SENSITIVE);
+ gtk_tooltips_set_tip(Tips,SortingFileCaseSensitive,_("If activated, the "
+ "sorting of the list will be dependent on the case."),NULL);
+
+ /* Message Dialog Position */
+ Frame = gtk_frame_new (_("Message Dialog Position"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ Table = gtk_table_new(2,2,FALSE);
+ gtk_container_add(GTK_CONTAINER(Frame),Table);
+ //gtk_table_set_row_spacings(GTK_TABLE(Table),2);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),4);
+
+
+ MessageBoxPositionNone = gtk_radio_button_new_with_label(NULL,_("No particular position"));
+ gtk_table_attach(GTK_TABLE(Table),MessageBoxPositionNone,0,1,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(MessageBoxPositionNone),
+ MESSAGE_BOX_POSITION_NONE);
+ gtk_tooltips_set_tip(Tips,MessageBoxPositionNone,_("Let the Window Manager "
+ "to place the windows."),NULL);
+
+ MessageBoxPositionCenterOnParent = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(MessageBoxPositionNone)),
+ _("Center of the main window"));
+ gtk_table_attach(GTK_TABLE(Table),MessageBoxPositionCenterOnParent,1,2,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(MessageBoxPositionCenterOnParent),
+ MESSAGE_BOX_POSITION_CENTER_ON_PARENT);
+ gtk_tooltips_set_tip(Tips,MessageBoxPositionCenterOnParent,_("Windows should "
+ "be placed in the center of the main window."),NULL);
+
+ MessageBoxPositionCenter = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(MessageBoxPositionNone)),
+ _("Center of the screen"));
+ gtk_table_attach(GTK_TABLE(Table),MessageBoxPositionCenter,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(MessageBoxPositionCenter),
+ MESSAGE_BOX_POSITION_CENTER);
+ gtk_tooltips_set_tip(Tips,MessageBoxPositionCenter,_("Windows should be placed "
+ "in the center of the screen."),NULL);
+
+ MessageBoxPositionMouse = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(MessageBoxPositionNone)),
+ _("Mouse position"));
+ gtk_table_attach(GTK_TABLE(Table),MessageBoxPositionMouse,1,2,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(MessageBoxPositionMouse),
+ MESSAGE_BOX_POSITION_MOUSE);
+ gtk_tooltips_set_tip(Tips,MessageBoxPositionMouse,_("Windows should be placed "
+ "at the current mouse position."),NULL);
+
+ /* File Player */
+ Frame = gtk_frame_new (_("File Audio Player"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+
+ // Player name with params
+ if (FilePlayerModel == NULL)
+ FilePlayerModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(FilePlayerModel);
+
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),hbox);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
+ Label = gtk_label_new (_("Player to run :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+ FilePlayerCombo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(FilePlayerModel), MISC_COMBO_TEXT);
+ gtk_widget_set_size_request(GTK_WIDGET(FilePlayerCombo), 300, -1);
+ gtk_box_pack_start(GTK_BOX(hbox),FilePlayerCombo,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,GTK_BIN(FilePlayerCombo)->child,_("Enter the program used to "
+ "play the files. Some arguments can be passed for the program (as 'xmms -p') before "
+ "to receive files as other arguments."),NULL);
+ // History List
+ Load_Audio_File_Player_List(FilePlayerModel, MISC_COMBO_TEXT);
+ Add_String_To_Combo_List(FilePlayerModel, AUDIO_FILE_PLAYER);
+ // Don't load the parameter if XMMS not found, else user can't save the preference
+ if ( (program_path=Check_If_Executable_Exists(AUDIO_FILE_PLAYER)))
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(FilePlayerCombo)->child), AUDIO_FILE_PLAYER);
+ g_free(program_path);
+
+ // Button browse
+ Button = Create_Button_With_Pixmap(BUTTON_BROWSE);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(File_Selection_Window_For_File), G_OBJECT(GTK_BIN(FilePlayerCombo)->child));
+
+
+
+ /*
+ * File Settings
+ */
+ Label = gtk_label_new (_("File Settings"));
+ Frame = gtk_frame_new (_("File Settings"));
+ gtk_notebook_append_page (GTK_NOTEBOOK(OptionsNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),5);
+
+ VBox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox),4);
+
+
+ /* File (name) Options */
+ Frame = gtk_frame_new (_("File Options"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ ReplaceIllegalCharactersInFilename = gtk_check_button_new_with_label(_("Replace illegal characters in filename (for Windows and CD-Rom)"));
+ gtk_box_pack_start(GTK_BOX(vbox),ReplaceIllegalCharactersInFilename,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ReplaceIllegalCharactersInFilename),REPLACE_ILLEGAL_CHARACTERS_IN_FILENAME);
+ gtk_tooltips_set_tip(Tips,ReplaceIllegalCharactersInFilename,_("Convert illegal characters for "
+ "FAT32/16 and ISO9660 + Joliet filesystems ('\\', ':', ';', '*', '?', '\"', '<', '>', '|') "
+ "of the filename to avoid problem when renaming the file. This is usefull when renaming the "
+ "file from the tag with the scanner."),NULL);
+
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 2);
+ /* Extension case (lower/upper?) */
+ Label = gtk_label_new(_("Convert filename extension to :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,0);
+
+ FilenameExtensionLowerCase = gtk_radio_button_new_with_label(NULL,_("Lower Case"));
+ gtk_box_pack_start(GTK_BOX(hbox),FilenameExtensionLowerCase,FALSE,FALSE,2);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FilenameExtensionLowerCase),FILENAME_EXTENSION_LOWER_CASE);
+ gtk_tooltips_set_tip(Tips,FilenameExtensionLowerCase,_("For example, the extension will be converted to '.mp3'"),NULL);
+
+ FilenameExtensionUpperCase = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FilenameExtensionLowerCase)),_("Upper Case"));
+ gtk_box_pack_start(GTK_BOX(hbox),FilenameExtensionUpperCase,FALSE,FALSE,2);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FilenameExtensionUpperCase),FILENAME_EXTENSION_UPPER_CASE);
+ gtk_tooltips_set_tip(Tips,FilenameExtensionUpperCase,_("For example, the extension will be converted to '.MP3'"),NULL);
+
+ FilenameExtensionNoChange = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FilenameExtensionLowerCase)),_("No Change"));
+ gtk_box_pack_start(GTK_BOX(hbox),FilenameExtensionNoChange,FALSE,FALSE,2);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FilenameExtensionNoChange),FILENAME_EXTENSION_NO_CHANGE);
+ gtk_tooltips_set_tip(Tips,FilenameExtensionNoChange,_("The extension will not be converted"),NULL);
+
+ /* Preserve modification time */
+ PreserveModificationTime = gtk_check_button_new_with_label(_("Preserve modification time of the file"));
+ gtk_box_pack_start(GTK_BOX(vbox),PreserveModificationTime,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(PreserveModificationTime),PRESERVE_MODIFICATION_TIME);
+ gtk_tooltips_set_tip(Tips,PreserveModificationTime,_("Preserve the modification time "
+ "(in file properties) when saving the file."),NULL);
+
+
+ /* Character Set for File Name */
+ Frame = gtk_frame_new (_("Character Set for File Name"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ /****hbox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 2);***/
+
+ Table = gtk_table_new(4,2,FALSE);
+ gtk_box_pack_start(GTK_BOX(vbox),Table,FALSE,FALSE,0);
+ //gtk_table_set_row_spacings(GTK_TABLE(Table),2);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),2);
+
+ /* Rules for character set */
+ Label = gtk_label_new(_("Rules to apply if some characters can't be converted to "
+ "the system character encoding when writing filename:"));
+ gtk_table_attach(GTK_TABLE(Table),Label,0,2,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+
+ Label = gtk_label_new(" ");
+ gtk_table_attach(GTK_TABLE(Table),Label,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+
+ FilenameCharacterSetOther = gtk_radio_button_new_with_label(NULL,_("Try an other "
+ "character encoding"));
+ gtk_table_attach(GTK_TABLE(Table),FilenameCharacterSetOther,1,2,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FilenameCharacterSetOther),FILENAME_CHARACTER_SET_OTHER);
+ gtk_tooltips_set_tip(Tips,FilenameCharacterSetOther,_("With this option, it will "
+ "try the conversion to the encoding associated to your locale (for example : "
+ "ISO-8859-1 for 'fr', KOI8-R for 'ru', ISO-8859-2 for 'ro'). If it fails, it "
+ "will try the character encoding ISO-8859-1."),NULL);
+
+ FilenameCharacterSetApproximate = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FilenameCharacterSetOther)),
+ _("Force using the system character encoding and activate the transliteration"));
+ gtk_table_attach(GTK_TABLE(Table),FilenameCharacterSetApproximate,1,2,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FilenameCharacterSetApproximate),FILENAME_CHARACTER_SET_APPROXIMATE);
+ gtk_tooltips_set_tip(Tips,FilenameCharacterSetApproximate,_("With this option, when "
+ "a character cannot be represented in the target character set, it can be "
+ "approximated through one or several similarly looking characters."),NULL);
+
+ FilenameCharacterSetDiscard = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FilenameCharacterSetOther)),
+ _("Force using the system character encoding and silently discard some characters"));
+ gtk_table_attach(GTK_TABLE(Table),FilenameCharacterSetDiscard,1,2,3,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FilenameCharacterSetDiscard),FILENAME_CHARACTER_SET_DISCARD);
+ gtk_tooltips_set_tip(Tips,FilenameCharacterSetDiscard,_("With this option, when "
+ "a characters cannot be represented in the target character set, it will "
+ "be silently discarded."),NULL);
+
+
+
+ /*
+ * Tag Settings
+ */
+ Label = gtk_label_new (_("Tag Settings"));
+ Frame = gtk_frame_new (_("Tag Settings"));
+ gtk_notebook_append_page (GTK_NOTEBOOK(OptionsNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),5);
+
+ VBox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox),4);
+
+ /* Tag Options */
+ Frame = gtk_frame_new (_("Tag Options"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ DateAutoCompletion = gtk_check_button_new_with_label(_("Auto completion of date if not complete"));
+ gtk_box_pack_start(GTK_BOX(vbox),DateAutoCompletion,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(DateAutoCompletion),DATE_AUTO_COMPLETION);
+ gtk_tooltips_set_tip(Tips,DateAutoCompletion,_("Try to complete the year field if you enter "
+ "only the last numerals of the date (for instance, if the current year is 2005: "
+ "5 => 2005, 4 => 2004, 6 => 1996, 95 => 1995, ...)."),NULL);
+
+ hbox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+
+ NumberTrackFormated = gtk_check_button_new_with_label(_("Write the track field with the following number of digits :"));
+ gtk_box_pack_start(GTK_BOX(hbox),NumberTrackFormated,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(NumberTrackFormated),NUMBER_TRACK_FORMATED);
+ gtk_tooltips_set_tip(Tips,NumberTrackFormated,_("If activated, the track field is written using "
+ "the number '0' as padding to obtain a number with 'n' digits (Ex. with two digits : '05', "
+ "'09', '10',...). Else it keeps the 'raw' track value."),NULL);
+
+ NumberTrackFormatedSpinButton = gtk_spin_button_new((GtkAdjustment *)gtk_adjustment_new(2.0,2.0,6.0,1.0,1.0,1.0),1.0,0);
+ gtk_box_pack_start(GTK_BOX(hbox),NumberTrackFormatedSpinButton,FALSE,FALSE,0);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(NumberTrackFormatedSpinButton),(gfloat)NUMBER_TRACK_FORMATED_SPIN_BUTTON);
+ g_signal_connect(G_OBJECT(NumberTrackFormated),"toggled",G_CALLBACK(Number_Track_Formated_Toggled),NULL);
+ g_signal_emit_by_name(G_OBJECT(NumberTrackFormated),"toggled");
+
+ Label = gtk_label_new(""); // Label to show the example
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,4);
+ g_signal_connect_swapped(G_OBJECT(NumberTrackFormatedSpinButton),"changed",G_CALLBACK(Number_Track_Formated_Spin_Button_Changed),G_OBJECT(Label));
+ g_signal_emit_by_name(G_OBJECT(NumberTrackFormatedSpinButton),"changed",NULL);
+
+ OggTagWriteXmmsComment = gtk_check_button_new_with_label(_("Ogg Vorbis Files : Write also the comment to the XMMS format"));
+ gtk_box_pack_start(GTK_BOX(vbox),OggTagWriteXmmsComment,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(OggTagWriteXmmsComment),OGG_TAG_WRITE_XMMS_COMMENT);
+ gtk_tooltips_set_tip(Tips,OggTagWriteXmmsComment,_("XMMS doesn't make use of the right way to "
+ "identify a comment in Ogg Vorbis files as other apps do. In fact, this field is usually labeled "
+ "with 'comment=', whereas XMMS uses only `='. Please, uncheck this option if you don't want "
+ "other apps to complain about an unknown field. Comments won't be shown in XMMS, though."),NULL);
+
+ // Separator line
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(vbox),Separator,FALSE,FALSE,0);
+
+ /* Tag field focus */
+ Table = gtk_table_new(2,3,FALSE);
+ gtk_box_pack_start(GTK_BOX(vbox),Table,FALSE,FALSE,0);
+ //gtk_table_set_row_spacings(GTK_TABLE(Table),2);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),2);
+
+ Label = gtk_label_new(_("Tag field focus when switching files in list with "
+ "shortcuts Page Up/Page Down:"));
+ gtk_table_attach(GTK_TABLE(Table),Label,0,2,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+
+ Label = gtk_label_new(" ");
+ gtk_table_attach(GTK_TABLE(Table),Label,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+
+ SetFocusToSameTagField = gtk_radio_button_new_with_label(NULL,
+ _("Keep focus to the same tag field"));
+ gtk_table_attach(GTK_TABLE(Table),SetFocusToSameTagField,1,2,1,2,GTK_FILL,GTK_FILL,0,0);
+ //gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToSameTagField),SET_FOCUS_TO_SAME_TAG_FIELD);
+
+ SetFocusToFirstTagField = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(SetFocusToSameTagField)),
+ _("Return focus to the first tag field (ie 'Title' field)"));
+ gtk_table_attach(GTK_TABLE(Table),SetFocusToFirstTagField,1,2,2,3,GTK_FILL,GTK_FILL,0,0);
+ //gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetFocusToFirstTagField),SET_FOCUS_TO_FIRST_TAG_FIELD);
+
+
+ /*
+ * ID3 Tag Settings
+ */
+ Label = gtk_label_new (_("ID3 Tag Settings"));
+ Frame = gtk_frame_new (_("ID3 Tag Settings"));
+#ifdef ENABLE_MP3
+ gtk_notebook_append_page (GTK_NOTEBOOK(OptionsNoteBook),Frame,Label);
+#endif
+ gtk_container_set_border_width(GTK_CONTAINER(Frame),5);
+
+ VBox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox),4);
+
+
+ /* Tag Rules frame */
+ Frame = gtk_frame_new (_("ID3 Tag Rules"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox),2);
+
+ Table = gtk_table_new(3,2,FALSE);
+ gtk_box_pack_start(GTK_BOX(vbox),Table,FALSE,FALSE,0);
+ gtk_table_set_row_spacings(GTK_TABLE(Table),2);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),2);
+
+ /* Write ID3 tags in FLAC files */
+ WriteId3TagsInFlacFiles = gtk_check_button_new_with_label(_("Write ID3 tags in FLAC files (in addition to FLAC tag)"));
+ gtk_table_attach(GTK_TABLE(Table),WriteId3TagsInFlacFiles,0,1,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(WriteId3TagsInFlacFiles),WRITE_ID3_TAGS_IN_FLAC_FILE);
+ gtk_tooltips_set_tip(Tips,WriteId3TagsInFlacFiles,_("If activated, ID3 tags will be "
+ "also added in the FLAC file (according the two rules above, plus the FLAC tag). "
+ "Else ID3 tags will be stripped."),NULL);
+
+ /* Strip tag when fields (managed by EasyTAG) are empty */
+ StripTagWhenEmptyFields = gtk_check_button_new_with_label(_("Strip tags if all fields are set to blank"));
+ gtk_table_attach(GTK_TABLE(Table),StripTagWhenEmptyFields,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(StripTagWhenEmptyFields),STRIP_TAG_WHEN_EMPTY_FIELDS);
+ gtk_tooltips_set_tip(Tips,StripTagWhenEmptyFields,_("As ID3v2 tags may contain other data than "
+ "Title, Artist, Album, Year, Track, Genre or Comment (as an attached picture, lyrics, ...), "
+ "this option allows you to strip the whole tag when these seven standard data fields have "
+ "been set to blank."),NULL);
+
+ /* Convert old ID3v2 tag version */
+ ConvertOldId3v2TagVersion = gtk_check_button_new_with_label(_("Automatically convert old ID3v2 tag versions"));
+ gtk_table_attach(GTK_TABLE(Table),ConvertOldId3v2TagVersion,0,1,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ConvertOldId3v2TagVersion),CONVERT_OLD_ID3V2_TAG_VERSION);
+ gtk_tooltips_set_tip(Tips,ConvertOldId3v2TagVersion,_("If activated, an old ID3v2 tag version (as "
+ "ID3v2.2) will be updated to the ID3v2.3 version."),NULL);
+
+ /* Use CRC32 */
+ FileWritingId3v2UseCrc32 = gtk_check_button_new_with_label(_("Use CRC32"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v2UseCrc32,1,2,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v2UseCrc32),FILE_WRITING_ID3V2_USE_CRC32);
+ gtk_tooltips_set_tip(Tips,FileWritingId3v2UseCrc32,_("Set CRC32 in the ID3v2 tags"),NULL);
+
+ /* Use Compression */
+ FileWritingId3v2UseCompression = gtk_check_button_new_with_label(_("Use Compression"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v2UseCompression,1,2,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v2UseCompression),FILE_WRITING_ID3V2_USE_COMPRESSION);
+ gtk_tooltips_set_tip(Tips,FileWritingId3v2UseCompression,_("Set Compression in the ID3v2 tags"),NULL);
+
+ /* Character Set for writing ID3 tag */
+ Frame = gtk_frame_new (_("Character Set for writing ID3 tags"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ id3v1v2hbox = gtk_hbox_new(FALSE,3);
+ gtk_container_add(GTK_CONTAINER(Frame),id3v1v2hbox);
+ gtk_container_set_border_width(GTK_CONTAINER(id3v1v2hbox), 2);
+
+ // ID3v2 tags
+ Frame = gtk_frame_new (_("ID3v2 tags"));
+ gtk_box_pack_start(GTK_BOX(id3v1v2hbox),Frame,FALSE,FALSE,2);
+
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox),2);
+
+ Table = gtk_table_new(8,6,FALSE);
+ gtk_box_pack_start(GTK_BOX(vbox),Table,FALSE,FALSE,0);
+ gtk_table_set_row_spacings(GTK_TABLE(Table),2);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),2);
+
+ /* Write ID3v2 tag */
+ FileWritingId3v2WriteTag = gtk_check_button_new_with_label(_("Write ID3v2 tag"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v2WriteTag,0,5,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v2WriteTag),FILE_WRITING_ID3V2_WRITE_TAG);
+ gtk_tooltips_set_tip(Tips,FileWritingId3v2WriteTag,_("If activated, an ID3v2.4 tag will be added or "
+ "updated at the beginning of the MP3 files. Else it will be stripped."),NULL);
+ g_signal_connect_after(G_OBJECT(FileWritingId3v2WriteTag),"toggled",
+ G_CALLBACK(Change_Id3_Settings_Toggled),NULL);
+
+#ifdef ENABLE_ID3LIB
+ /* ID3v2 tag version */
+ LabelId3v2Version = gtk_label_new(_("Version:"));
+ gtk_table_attach(GTK_TABLE(Table),LabelId3v2Version,0,2,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(LabelId3v2Version),0,0.5);
+
+ EventBox = gtk_event_box_new();
+ FileWritingId3v2VersionCombo = gtk_combo_box_new_text();
+ gtk_container_add(GTK_CONTAINER(EventBox),FileWritingId3v2VersionCombo);
+ gtk_tooltips_set_tip(Tips,EventBox,_("Select the ID3v2 tag version to write:\n"
+ " - ID3v2.3 is written using id3lib,\n"
+ " - ID3v2.4 is written using libid3tag (recommended)."),NULL);
+ gtk_combo_box_append_text(GTK_COMBO_BOX(FileWritingId3v2VersionCombo), "ID3v2.4");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(FileWritingId3v2VersionCombo), "ID3v2.3");
+ gtk_combo_box_set_active(GTK_COMBO_BOX(FileWritingId3v2VersionCombo),
+ FILE_WRITING_ID3V2_VERSION_4 ? 0 : 1);
+ gtk_table_attach(GTK_TABLE(Table),EventBox,2,4,1,2,GTK_FILL,GTK_FILL,0,0);
+ g_signal_connect_after(G_OBJECT(FileWritingId3v2VersionCombo),"changed",
+ G_CALLBACK(Change_Id3_Settings_Toggled),NULL);
+#endif
+
+
+ /* Charset */
+ LabelId3v2Charset = gtk_label_new(_("Charset:"));
+ gtk_table_attach(GTK_TABLE(Table),LabelId3v2Charset,0,5,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(LabelId3v2Charset),0,0.5);
+
+ Label = gtk_label_new(" ");
+ gtk_table_attach(GTK_TABLE(Table),Label,0,1,3,4,GTK_FILL,GTK_FILL,0,0);
+
+ // Unicode
+ FileWritingId3v2UseUnicodeCharacterSet = gtk_radio_button_new_with_label(NULL, _("Unicode "));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v2UseUnicodeCharacterSet),
+ FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET);
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v2UseUnicodeCharacterSet,1,2,3,4,GTK_FILL,GTK_FILL,0,0);
+
+ EventBox = gtk_event_box_new();
+ FileWritingId3v2UnicodeCharacterSetCombo = gtk_combo_box_new_text();
+ gtk_container_add(GTK_CONTAINER(EventBox),FileWritingId3v2UnicodeCharacterSetCombo);
+ gtk_tooltips_set_tip(Tips,EventBox,_("Unicode type to use"),NULL);
+ gtk_combo_box_append_text(GTK_COMBO_BOX(FileWritingId3v2UnicodeCharacterSetCombo), "UTF-8");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(FileWritingId3v2UnicodeCharacterSetCombo), "UTF-16");
+ if ( FILE_WRITING_ID3V2_UNICODE_CHARACTER_SET == NULL )
+ gtk_combo_box_set_active(GTK_COMBO_BOX(FileWritingId3v2UnicodeCharacterSetCombo), 0);
+ else
+ gtk_combo_box_set_active(GTK_COMBO_BOX(FileWritingId3v2UnicodeCharacterSetCombo),
+ strcmp(FILE_WRITING_ID3V2_UNICODE_CHARACTER_SET, "UTF-8") ? 1 : 0);
+ gtk_table_attach(GTK_TABLE(Table),EventBox,2,4,3,4,GTK_FILL,GTK_FILL,0,0);
+ g_signal_connect_after(G_OBJECT(FileWritingId3v2UseUnicodeCharacterSet),"toggled",
+ G_CALLBACK(Change_Id3_Settings_Toggled),NULL);
+
+ // Non-unicode
+ FileWritingId3v2UseNoUnicodeCharacterSet = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FileWritingId3v2UseUnicodeCharacterSet)),
+ _("Other"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v2UseNoUnicodeCharacterSet,1,2,4,5,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v2UseNoUnicodeCharacterSet),
+ !FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET);
+
+ EventBox = gtk_event_box_new();
+ FileWritingId3v2NoUnicodeCharacterSetCombo = gtk_combo_box_new_text();
+ gtk_container_add(GTK_CONTAINER(EventBox),FileWritingId3v2NoUnicodeCharacterSetCombo);
+ gtk_tooltips_set_tip(Tips,EventBox,_("Character set used to write the tag "
+ "data in the file."),NULL);
+
+ Charset_Populate_Combobox(GTK_COMBO_BOX(FileWritingId3v2NoUnicodeCharacterSetCombo),
+ FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET);
+ gtk_table_attach(GTK_TABLE(Table),EventBox,2,5,4,5,GTK_FILL,GTK_FILL,0,0);
+ g_signal_connect_after(G_OBJECT(FileWritingId3v2UseNoUnicodeCharacterSet),"toggled",
+ G_CALLBACK(Change_Id3_Settings_Toggled),NULL);
+
+ // ID3v2 Additional iconv() options
+ LabelAdditionalId3v2IconvOptions = gtk_label_new(_("Additional settings for iconv():"));
+ gtk_table_attach(GTK_TABLE(Table),LabelAdditionalId3v2IconvOptions,2,5,5,6,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(LabelAdditionalId3v2IconvOptions),0,0.5);
+
+ FileWritingId3v2IconvOptionsNo = gtk_radio_button_new_with_label(NULL, _("No"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v2IconvOptionsNo,2,3,6,7,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v2IconvOptionsNo),FILE_WRITING_ID3V2_ICONV_OPTIONS_NO);
+ FileWritingId3v2IconvOptionsTranslit = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FileWritingId3v2IconvOptionsNo)),
+ _("//TRANSLIT"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v2IconvOptionsTranslit,3,4,6,7,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v2IconvOptionsTranslit),FILE_WRITING_ID3V2_ICONV_OPTIONS_TRANSLIT);
+ gtk_tooltips_set_tip(Tips,FileWritingId3v2IconvOptionsTranslit,_("With this option, when "
+ "a character cannot be represented in the target character set, it can be "
+ "approximated through one or several similarly looking characters."),NULL);
+
+ FileWritingId3v2IconvOptionsIgnore = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FileWritingId3v2IconvOptionsNo)),
+ _("//IGNORE"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v2IconvOptionsIgnore,4,5,6,7,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v2IconvOptionsIgnore),FILE_WRITING_ID3V2_ICONV_OPTIONS_IGNORE);
+ gtk_tooltips_set_tip(Tips,FileWritingId3v2IconvOptionsIgnore,_("With this option, when "
+ "a characters cannot be represented in the target character set, it will "
+ "be silently discarded."),NULL);
+
+ // ID3v1 tags
+ Frame = gtk_frame_new (_("ID3v1 tags"));
+ gtk_box_pack_start(GTK_BOX(id3v1v2hbox),Frame,FALSE,FALSE,2);
+
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox),2);
+
+ Table = gtk_table_new(6,5,FALSE);
+ gtk_box_pack_start(GTK_BOX(vbox),Table,FALSE,FALSE,0);
+ gtk_table_set_row_spacings(GTK_TABLE(Table),2);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),2);
+
+
+ /* Write ID3v1 tag */
+ FileWritingId3v1WriteTag = gtk_check_button_new_with_label(_("Write ID3v1.x tag"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v1WriteTag,0,4,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v1WriteTag),FILE_WRITING_ID3V1_WRITE_TAG);
+ gtk_tooltips_set_tip(Tips,FileWritingId3v1WriteTag,_("If activated, an ID3v1 tag will be added or "
+ "updated at the end of the MP3 files. Else it will be stripped."),NULL);
+ g_signal_connect_after(G_OBJECT(FileWritingId3v1WriteTag),"toggled",
+ G_CALLBACK(Change_Id3_Settings_Toggled),NULL);
+
+ /* Id3V1 writing character set */
+ LabelId3v1Charset = gtk_label_new(_("Charset:"));
+ gtk_table_attach(GTK_TABLE(Table),LabelId3v1Charset,0,4,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(LabelId3v1Charset),0,0.5);
+
+ Label = gtk_label_new(" ");
+ gtk_table_attach(GTK_TABLE(Table),Label,0,1,2,3,GTK_FILL,GTK_FILL,0,0);
+
+ EventBox = gtk_event_box_new();
+ FileWritingId3v1CharacterSetCombo = gtk_combo_box_new_text();
+ gtk_container_add(GTK_CONTAINER(EventBox),FileWritingId3v1CharacterSetCombo);
+ gtk_table_attach(GTK_TABLE(Table),EventBox,1,4,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_tooltips_set_tip(Tips,EventBox,_("Character set used to write ID3v1 tag data "
+ "in the file."),NULL);
+ Charset_Populate_Combobox(GTK_COMBO_BOX(FileWritingId3v1CharacterSetCombo), FILE_WRITING_ID3V1_CHARACTER_SET);
+
+ /* ID3V1 Additional iconv() options*/
+ LabelAdditionalId3v1IconvOptions = gtk_label_new(_("Additional settings for iconv():"));
+ gtk_table_attach(GTK_TABLE(Table),LabelAdditionalId3v1IconvOptions,1,4,3,4,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(LabelAdditionalId3v1IconvOptions),0,0.5);
+
+ FileWritingId3v1IconvOptionsNo = gtk_radio_button_new_with_label(NULL,
+ _("No"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v1IconvOptionsNo,1,2,4,5,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v1IconvOptionsNo),FILE_WRITING_ID3V1_ICONV_OPTIONS_NO);
+ FileWritingId3v1IconvOptionsTranslit = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FileWritingId3v1IconvOptionsNo)),
+ _("//TRANSLIT"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v1IconvOptionsTranslit,2,3,4,5,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v1IconvOptionsTranslit),FILE_WRITING_ID3V1_ICONV_OPTIONS_TRANSLIT);
+ gtk_tooltips_set_tip(Tips,FileWritingId3v1IconvOptionsTranslit,_("With this option, when "
+ "a character cannot be represented in the target character set, it can be "
+ "approximated through one or several similarly looking characters."),NULL);
+
+ FileWritingId3v1IconvOptionsIgnore = gtk_radio_button_new_with_label(
+ gtk_radio_button_get_group(GTK_RADIO_BUTTON(FileWritingId3v1IconvOptionsNo)),
+ _("//IGNORE"));
+ gtk_table_attach(GTK_TABLE(Table),FileWritingId3v1IconvOptionsIgnore,3,4,4,5,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FileWritingId3v1IconvOptionsIgnore),FILE_WRITING_ID3V1_ICONV_OPTIONS_IGNORE);
+ gtk_tooltips_set_tip(Tips,FileWritingId3v1IconvOptionsIgnore,_("With this option, when "
+ "a characters cannot be represented in the target character set, it will "
+ "be silently discarded."),NULL);
+
+ /* Character Set for reading tag */
+ Frame = gtk_frame_new (_("Character Set for reading ID3 tags"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ Table = gtk_table_new(4,2,FALSE);
+ gtk_box_pack_start(GTK_BOX(vbox),Table,FALSE,FALSE,0);
+ //gtk_table_set_row_spacings(GTK_TABLE(Table),2);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),2);
+
+ // "File Reading Charset" Check Button + Combo
+ UseNonStandardId3ReadingCharacterSet = gtk_check_button_new_with_label(_(
+ "Non-standart:"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(UseNonStandardId3ReadingCharacterSet),
+ USE_NON_STANDARD_ID3_READING_CHARACTER_SET);
+ gtk_table_attach(GTK_TABLE(Table),UseNonStandardId3ReadingCharacterSet,0,1,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_tooltips_set_tip(Tips,UseNonStandardId3ReadingCharacterSet,
+ _("This character set will be used when reading the tag data, to convert "
+ "each string found in an ISO-8859-1 field in the tag (for ID3v2 or/and ID3v1 tag).\n"
+ "\n"
+ "For example :\n"
+ " - in previous versions of EasyTAG, you can save UTF-8 strings in an ISO-8859-1 "
+ "field. This is not correct! To convert these tags to Unicode: activate this option "
+ "and select UTF-8. You must also activate above the option 'Try to save tags to "
+ "ISO-8859-1. If it isn't possible then use UNICODE (recommended)' or 'Always save "
+ "tags to UNICODE character set'.\n"
+ " - If unicode was not used, Russian people can select the character set "
+ "'Windows-1251' to load tags written under Windows. And 'KOI8-R' to load tags "
+ "written under Unix systems."),NULL);
+
+ EventBox = gtk_event_box_new();
+ FileReadingId3v1v2CharacterSetCombo = gtk_combo_box_new_text();
+ gtk_container_add(GTK_CONTAINER(EventBox),FileReadingId3v1v2CharacterSetCombo);
+ gtk_table_attach(GTK_TABLE(Table),EventBox,2,3,0,1,GTK_FILL,GTK_FILL,0,0);
+
+ gtk_tooltips_set_tip(Tips,EventBox,_("Character set used to read tag data "
+ "in the file."),NULL);
+
+ Charset_Populate_Combobox(GTK_COMBO_BOX(FileReadingId3v1v2CharacterSetCombo),
+ FILE_READING_ID3V1V2_CHARACTER_SET);
+ g_signal_connect_after(G_OBJECT(UseNonStandardId3ReadingCharacterSet),"toggled",
+ G_CALLBACK(Use_Non_Standard_Id3_Reading_Character_Set_Toggled),NULL);
+
+ Use_Non_Standard_Id3_Reading_Character_Set_Toggled();
+ Change_Id3_Settings_Toggled();
+
+
+ /*
+ * Scanner
+ */
+ Label = gtk_label_new (_("Scanner"));
+ Frame = gtk_frame_new (_("Scanner"));
+ gtk_notebook_append_page (GTK_NOTEBOOK(OptionsNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 5);
+
+ /* Save the number of the page. Asked in Scanner window */
+ OptionsNoteBook_Scanner_Page_Num = gtk_notebook_page_num(GTK_NOTEBOOK(OptionsNoteBook),Frame);
+
+ VBox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+
+ /* Character conversion for the 'Fill Tag' scanner (=> FTS...) */
+ Frame = gtk_frame_new (_("Fill Tag Scanner - Character Conversion"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ FTSConvertUnderscoreAndP20IntoSpace = gtk_check_button_new_with_label(_("Convert underscore "
+ "character '_' and string '%20' to space ' '"));
+ FTSConvertSpaceIntoUnderscore = gtk_check_button_new_with_label(_("Convert space ' ' to underscore '_'"));
+ gtk_box_pack_start(GTK_BOX(vbox),FTSConvertUnderscoreAndP20IntoSpace,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),FTSConvertSpaceIntoUnderscore, FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(FTSConvertUnderscoreAndP20IntoSpace),"toggled",
+ G_CALLBACK(Scanner_Convert_Check_Button_Toggled_1),G_OBJECT(FTSConvertSpaceIntoUnderscore));
+ g_signal_connect_swapped(G_OBJECT(FTSConvertSpaceIntoUnderscore),"toggled",
+ G_CALLBACK(Scanner_Convert_Check_Button_Toggled_1),G_OBJECT(FTSConvertUnderscoreAndP20IntoSpace));
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FTSConvertUnderscoreAndP20IntoSpace),
+ FTS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(FTSConvertSpaceIntoUnderscore),
+ FTS_CONVERT_SPACE_INTO_UNDERSCORE);
+ gtk_tooltips_set_tip(Tips,FTSConvertUnderscoreAndP20IntoSpace,_("If activated, this conversion "
+ "will be used when applying a mask from the scanner for tags."),NULL);
+ gtk_tooltips_set_tip(Tips,FTSConvertSpaceIntoUnderscore,_("If activated, this conversion "
+ "will be used when applying a mask from the scanner for tags."),NULL);
+
+ /* Character conversion for the 'Rename File' scanner (=> RFS...) */
+ Frame = gtk_frame_new (_("Rename File Scanner - Character Conversion"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox),2);
+
+ RFSConvertUnderscoreAndP20IntoSpace = gtk_check_button_new_with_label(_("Convert underscore "
+ "character '_' and string '%20' to space ' '"));
+ RFSConvertSpaceIntoUnderscore = gtk_check_button_new_with_label(_("Convert space ' ' to underscore '_'"));
+ gtk_box_pack_start(GTK_BOX(vbox),RFSConvertUnderscoreAndP20IntoSpace,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(vbox),RFSConvertSpaceIntoUnderscore, FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(RFSConvertUnderscoreAndP20IntoSpace),"toggled",
+ G_CALLBACK(Scanner_Convert_Check_Button_Toggled_1),G_OBJECT(RFSConvertSpaceIntoUnderscore));
+ g_signal_connect_swapped(G_OBJECT(RFSConvertSpaceIntoUnderscore),"toggled",
+ G_CALLBACK(Scanner_Convert_Check_Button_Toggled_1),G_OBJECT(RFSConvertUnderscoreAndP20IntoSpace));
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RFSConvertUnderscoreAndP20IntoSpace),
+ RFS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RFSConvertSpaceIntoUnderscore),
+ RFS_CONVERT_SPACE_INTO_UNDERSCORE);
+ gtk_tooltips_set_tip(Tips,RFSConvertUnderscoreAndP20IntoSpace,_("If activated, this conversion "
+ "will be used when applying a mask from the scanner for filenames."),NULL);
+ gtk_tooltips_set_tip(Tips,RFSConvertSpaceIntoUnderscore,_("If activated, this conversion "
+ "will be used when applying a mask from the scanner for filenames."),NULL);
+
+ /* Character conversion for the 'Process Fields' scanner (=> PFS...) */
+ Frame = gtk_frame_new (_("Process Fields Scanner - Character Conversion"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox),2);
+
+ // Don't convert some words like to, feat. first letter uppercase.
+ PFSDontUpperSomeWords = gtk_check_button_new_with_label(_("Don't uppercase "
+ "first letter of words for some prepositions and articles."));
+ gtk_box_pack_start(GTK_BOX(vbox),PFSDontUpperSomeWords, FALSE, FALSE, 0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(PFSDontUpperSomeWords), PFS_DONT_UPPER_SOME_WORDS);
+ gtk_tooltips_set_tip(Tips, PFSDontUpperSomeWords, _("Don't convert first "
+ "letter of the words like prepositions, articles and words like feat., "
+ "when using the scanner 'First letter uppercase of each word' (for "
+ "example, you will obtain 'Text in an Entry' instead of 'Text In An Entry')."), NULL);
+
+ /* Properties of the scanner window */
+ Frame = gtk_frame_new (_("Scanner Window"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ OpenScannerWindowOnStartup = gtk_check_button_new_with_label(_("Open the Scanner Window on startup"));
+ gtk_box_pack_start(GTK_BOX(vbox),OpenScannerWindowOnStartup,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(OpenScannerWindowOnStartup),OPEN_SCANNER_WINDOW_ON_STARTUP);
+ gtk_tooltips_set_tip(Tips,OpenScannerWindowOnStartup,_("Activate this option to open automatically "
+ "the scanner window when EasyTAG starts."),NULL);
+
+ ScannerWindowOnTop = gtk_check_button_new_with_label(_("Scanner window always on top"));
+ gtk_box_pack_start(GTK_BOX(vbox),ScannerWindowOnTop,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ScannerWindowOnTop),SCANNER_WINDOW_ON_TOP);
+ gtk_tooltips_set_tip(Tips,ScannerWindowOnTop,_("If activated, the window which contains the masks "
+ "will stay always over the main window."),NULL);
+
+
+ /* Other options */
+ Frame = gtk_frame_new (_("Fields"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ // Overwrite text into tag fields
+ OverwriteTagField = gtk_check_button_new_with_label(_("Overwrite fields when scanning tag"));
+ gtk_box_pack_start(GTK_BOX(vbox),OverwriteTagField,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(OverwriteTagField),OVERWRITE_TAG_FIELD);
+ gtk_tooltips_set_tip(Tips,OverwriteTagField,_("If activated, the scanner will replace existing text "
+ "in fields by the new one. If deactivated, only blank fields of the tag will be filled."),NULL);
+
+ // Set a default comment text or CRC-32 checksum
+ if (!DefaultCommentModel)
+ DefaultCommentModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+ else
+ gtk_list_store_clear(DefaultCommentModel);
+
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
+ SetDefaultComment = gtk_check_button_new_with_label(_("Set this text as default comment :"));
+ gtk_box_pack_start(GTK_BOX(hbox),SetDefaultComment,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetDefaultComment),SET_DEFAULT_COMMENT);
+ gtk_tooltips_set_tip(Tips,SetDefaultComment,_("Activate this option if you want to put the "
+ "following string into the comment field when using the 'Fill Tag' scanner."),NULL);
+ DefaultComment = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(DefaultCommentModel), MISC_COMBO_TEXT);
+ gtk_box_pack_start(GTK_BOX(hbox),DefaultComment,FALSE,FALSE,0);
+ gtk_widget_set_size_request(GTK_WIDGET(DefaultComment), 250, -1);
+ g_signal_connect(G_OBJECT(SetDefaultComment),"toggled",
+ G_CALLBACK(Set_Default_Comment_Check_Button_Toggled),NULL);
+ if (DEFAULT_COMMENT==NULL)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetDefaultComment),FALSE);
+ Set_Default_Comment_Check_Button_Toggled();
+ /* History list */
+ Load_Default_Tag_Comment_Text_List(DefaultCommentModel, MISC_COMBO_TEXT);
+ Add_String_To_Combo_List(DefaultCommentModel, DEFAULT_COMMENT);
+ if (DEFAULT_COMMENT)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(DefaultComment)->child), DEFAULT_COMMENT);
+
+ // CRC32 comment
+ Crc32Comment = gtk_check_button_new_with_label(_("Use CRC32 as the default "
+ "comment (for files with ID3 tags only)."));
+ gtk_box_pack_start(GTK_BOX(vbox),Crc32Comment,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Crc32Comment),SET_CRC32_COMMENT);
+ gtk_tooltips_set_tip(Tips,Crc32Comment,_("Calculates the CRC-32 value of the file "
+ "and writes it into the comment field when using the 'Fill Tag' scanner."),NULL);
+ g_signal_connect_swapped(G_OBJECT(SetDefaultComment), "toggled",
+ G_CALLBACK(Scanner_Convert_Check_Button_Toggled_1),G_OBJECT(Crc32Comment));
+ g_signal_connect_swapped(G_OBJECT(Crc32Comment), "toggled",
+ G_CALLBACK(Scanner_Convert_Check_Button_Toggled_1),G_OBJECT(SetDefaultComment));
+
+
+ /*
+ * CDDB
+ */
+ Label = gtk_label_new (_("CD Data Base"));
+ Frame = gtk_frame_new (_("CD Data Base"));
+ gtk_notebook_append_page (GTK_NOTEBOOK(OptionsNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 5);
+
+ VBox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+
+ // CDDB Server Settings (Automatic Search)
+ Frame = gtk_frame_new (_("Server Settings for Automatic Search"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE, 0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
+
+ // 1rst automatic search server
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(vbox),hbox);
+ Label = gtk_label_new(_("Name :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerNameAutomaticSearch = gtk_combo_box_entry_new_text();
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerNameAutomaticSearch,FALSE,FALSE,0);
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "freedb.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "www.gnudb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "at.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "au.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "ca.freedb.org");
+ //gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "ca2.freedb.org");
+ //gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "de.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "es.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "fi.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "ru.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "uk.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch), "us.freedb.org");
+ if (CDDB_SERVER_NAME_AUTOMATIC_SEARCH)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(CddbServerNameAutomaticSearch)->child),CDDB_SERVER_NAME_AUTOMATIC_SEARCH);
+
+ Label = gtk_label_new (_("Port :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerPortAutomaticSearch = gtk_entry_new();
+ gtk_widget_set_size_request(GTK_WIDGET(CddbServerPortAutomaticSearch), 45, -1);
+ gtk_entry_set_max_length(GTK_ENTRY(CddbServerPortAutomaticSearch),5);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerPortAutomaticSearch,FALSE,FALSE,0);
+ sprintf(temp,"%i",CDDB_SERVER_PORT_AUTOMATIC_SEARCH);
+ gtk_entry_set_text(GTK_ENTRY(CddbServerPortAutomaticSearch),temp);
+ g_signal_connect(G_OBJECT(CddbServerPortAutomaticSearch),"insert_text",G_CALLBACK(Insert_Only_Digit),NULL);
+
+ Label = gtk_label_new (_("CGI Path :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerCgiPathAutomaticSearch = gtk_entry_new();
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerCgiPathAutomaticSearch,FALSE,FALSE,0);
+ if (CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH)
+ gtk_entry_set_text(GTK_ENTRY(CddbServerCgiPathAutomaticSearch) ,CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH);
+
+ // 2sd automatic search server
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(vbox),hbox);
+ Label = gtk_label_new(_("Name :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerNameAutomaticSearch2 = gtk_combo_box_entry_new_text();
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerNameAutomaticSearch2,FALSE,FALSE,0);
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameAutomaticSearch2), "freedb.musicbrainz.org");
+ if (CDDB_SERVER_NAME_AUTOMATIC_SEARCH2)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(CddbServerNameAutomaticSearch2)->child),CDDB_SERVER_NAME_AUTOMATIC_SEARCH2);
+
+ Label = gtk_label_new (_("Port :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerPortAutomaticSearch2 = gtk_entry_new();
+ gtk_widget_set_size_request(GTK_WIDGET(CddbServerPortAutomaticSearch2), 45, -1);
+ gtk_entry_set_max_length(GTK_ENTRY(CddbServerPortAutomaticSearch2),5);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerPortAutomaticSearch2,FALSE,FALSE,0);
+ sprintf(temp,"%i",CDDB_SERVER_PORT_AUTOMATIC_SEARCH2);
+ gtk_entry_set_text(GTK_ENTRY(CddbServerPortAutomaticSearch2),temp);
+ g_signal_connect(G_OBJECT(CddbServerPortAutomaticSearch2),"insert_text",G_CALLBACK(Insert_Only_Digit),NULL);
+
+ Label = gtk_label_new (_("CGI Path :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerCgiPathAutomaticSearch2 = gtk_entry_new();
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerCgiPathAutomaticSearch2,FALSE,FALSE,0);
+ if (CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2)
+ gtk_entry_set_text(GTK_ENTRY(CddbServerCgiPathAutomaticSearch2) ,CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2);
+
+ // CDDB Server Settings (Manual Search)
+ Frame = gtk_frame_new (_("Server Settings for Manual Search"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
+
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(vbox),hbox);
+ Label = gtk_label_new(_("Name :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerNameManualSearch = gtk_combo_box_entry_new_text();
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerNameManualSearch,FALSE,FALSE,0);
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameManualSearch), "www.freedb.org");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(CddbServerNameManualSearch), "www.gnudb.org");
+ if (CDDB_SERVER_NAME_MANUAL_SEARCH)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(CddbServerNameManualSearch)->child),CDDB_SERVER_NAME_MANUAL_SEARCH);
+
+ Label = gtk_label_new (_("Port :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerPortManualSearch = gtk_entry_new();
+ gtk_widget_set_size_request(GTK_WIDGET(CddbServerPortManualSearch), 45, -1);
+ gtk_entry_set_max_length(GTK_ENTRY(CddbServerPortManualSearch),5);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerPortManualSearch,FALSE,FALSE,0);
+ sprintf(temp,"%i",CDDB_SERVER_PORT_MANUAL_SEARCH);
+ gtk_entry_set_text(GTK_ENTRY(CddbServerPortManualSearch),temp);
+ g_signal_connect(G_OBJECT(CddbServerPortManualSearch),"insert_text",G_CALLBACK(Insert_Only_Digit),NULL);
+
+ Label = gtk_label_new (_("CGI Path :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+ CddbServerCgiPathManualSearch = gtk_entry_new();
+ gtk_box_pack_start(GTK_BOX(hbox),CddbServerCgiPathManualSearch,FALSE,FALSE,0);
+ if (CDDB_SERVER_CGI_PATH_MANUAL_SEARCH)
+ gtk_entry_set_text(GTK_ENTRY(CddbServerCgiPathManualSearch) ,CDDB_SERVER_CGI_PATH_MANUAL_SEARCH);
+
+ // Local access for CDDB (Automatic Search)
+ Frame = gtk_frame_new (_("Local CD Data Base"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
+
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(vbox),hbox);
+ Label = gtk_label_new(_("Path :"));
+ gtk_box_pack_start(GTK_BOX(hbox),Label,FALSE,FALSE,2);
+
+ if (CddbLocalPathModel != NULL)
+ gtk_list_store_clear(CddbLocalPathModel);
+ else
+ CddbLocalPathModel = gtk_list_store_new(MISC_COMBO_COUNT, G_TYPE_STRING);
+
+ CddbLocalPath = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(CddbLocalPathModel), MISC_COMBO_TEXT);
+ gtk_box_pack_start(GTK_BOX(hbox),CddbLocalPath,FALSE,FALSE,0);
+ gtk_widget_set_size_request(GTK_WIDGET(CddbLocalPath), 450, -1);
+ gtk_tooltips_set_tip(Tips,GTK_BIN(CddbLocalPath)->child,_("Specify the directory "
+ "where are located the local cd data base. The local cd data base contains the eleven following "
+ "directories 'blues', 'classical', 'country', 'data', 'folk', 'jazz', 'newage', 'reggae', "
+ "'rock', 'soundtrack' and 'misc'."),NULL);
+ g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_BIN(CddbLocalPath)->child)),"activate",G_CALLBACK(CddbLocalPath_Combo_Add_String),NULL);
+ //g_signal_connect(G_OBJECT(GTK_ENTRY(GTK_BIN(CddbLocalPath)->child)),"focus_out_event",G_CALLBACK(CddbLocalPath_Combo_Add_String),NULL);
+
+ // History list
+ Load_Cddb_Local_Path_List(CddbLocalPathModel, MISC_COMBO_TEXT);
+
+ // If default path hasn't been added already, add it now..
+ if (CDDB_LOCAL_PATH)
+ {
+ path_utf8 = filename_to_display(CDDB_LOCAL_PATH);
+ Add_String_To_Combo_List(CddbLocalPathModel, path_utf8);
+ if (path_utf8)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(CddbLocalPath)->child), path_utf8);
+ g_free(path_utf8);
+ }
+
+ Button = Create_Button_With_Pixmap(BUTTON_BROWSE);
+ gtk_box_pack_start(GTK_BOX(hbox),Button,FALSE,FALSE,0);
+ g_signal_connect_swapped(G_OBJECT(Button),"clicked",
+ G_CALLBACK(File_Selection_Window_For_Directory),G_OBJECT(GTK_BIN(CddbLocalPath)->child));
+
+ // CDDB Proxy Settings
+ Frame = gtk_frame_new (_("Proxy Settings"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+
+ Table = gtk_table_new(3,5,FALSE);
+ gtk_container_add(GTK_CONTAINER(Frame),Table);
+ gtk_table_set_row_spacings(GTK_TABLE(Table),2);
+ gtk_table_set_col_spacings(GTK_TABLE(Table),4);
+ gtk_container_set_border_width(GTK_CONTAINER(Table), 2);
+
+ CddbUseProxy = gtk_check_button_new_with_label(_("Use a proxy"));
+ gtk_table_attach(GTK_TABLE(Table),CddbUseProxy,0,5,0,1,GTK_FILL,GTK_FILL,0,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseProxy),CDDB_USE_PROXY);
+ gtk_tooltips_set_tip(Tips,CddbUseProxy,_("Set active the settings of the proxy server."),NULL);
+
+ Label = gtk_label_new(" ");
+ gtk_table_attach(GTK_TABLE(Table),Label,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+
+ Label = gtk_label_new(_("Host Name :"));
+ gtk_table_attach(GTK_TABLE(Table),Label,1,2,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(Label),1,0.5);
+ CddbProxyName = gtk_entry_new();
+ gtk_table_attach(GTK_TABLE(Table),CddbProxyName,2,3,1,2,GTK_FILL,GTK_FILL,0,0);
+ if (CDDB_PROXY_NAME)
+ gtk_entry_set_text(GTK_ENTRY(CddbProxyName),CDDB_PROXY_NAME);
+ gtk_tooltips_set_tip(Tips,CddbProxyName,_("Name of the proxy server."),NULL);
+ Label = gtk_label_new (_("Port :"));
+ gtk_table_attach(GTK_TABLE(Table),Label,3,4,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(Label),1,0.5);
+ CddbProxyPort = gtk_entry_new();
+ gtk_widget_set_size_request(GTK_WIDGET(CddbProxyPort), 45, -1);
+ gtk_entry_set_max_length(GTK_ENTRY(CddbProxyPort),5);
+ gtk_table_attach(GTK_TABLE(Table),CddbProxyPort,4,5,1,2,GTK_FILL,GTK_FILL,0,0);
+ gtk_tooltips_set_tip(Tips,CddbProxyPort,_("Port of the proxy server."),NULL);
+ sprintf(temp,"%i",CDDB_PROXY_PORT);
+ gtk_entry_set_text(GTK_ENTRY(CddbProxyPort),temp);
+ g_signal_connect(G_OBJECT(CddbProxyPort),"insert_text",G_CALLBACK(Insert_Only_Digit),NULL);
+ g_signal_connect(G_OBJECT(CddbUseProxy),"toggled",G_CALLBACK(Cddb_Use_Proxy_Toggled),NULL);
+ Label = gtk_label_new(_("User Name :"));
+ gtk_table_attach(GTK_TABLE(Table),Label,1,2,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(Label),1,0.5);
+ CddbProxyUserName = gtk_entry_new();
+ if (CDDB_PROXY_USER_NAME)
+ gtk_entry_set_text(GTK_ENTRY(CddbProxyUserName),CDDB_PROXY_USER_NAME);
+ gtk_table_attach(GTK_TABLE(Table),CddbProxyUserName,2,3,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_tooltips_set_tip(Tips,CddbProxyUserName,_("Name of user for the the proxy server."),NULL);
+ Label = gtk_label_new(_("User Password :"));
+ gtk_table_attach(GTK_TABLE(Table),Label,3,4,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_misc_set_alignment(GTK_MISC(Label),1,0.5);
+ CddbProxyUserPassword = gtk_entry_new();
+ if (CDDB_PROXY_USER_PASSWORD)
+ gtk_entry_set_text(GTK_ENTRY(CddbProxyUserPassword),CDDB_PROXY_USER_PASSWORD);
+ gtk_table_attach(GTK_TABLE(Table),CddbProxyUserPassword,4,5,2,3,GTK_FILL,GTK_FILL,0,0);
+ gtk_entry_set_visibility(GTK_ENTRY(CddbProxyUserPassword),FALSE);
+ gtk_tooltips_set_tip(Tips,CddbProxyUserPassword,_("Password of user for the the proxy server."),NULL);
+ Cddb_Use_Proxy_Toggled();
+
+
+ // Track Name list (CDDB results)
+ Frame = gtk_frame_new (_("Track Name List"));
+ gtk_box_pack_start(GTK_BOX(VBox),Frame,FALSE,FALSE,0);
+
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
+
+ CddbFollowFile = gtk_check_button_new_with_label(_("Select corresponding audio "
+ "file (according position or DLM if activated below)"));
+ gtk_box_pack_start(GTK_BOX(vbox),CddbFollowFile,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbFollowFile),CDDB_FOLLOW_FILE);
+ gtk_tooltips_set_tip(Tips,CddbFollowFile,_("If activated, when selecting a "
+ "line in the list of tracks name, the corresponding audio file in the "
+ "main list will be also selected."),NULL);
+
+ // Check box to use DLM (also used in the cddb window)
+ CddbUseDLM = gtk_check_button_new_with_label(_("Use the Levenshtein algorithm "
+ "(DLM) to match lines (using title) with audio files (using filename)"));
+ gtk_box_pack_start(GTK_BOX(vbox),CddbUseDLM,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(CddbUseDLM),CDDB_USE_DLM);
+ gtk_tooltips_set_tip(Tips,CddbUseDLM,_("When activating this option, the "
+ "Levenshtein algorithm (DLM : Damerau-Levenshtein Metric) will be used "
+ "to match the CDDB title against every file name in the current folder, "
+ "and to select the best match. This will be used when selecting the "
+ "corresponding audio file, or applying cddb results, instead of using "
+ "directly the position order."),NULL);
+
+
+ /*
+ * Confirmation
+ */
+ Label = gtk_label_new (_("Confirmation"));
+ Frame = gtk_frame_new (_("Confirmation"));
+ gtk_notebook_append_page (GTK_NOTEBOOK(OptionsNoteBook),Frame,Label);
+ gtk_container_set_border_width(GTK_CONTAINER(Frame), 5);
+
+ VBox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(Frame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 2);
+
+ ConfirmBeforeExit = gtk_check_button_new_with_label(_("Confirm exit from program"));
+ gtk_box_pack_start(GTK_BOX(VBox),ConfirmBeforeExit,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ConfirmBeforeExit),CONFIRM_BEFORE_EXIT);
+ gtk_tooltips_set_tip(Tips,ConfirmBeforeExit,_("If activated, opens a dialog box to ask "
+ "confirmation before exiting the program."),NULL);
+
+ ConfirmWriteTag = gtk_check_button_new_with_label(_("Confirm writing of file tag"));
+ gtk_box_pack_start(GTK_BOX(VBox),ConfirmWriteTag,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ConfirmWriteTag),CONFIRM_WRITE_TAG);
+
+ ConfirmRenameFile = gtk_check_button_new_with_label(_("Confirm renaming of file"));
+ gtk_box_pack_start(GTK_BOX(VBox),ConfirmRenameFile,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ConfirmRenameFile),CONFIRM_RENAME_FILE);
+
+ ConfirmDeleteFile = gtk_check_button_new_with_label(_("Confirm deleting of file"));
+ gtk_box_pack_start(GTK_BOX(VBox),ConfirmDeleteFile,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ConfirmDeleteFile),CONFIRM_DELETE_FILE);
+
+ ConfirmWritePlayList = gtk_check_button_new_with_label(_("Confirm writing of playlist"));
+ gtk_box_pack_start(GTK_BOX(VBox),ConfirmWritePlayList,FALSE,FALSE,0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ConfirmWritePlayList),CONFIRM_WRITE_PLAYLIST);
+
+
+
+ /*
+ * Buttons box of Option Window
+ */
+ ButtonBox = gtk_hbutton_box_new ();
+ gtk_box_pack_start(GTK_BOX(OptionsVBox), ButtonBox, FALSE, FALSE, 4);
+
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (ButtonBox), GTK_BUTTONBOX_END);
+ gtk_box_set_spacing (GTK_BOX(ButtonBox), 15);
+
+
+ /* Apply Button */
+ Button = Create_Button_With_Pixmap(BUTTON_APPLY);
+ // Disable temporarily the apply button
+ ////gtk_container_add(GTK_CONTAINER(ButtonBox),Button);
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(OptionsWindow_Apply_Button),NULL);
+ GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
+ gtk_tooltips_set_tip(Tips,Button,_("Apply changes (but don't save) and close this window"),NULL);
+
+
+ /* Cancel Button */
+ Button = Create_Button_With_Pixmap(BUTTON_CANCEL);
+ gtk_container_add(GTK_CONTAINER(ButtonBox), Button);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(OptionsWindow_Cancel_Button),NULL);
+ GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (Button);
+ gtk_tooltips_set_tip(Tips,Button,_("Close this window without saving"),NULL);
+
+
+ /* Save Button */
+ Button = Create_Button_With_Pixmap(BUTTON_SAVE);
+ gtk_container_add(GTK_CONTAINER(ButtonBox), Button);
+ g_signal_connect(G_OBJECT(Button),"clicked", G_CALLBACK(OptionsWindow_Save_Button),NULL);
+ GTK_WIDGET_SET_FLAGS(Button, GTK_CAN_DEFAULT);
+ gtk_tooltips_set_tip(Tips,Button,_("Save changes and close this window"),NULL);
+
+ /* Show all in the options window */
+ gtk_widget_show_all(OptionsWindow);
+
+ /* Load the default page */
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(OptionsNoteBook), OPTIONS_NOTEBOOK_PAGE);
+}
+
+
+void Set_Default_Comment_Check_Button_Toggled (void)
+{
+ gtk_widget_set_sensitive(DefaultComment,GTK_TOGGLE_BUTTON(SetDefaultComment)->active);
+}
+
+void Number_Track_Formated_Toggled (void)
+{
+ gtk_widget_set_sensitive(NumberTrackFormatedSpinButton,GTK_TOGGLE_BUTTON(NumberTrackFormated)->active);
+ // To update the example...
+ g_signal_emit_by_name(G_OBJECT(NumberTrackFormatedSpinButton),"changed",NULL);
+}
+
+void Number_Track_Formated_Spin_Button_Changed (GtkObject *Label, GtkObject *SpinButton)
+{
+ gchar *tmp;
+ gint val;
+
+ if (GTK_TOGGLE_BUTTON(NumberTrackFormated)->active)
+ val = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(SpinButton));
+ else
+ val = 1;
+
+ // For translators : be aware to NOT translate '%.*d' in this string
+ tmp = g_strdup_printf(_("(Example : %.*d_-_Track_name_1.mp3)"),val,1);
+
+ gtk_label_set_text(GTK_LABEL(Label),tmp);
+ g_free(tmp);
+}
+
+void Use_Non_Standard_Id3_Reading_Character_Set_Toggled (void)
+{
+ gtk_widget_set_sensitive(FileReadingId3v1v2CharacterSetCombo,
+ GTK_TOGGLE_BUTTON(UseNonStandardId3ReadingCharacterSet)->active);
+}
+void Change_Id3_Settings_Toggled (void)
+{
+ int active;
+
+ if ( !FileWritingId3v2UseUnicodeCharacterSet
+ || !FileWritingId3v2UseNoUnicodeCharacterSet
+ || !FileWritingId3v2WriteTag
+#ifdef ENABLE_ID3LIB
+ || !FileWritingId3v2VersionCombo
+ || !LabelId3v2Version
+#endif
+ || !FileWritingId3v1WriteTag
+ || !LabelId3v2Charset
+ || !FileWritingId3v2UseUnicodeCharacterSet
+ || !FileWritingId3v2UseNoUnicodeCharacterSet
+ || !FileWritingId3v2UnicodeCharacterSetCombo
+ || !FileWritingId3v2NoUnicodeCharacterSetCombo
+ || !LabelAdditionalId3v2IconvOptions
+ || !FileWritingId3v2IconvOptionsNo
+ || !FileWritingId3v2IconvOptionsTranslit
+ || !FileWritingId3v2IconvOptionsIgnore
+ || !FileWritingId3v2UseCrc32
+ || !FileWritingId3v2UseCompression
+ || !ConvertOldId3v2TagVersion
+ || !LabelId3v1Charset
+ || !FileWritingId3v1CharacterSetCombo
+ || !LabelAdditionalId3v1IconvOptions
+ || !FileWritingId3v1IconvOptionsNo
+ || !FileWritingId3v1IconvOptionsTranslit
+ || !FileWritingId3v1IconvOptionsIgnore
+ )
+ return;
+
+ active = (GTK_TOGGLE_BUTTON(FileWritingId3v2UseUnicodeCharacterSet)->active != 0);
+
+ if (GTK_TOGGLE_BUTTON(FileWritingId3v2WriteTag)->active)
+ {
+ gtk_widget_set_sensitive(LabelId3v2Charset, 1);
+
+#ifdef ENABLE_ID3LIB
+ gtk_widget_set_sensitive(LabelId3v2Version, 1);
+ gtk_widget_set_sensitive(FileWritingId3v2VersionCombo, 1);
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(FileWritingId3v2VersionCombo)) == 1) {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(FileWritingId3v2UnicodeCharacterSetCombo), 1);
+ gtk_widget_set_sensitive(FileWritingId3v2UnicodeCharacterSetCombo, 0);
+ }else
+ gtk_widget_set_sensitive(FileWritingId3v2UnicodeCharacterSetCombo, active);
+#else
+ gtk_widget_set_sensitive(FileWritingId3v2UnicodeCharacterSetCombo, active);
+#endif
+ gtk_widget_set_sensitive(FileWritingId3v2UseUnicodeCharacterSet, 1);
+ gtk_widget_set_sensitive(FileWritingId3v2UseNoUnicodeCharacterSet, 1);
+ gtk_widget_set_sensitive(FileWritingId3v2NoUnicodeCharacterSetCombo, !active);
+ gtk_widget_set_sensitive(LabelAdditionalId3v2IconvOptions, !active);
+ gtk_widget_set_sensitive(FileWritingId3v2IconvOptionsNo, !active);
+ gtk_widget_set_sensitive(FileWritingId3v2IconvOptionsTranslit, !active);
+ gtk_widget_set_sensitive(FileWritingId3v2IconvOptionsIgnore, !active);
+ gtk_widget_set_sensitive(FileWritingId3v2UseCrc32, 1);
+ gtk_widget_set_sensitive(FileWritingId3v2UseCompression, 1);
+ gtk_widget_set_sensitive(ConvertOldId3v2TagVersion, 1);
+
+ }else
+ {
+ gtk_widget_set_sensitive(LabelId3v2Charset, 0);
+#ifdef ENABLE_ID3LIB
+ gtk_widget_set_sensitive(LabelId3v2Version, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2VersionCombo, 0);
+#endif
+ gtk_widget_set_sensitive(FileWritingId3v2UseUnicodeCharacterSet, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2UseNoUnicodeCharacterSet, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2UnicodeCharacterSetCombo, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2NoUnicodeCharacterSetCombo, 0);
+ gtk_widget_set_sensitive(LabelAdditionalId3v2IconvOptions, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2IconvOptionsNo, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2IconvOptionsTranslit, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2IconvOptionsIgnore, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2UseCrc32, 0);
+ gtk_widget_set_sensitive(FileWritingId3v2UseCompression, 0);
+ gtk_widget_set_sensitive(ConvertOldId3v2TagVersion, 0);
+ }
+
+ active = GTK_TOGGLE_BUTTON(FileWritingId3v1WriteTag)->active;
+
+ gtk_widget_set_sensitive(LabelId3v1Charset, active);
+ gtk_widget_set_sensitive(FileWritingId3v1CharacterSetCombo, active);
+ gtk_widget_set_sensitive(LabelAdditionalId3v1IconvOptions, active);
+ gtk_widget_set_sensitive(FileWritingId3v1IconvOptionsNo, active);
+ gtk_widget_set_sensitive(FileWritingId3v1IconvOptionsTranslit, active);
+ gtk_widget_set_sensitive(FileWritingId3v1IconvOptionsIgnore, active);
+}
+
+void Cddb_Use_Proxy_Toggled (void)
+{
+ gtk_widget_set_sensitive(CddbProxyName,GTK_TOGGLE_BUTTON(CddbUseProxy)->active);
+ gtk_widget_set_sensitive(CddbProxyPort,GTK_TOGGLE_BUTTON(CddbUseProxy)->active);
+ gtk_widget_set_sensitive(CddbProxyUserName,GTK_TOGGLE_BUTTON(CddbUseProxy)->active);
+ gtk_widget_set_sensitive(CddbProxyUserPassword,GTK_TOGGLE_BUTTON(CddbUseProxy)->active);
+}
+
+/* Callback from Open_OptionsWindow */
+gboolean OptionsWindow_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ {
+ OptionsWindow_Quit();
+ break;
+ }
+ }
+ }
+ return FALSE;
+}
+
+/* Callback from Open_OptionsWindow */
+void OptionsWindow_Apply_Button(void)
+{
+ if (!Check_Config()) return;
+
+#ifndef WIN32
+ /* FIXME : make gtk crash on win32 */
+ Add_String_To_Combo_List(DefaultPathModel, (gchar*) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultPathToMp3)->child)));
+ Add_String_To_Combo_List(FilePlayerModel, (gchar*) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(FilePlayerCombo)->child)));
+ Add_String_To_Combo_List(DefaultCommentModel, (gchar*) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultComment)->child)));
+ Add_String_To_Combo_List(CddbLocalPathModel, (gchar*) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbLocalPath)->child)));
+#endif
+
+ Apply_Changes_Of_Preferences_Window();
+
+ OptionsWindow_Quit();
+ Statusbar_Message(_("Changes applied"),TRUE);
+}
+
+/* Callback from Open_OptionsWindow */
+void OptionsWindow_Save_Button(void)
+{
+ if (!Check_Config()) return;
+
+#ifndef WIN32
+ /* FIXME : make gtk crash on win32 */
+ Add_String_To_Combo_List(DefaultPathModel, (gchar*) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultPathToMp3)->child)));
+ Add_String_To_Combo_List(FilePlayerModel, (gchar*) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(FilePlayerCombo)->child)));
+ Add_String_To_Combo_List(DefaultCommentModel, (gchar*) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultComment)->child)));
+ Add_String_To_Combo_List(CddbLocalPathModel, (gchar*) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbLocalPath)->child)));
+#endif
+
+ Save_Changes_Of_Preferences_Window();
+
+ OptionsWindow_Quit();
+ Statusbar_Message(_("Configuration saved"),TRUE);
+}
+
+/* Callback from Open_OptionsWindow */
+void OptionsWindow_Cancel_Button(void)
+{
+ OptionsWindow_Quit();
+ Statusbar_Message(_("Configuration unchanged"),TRUE);
+}
+
+/* Callback from Open_OptionsWindow */
+void OptionsWindow_Quit(void)
+{
+ if (OptionsWindow)
+ {
+ /* Save combobox history lists before exit */
+ Save_Default_Path_To_MP3_List (DefaultPathModel, MISC_COMBO_TEXT);
+ Save_Default_Tag_Comment_Text_List(DefaultCommentModel, MISC_COMBO_TEXT);
+ Save_Audio_File_Player_List (FilePlayerModel, MISC_COMBO_TEXT);
+ Save_Cddb_Local_Path_List (CddbLocalPathModel, MISC_COMBO_TEXT);
+
+ OptionsWindow_Apply_Changes();
+
+ /* Now quit */
+ gtk_widget_destroy(OptionsWindow);
+ OptionsWindow = (GtkWidget *)NULL;
+ gtk_widget_set_sensitive(MainWindow, TRUE);
+ }
+}
+
+/*
+ * For the configuration file...
+ */
+void OptionsWindow_Apply_Changes (void)
+{
+ if (OptionsWindow)
+ {
+ //gint x, y;
+ gint width, height;
+
+ if ( OptionsWindow->window!=NULL && gdk_window_is_visible(OptionsWindow->window)
+ && gdk_window_get_state(OptionsWindow->window)!=GDK_WINDOW_STATE_MAXIMIZED )
+ {
+ // Position and Origin of the preferences window
+ //gdk_window_get_root_origin(OptionsWindow->window,&x,&y);
+ //OPTIONS_WINDOW_X = x;
+ //OPTIONS_WINDOW_Y = y;
+ gdk_window_get_size(OptionsWindow->window,&width,&height);
+ OPTIONS_WINDOW_WIDTH = width;
+ OPTIONS_WINDOW_HEIGHT = height;
+ }
+
+ /* Get the last visible notebook page */
+ OPTIONS_NOTEBOOK_PAGE = gtk_notebook_get_current_page(GTK_NOTEBOOK(OptionsNoteBook));
+ }
+}
+
+
+
+/*
+ * Check_Config: Check if config informations are correct
+ * dsd: Check this... going from utf8 to raw is dodgy stuff
+ *
+ * Problem noted : if a character is escaped (like : 'C\351line DION') in
+ * gtk_file_chooser it will converted to UTF-8. So after, there
+ * is a problem to convert it in the right system encoding to be
+ * passed to stat(), and it can find the directory.
+ * exemple :
+ * - initial file on system : C\351line DION - D'eux (1995)
+ * - converted to UTF-8 (path_utf8) : Céline DION - D'eux (1995)
+ * - try to convert to system encoding (path_real) : ?????
+ */
+gint Check_DefaultPathToMp3 (void)
+{
+ gchar *path_utf8;
+ gchar *path_real;
+ struct stat stbuf;
+
+ path_utf8 = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultPathToMp3)->child)));
+ if (!path_utf8 || g_utf8_strlen(path_utf8, -1) < 1)
+ {
+ g_free(path_utf8);
+ return 1;
+ }
+
+ path_real = filename_from_display(path_utf8);
+
+#ifdef WIN32
+ /* On win32 : stat("c:\path\to\dir") succeed, while stat("c:\path\to\dir\") fails */
+ ET_Win32_Path_Remove_Trailing_Backslash(path_real);
+#endif
+
+ if ( stat(path_real,&stbuf)==0 && S_ISDIR(stbuf.st_mode) )
+ {
+ g_free(path_real);
+ g_free(path_utf8);
+ return 1; /* Path is good */
+ }else
+ {
+ gchar *msg = g_strdup_printf(_(" The selected path for 'Default path to "
+ "files' isn't valid!\n'%s'\n(%s) "),path_utf8,
+ (stat(path_real,&stbuf)==0)?_("Not a directory"):g_strerror(errno) );
+ GtkWidget *msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ gtk_window_set_transient_for(GTK_WINDOW(msgbox),GTK_WINDOW(OptionsWindow));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+ g_free(path_real);
+ g_free(path_utf8);
+ return 0;
+ }
+}
+
+/*
+ * The character set conversion is used for ID3 tag. UTF-8 is used to display.
+ * - reading_character is converted to UTF-8
+ * - writing_character is converted from UTF-8
+ */
+/*****************
+gint Check_CharacterSetTranslation (void)
+{
+ gchar *temp;
+ gchar *reading_character;
+ gchar *writing_character;
+
+ temp = Get_Active_Combo_Box_Item(GTK_COMBO_BOX(FileReadingCharacterSetCombo));
+ reading_character = Charset_Get_Name_From_Title(temp);
+ g_free(temp);
+
+ temp = Get_Active_Combo_Box_Item(GTK_COMBO_BOX(FileWritingCharacterSetCombo));
+ writing_character = Charset_Get_Name_From_Title(temp);
+ g_free(temp);
+
+ // Check conversion when reading file
+ if ( GTK_TOGGLE_BUTTON(UseNonStandardId3ReadingCharacterSet)->active
+ && (test_conversion_charset(reading_character,"UTF-8")!=TRUE) )
+ {
+ gchar *msg = g_strdup_printf(_("The character set translation from '%s'\n"
+ "to '%s' isn't supported!"),reading_character,"UTF-8");
+ GtkWidget *msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ gtk_window_set_transient_for(GTK_WINDOW(msgbox),GTK_WINDOW(OptionsWindow));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(UseNonStandardId3ReadingCharacterSet),FALSE);
+ return 0;
+ }
+ // Check conversion when writing file
+ if ( GTK_TOGGLE_BUTTON(UseNonStandardId3WritingCharacterSet)->active
+ && (test_conversion_charset("UTF-8",writing_character)!=TRUE) )
+ {
+ gchar *msg = g_strdup_printf(_("The character set translation from '%s'\n"
+ "to '%s' isn't supported!"),"UTF-8",writing_character);
+ GtkWidget *msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ gtk_window_set_transient_for(GTK_WINDOW(msgbox),GTK_WINDOW(OptionsWindow));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(UseNonStandardId3WritingCharacterSet),FALSE);
+ return 0;
+ }
+
+ return 1;
+}
+*************/
+
+gint Check_DefaultComment (void)
+{
+ const gchar *file;
+
+ file = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultComment)->child));
+ if (!file || g_utf8_strlen(file, -1) < 1)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(SetDefaultComment),FALSE);
+
+ return 1; /* A blank entry is ignored */
+}
+
+/*
+ * Check if player binary is found
+ */
+gint Check_FilePlayerCombo (void)
+{
+ gchar *program_path = NULL;
+ gchar *program_path_validated = NULL;
+
+#ifdef WIN32
+ return 1; /* FIXME see Check_If_Executable_Exists */
+ /* Note : Check_If_Executable_Exists crashes when player is 'winamp.exe' with g_find_program_in_path */
+#endif
+
+ // The program typed
+ program_path = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(FilePlayerCombo)->child)));
+ g_strstrip(program_path);
+ // The program file validated
+ if (program_path && strlen(program_path)>0)
+ program_path_validated = Check_If_Executable_Exists(program_path);
+
+ if ( program_path && strlen(program_path)>0 && !program_path_validated ) // A file is typed but it is invalid!
+ {
+ gchar *msg = g_strdup_printf(_("The audio file player '%s' can't be found!"),
+ gtk_entry_get_text(GTK_ENTRY(GTK_BIN(FilePlayerCombo)->child)));
+ GtkWidget *msgbox = msg_box_new(_("Error..."),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_hide_check_button(MSG_BOX(msgbox));
+ gtk_window_set_transient_for(GTK_WINDOW(msgbox),GTK_WINDOW(OptionsWindow));
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+
+ g_free(program_path);
+ return 0;
+ } else
+ {
+ g_free(program_path);
+ g_free(program_path_validated);
+ return 1;
+ }
+}
+
+gint Check_Config (void)
+{
+ if ( Check_DefaultPathToMp3()
+ //&& Check_CharacterSetTranslation()
+ && Check_DefaultComment()
+ && Check_FilePlayerCombo() )
+ return 1; /* No problem detected */
+ else
+ return 0; /* Oups! */
+}
+
+
+
+/*
+ * Manage Check buttons into Scanner tab: conversion group
+ * This reproduces "something" like the behaviour of radio buttons with check buttons
+ */
+void Scanner_Convert_Check_Button_Toggled_1 (GtkObject *object_rec, GtkObject *object_emi)
+{
+ if (!object_rec || !object_emi) return;
+
+ if (GTK_TOGGLE_BUTTON(object_emi)->active == TRUE)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(object_rec),!GTK_TOGGLE_BUTTON(object_emi)->active);
+
+}
+
+
+void DefaultPathToMp3_Combo_Add_String (void)
+{
+ const gchar *path;
+
+ path = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultPathToMp3)->child));
+ Add_String_To_Combo_List(GTK_LIST_STORE(DefaultPathModel), (gchar *)path);
+}
+
+void CddbLocalPath_Combo_Add_String (void)
+{
+ const gchar *path;
+
+ path = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbLocalPath)->child));
+ Add_String_To_Combo_List(GTK_LIST_STORE(CddbLocalPath), (gchar *)path);
+}
+
+
diff --git a/src/prefs.h b/src/prefs.h
new file mode 100755
index 0000000..79532a4
--- /dev/null
+++ b/src/prefs.h
@@ -0,0 +1,182 @@
+/* prefs.h - 2000/05/06 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __PREFS_H__
+#define __PREFS_H__
+
+
+/***************
+ * Declaration *
+ ***************/
+
+GtkWidget *OptionsWindow;
+GtkWidget *OptionsNoteBook;
+gint OptionsNoteBook_Scanner_Page_Num; /* Contains the number of the page "Scanner Option" */
+
+
+/* Widgets included in config */
+/* Common */
+GtkWidget *LoadOnStartup;
+GtkWidget *DefaultPathToMp3;
+GtkWidget *BrowserLineStyleOptionMenu;
+GtkWidget *BrowserExpanderStyleOptionMenu;
+GtkWidget *BrowseSubdir;
+GtkWidget *BrowseHiddendir;
+GtkWidget *OpenSelectedBrowserNode;
+
+GtkListStore *DefaultPathModel;
+
+/* User interface */
+GtkWidget *ShowHeaderInfos;
+GtkWidget *ChangedFilesDisplayedToRed;
+GtkWidget *ChangedFilesDisplayedToBold;
+
+/* Misc */
+GtkWidget *SortingFileCombo;
+GtkWidget *SortingFileCaseSensitive;
+
+GtkWidget *MessageBoxPositionNone;
+GtkWidget *MessageBoxPositionCenter;
+GtkWidget *MessageBoxPositionMouse;
+GtkWidget *MessageBoxPositionCenterOnParent;
+
+GtkWidget *FilePlayerCombo;
+GtkListStore *FilePlayerModel;
+
+/* File Settings */
+GtkWidget *ReplaceIllegalCharactersInFilename;
+GtkWidget *FilenameExtensionNoChange;
+GtkWidget *FilenameExtensionLowerCase;
+GtkWidget *FilenameExtensionUpperCase;
+GtkWidget *PreserveModificationTime;
+
+GtkWidget *FilenameCharacterSetOther;
+GtkWidget *FilenameCharacterSetApproximate;
+GtkWidget *FilenameCharacterSetDiscard;
+
+/* Tag Settings */
+GtkWidget *FileWritingId3v2WriteTag;
+GtkWidget *FileWritingId3v1WriteTag;
+GtkWidget *WriteId3TagsInFlacFiles;
+GtkWidget *FileWritingId3v2UseCrc32;
+GtkWidget *FileWritingId3v2UseCompression;
+GtkWidget *StripTagWhenEmptyFields;
+GtkWidget *ConvertOldId3v2TagVersion;
+
+GtkWidget *FileWritingId3v2VersionCombo;
+GtkWidget *FileWritingId3v2UnicodeCharacterSetCombo;
+GtkWidget *FileWritingId3v2NoUnicodeCharacterSetCombo;
+GtkWidget *FileWritingId3v1CharacterSetCombo;
+GtkWidget *FileWritingId3v2UseUnicodeCharacterSet;
+GtkWidget *FileWritingId3v2UseNoUnicodeCharacterSet;
+GtkWidget *UseNonStandardId3ReadingCharacterSet;
+GtkWidget *FileReadingId3v1v2CharacterSetCombo;
+
+GtkWidget *FileReadingId3v1v2CharacterSetCombo;
+GtkWidget *FileWritingId3v2IconvOptionsNo;
+GtkWidget *FileWritingId3v2IconvOptionsTranslit;
+GtkWidget *FileWritingId3v2IconvOptionsIgnore;
+GtkWidget *FileWritingId3v1IconvOptionsNo;
+GtkWidget *FileWritingId3v1IconvOptionsTranslit;
+GtkWidget *FileWritingId3v1IconvOptionsIgnore;
+
+GtkWidget *LabelAdditionalId3v1IconvOptions;
+GtkWidget *LabelAdditionalId3v2IconvOptions;
+GtkWidget *LabelId3v2Charset;
+GtkWidget *LabelId3v1Charset;
+GtkWidget *LabelId3v2Version;
+
+GtkWidget *DateAutoCompletion;
+GtkWidget *NumberTrackFormated;
+GtkWidget *NumberTrackFormatedSpinButton;
+GtkWidget *OggTagWriteXmmsComment;
+GtkWidget *SetFocusToSameTagField;
+GtkWidget *SetFocusToFirstTagField;
+
+
+/* Scanner */
+GtkWidget *FTSConvertUnderscoreAndP20IntoSpace;
+GtkWidget *FTSConvertSpaceIntoUnderscore;
+GtkWidget *RFSConvertUnderscoreAndP20IntoSpace;
+GtkWidget *RFSConvertSpaceIntoUnderscore;
+GtkWidget *PFSDontUpperSomeWords;
+GtkWidget *OverwriteTagField;
+GtkWidget *OpenScannerWindowOnStartup;
+GtkWidget *ScannerWindowOnTop;
+
+GtkWidget *SetDefaultComment;
+GtkWidget *DefaultComment;
+GtkWidget *Crc32Comment;
+GtkListStore *DefaultCommentModel;
+
+/* CDDB */
+GtkWidget *CddbServerNameAutomaticSearch;
+GtkWidget *CddbServerPortAutomaticSearch;
+GtkWidget *CddbServerCgiPathAutomaticSearch;
+GtkWidget *CddbServerNameAutomaticSearch2;
+GtkWidget *CddbServerPortAutomaticSearch2;
+GtkWidget *CddbServerCgiPathAutomaticSearch2;
+GtkWidget *CddbServerNameManualSearch;
+GtkWidget *CddbServerPortManualSearch;
+GtkWidget *CddbServerCgiPathManualSearch;
+GtkWidget *CddbUseProxy;
+GtkWidget *CddbProxyName;
+GtkWidget *CddbProxyPort;
+GtkWidget *CddbProxyUserName;
+GtkWidget *CddbProxyUserPassword;
+
+GtkWidget *CddbLocalPath;
+GtkListStore *CddbLocalPathModel;
+
+GtkWidget *SetCddbWindowSize;
+GtkWidget *CddbWindowWidth;
+GtkWidget *CddbWindowHeight;
+GtkWidget *CddbWindowButton;
+GtkWidget *SetCddbPaneHandlePosition;
+GtkWidget *CddbPaneHandlePosition;
+GtkWidget *CddbPaneHandleButton;
+
+GtkWidget *CddbFollowFile;
+GtkWidget *CddbUseDLM; // Also used in the cddb.c
+
+
+/* Confirmation */
+GtkWidget *ConfirmBeforeExit;
+GtkWidget *ConfirmWriteTag;
+GtkWidget *ConfirmRenameFile;
+GtkWidget *ConfirmDeleteFile;
+GtkWidget *ConfirmWritePlayList;
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void Init_OptionsWindow (void);
+void Open_OptionsWindow (void);
+void OptionsWindow_Apply_Changes (void);
+
+void File_Selection_Window_For_File (GtkWidget *widget);
+void File_Selection_Window_For_Directory (GtkWidget *widget);
+
+
+#endif /* __PREFS_H__ */
diff --git a/src/scan.c b/src/scan.c
new file mode 100755
index 0000000..2f7be4a
--- /dev/null
+++ b/src/scan.c
@@ -0,0 +1,3455 @@
+/* scan.c - 2000/06/16 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdlib.h>
+#include <gdk/gdkkeysyms.h>
+#include <config.h>
+#include <glib/gi18n-lib.h>
+
+#include "scan.h"
+#include "easytag.h"
+#include "prefs.h"
+#include "setting.h"
+#include "id3_tag.h"
+#include "bar.h"
+#include "browser.h"
+#include "log.h"
+#include "misc.h"
+#include "et_core.h"
+#include "crc32.h"
+#include "msgbox.h"
+#include "charset.h"
+
+
+#define step(a,b) (b-a)+1
+
+
+/****************
+ * Declarations *
+ ****************/
+GtkWidget *DummyEntry = NULL; /* Used to simulate a gtkentry widget for mask code '%i' */
+GtkWidget *ScanTagMaskCombo = NULL;
+GtkWidget *RenameFileMaskCombo = NULL;
+GtkWidget *ScannerOptionCombo = NULL;
+GtkWidget *RenameFilePrefixPathButton = NULL;
+
+GtkWidget *ScanTagFrame;
+GtkWidget *RenameFileFrame;
+GtkWidget *ProcessFieldsFrame;
+GtkWidget *FillTagPreviewLabel = NULL;
+GtkWidget *RenameFilePreviewLabel = NULL;
+
+GtkListStore *RenameFileListModel;
+GtkListStore *ScanTagListModel;
+
+GtkWidget *ProcessFileNameField;
+GtkWidget *ProcessTitleField;
+GtkWidget *ProcessArtistField;
+GtkWidget *ProcessAlbumField;
+GtkWidget *ProcessGenreField;
+GtkWidget *ProcessCommentField;
+GtkWidget *ProcessComposerField;
+GtkWidget *ProcessOrigArtistField;
+GtkWidget *ProcessCopyrightField;
+GtkWidget *ProcessURLField;
+GtkWidget *ProcessEncodedByField;
+GtkWidget *ProcessFieldsConvertIntoSpace = NULL;
+GtkWidget *ProcessFieldsConvertSpace = NULL;
+GtkWidget *ProcessFieldsConvert = NULL;
+GtkWidget *ProcessFieldsConvertLabelTo;
+GtkWidget *ProcessFieldsConvertTo = NULL;
+GtkWidget *ProcessFieldsConvertFrom = NULL;
+GtkWidget *ProcessFieldsAllUppercase = NULL;
+GtkWidget *ProcessFieldsAllDowncase = NULL;
+GtkWidget *ProcessFieldsFirstLetterUppercase = NULL;
+GtkWidget *ProcessFieldsFirstLettersUppercase = NULL;
+GtkWidget *ProcessFieldsRemoveSpace = NULL;
+GtkWidget *ProcessFieldsInsertSpace = NULL;
+GtkWidget *ProcessFieldsOnlyOneSpace = NULL;
+
+GtkWidget *LegendFrame = NULL;
+GtkWidget *LegendButton = NULL;
+
+GtkWidget *MaskEditorButton = NULL;
+GtkWidget *MaskEditorFrame = NULL;
+GtkWidget *MaskEditorVBox;
+GtkWidget *MaskEditorHBox;
+GtkWidget *MaskEditorScrollWindow;
+GtkWidget *MaskEditorList;
+GtkWidget *MaskEditorEntry;
+GtkWidget *MaskEditorNewButton;
+GtkWidget *MaskEditorCopyButton;
+GtkWidget *MaskEditorAddButton;
+GtkWidget *MaskEditorRemoveButton;
+GtkWidget *MaskEditorUpButton;
+GtkWidget *MaskEditorDownButton;
+GtkWidget *MaskEditorSaveButton;
+
+/* Some predefined masks -- IMPORTANT: Null-terminate me! */
+gchar *Scan_Masks [] =
+{
+ "%a - %b"G_DIR_SEPARATOR_S"%n - %t",
+ "%a_-_%b"G_DIR_SEPARATOR_S"%n_-_%t",
+ "%a - %b (%y)"G_DIR_SEPARATOR_S"%n - %a - %t",
+ "%a_-_%b_(%y)"G_DIR_SEPARATOR_S"%n_-_%a_-_%t",
+ "%a - %b (%y) - %g"G_DIR_SEPARATOR_S"%n - %a - %t",
+ "%a_-_%b_(%y)_-_%g"G_DIR_SEPARATOR_S"%n_-_%a_-_%t",
+ "%a - %b"G_DIR_SEPARATOR_S"%n. %t",
+ "%a_-_%b"G_DIR_SEPARATOR_S"%n._%t",
+ "%a-%b"G_DIR_SEPARATOR_S"%n-%t",
+ "%b"G_DIR_SEPARATOR_S"%n. %a - %t",
+ "%b"G_DIR_SEPARATOR_S"%n._%a_-_%t",
+ "%b"G_DIR_SEPARATOR_S"%n - %a - %t",
+ "%b"G_DIR_SEPARATOR_S"%n_-_%a_-_%t",
+ "%b"G_DIR_SEPARATOR_S"%n-%a-%t",
+ "%a-%b"G_DIR_SEPARATOR_S"%n-%t",
+ "%a"G_DIR_SEPARATOR_S"%b"G_DIR_SEPARATOR_S"%n. %t",
+ "%g"G_DIR_SEPARATOR_S"%a"G_DIR_SEPARATOR_S"%b"G_DIR_SEPARATOR_S"%t",
+ "%a_-_%b-%n-%t-%y",
+ "%a - %b"G_DIR_SEPARATOR_S"%n. %t(%c)",
+ "%t",
+ "Track%n",
+ "Track%i %n",
+ NULL
+};
+
+gchar *Rename_File_Masks [] =
+{
+ "%n - %a - %t",
+ "%n_-_%a_-_%t",
+ "%n. %a - %t",
+ "%n._%a_-_%t",
+ "%n - %t",
+ "%n_-_%t",
+ "%n. %t",
+ "%n._%t",
+ "%n - %a - %b - %t",
+ "%n_-_%a_-_%b_-_%t",
+ "%a - %b - %t",
+ "%a_-_%b_-_%t",
+ "%a - %b - %n - %t",
+ "%a_-_%b_-_%n_-_%t",
+ "%a - %t",
+ "%a_-_%t",
+ "Track %n",
+ NULL
+};
+
+/**gchar *Rename_Directory_Masks [] =
+{
+ "%a - %b",
+ "%a_-_%b",
+ "%a - %b (%y) - %g",
+ "%a_-_%b_(%y)_-_%g",
+ "VA - %b (%y)",
+ "VA_-_%b_(%y)",
+ NULL
+};**/
+
+
+gchar *Scanner_Option_Menu_Items [] =
+{
+ N_("Fill Tag"),
+ N_("Rename File and Directory"),
+ N_("Process Fields")
+};
+
+typedef enum
+{
+ UNKNOWN = 0, /* Default value when initialized */
+ LEADING_SEPARATOR, /* characters before the first code */
+ TRAILING_SEPARATOR, /* characters after the last code */
+ SEPARATOR, /* item is a separator between two codes */
+ DIRECTORY_SEPARATOR, /* item is a separator between two codes with character '/' (G_DIR_SEPARATOR) */
+ FIELD, /* item contains text (not empty) of entry */
+ EMPTY_FIELD /* item when entry contains no text */
+} Mask_Item_Type;
+
+
+
+/*
+ * Used into Rename File Scanner
+ */
+typedef struct _File_Mask_Item File_Mask_Item;
+struct _File_Mask_Item
+{
+ Mask_Item_Type type;
+ gchar *string;
+};
+
+/*
+ * Used into Scan Tag Scanner
+ */
+typedef struct _Scan_Mask_Item Scan_Mask_Item;
+struct _Scan_Mask_Item
+{
+ gchar code; // The code of the mask without % (ex: %a => a)
+ gchar *string; // The string found by the scanner for the code defined the line above
+};
+
+
+
+/**************
+ * Prototypes *
+ **************/
+void ScannerWindow_Quit (void);
+gboolean ScannerWindow_Key_Press (GtkWidget *window, GdkEvent *event);
+void Scan_Toggle_Legend_Button (void);
+void Scan_Toggle_Mask_Editor_Button (void);
+gchar *Scan_Replace_String (gchar *string, gchar *last, gchar *new);
+void Scan_Option_Button (void);
+gboolean Scan_Check_Scan_Tag_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source);
+gboolean Scan_Check_Rename_File_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source);
+gboolean Scan_Check_Editor_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source);
+
+gchar *Scan_Generate_New_Filename_From_Mask (ET_File *ETFile, gchar *mask, gboolean no_dir_check_or_conversion);
+GList *Scan_Generate_New_Tag_From_Mask (ET_File *ETFile, gchar *mask);
+void Scan_Rename_File_Generate_Preview (void);
+void Scan_Rename_File_Prefix_Path (void);
+void Scan_Fill_Tag_Generate_Preview (void);
+void Scan_Free_File_Rename_List (GList *list);
+void Scan_Free_File_Fill_Tag_List (GList *list);
+void Scan_Rename_Directory_Generate_Preview (void);
+
+gchar **Scan_Return_File_Tag_Field_From_Mask_Code (File_Tag *FileTag, gchar code);
+void Scan_Process_Fields_Functions (gchar *string);
+
+void Process_Fields_Check_Button_Toggled (GtkObject *object, GList *list);
+void Process_Fields_Convert_Check_Button_Toggled (GtkObject *object);
+void Select_Fields_Invert_Selection (void);
+void Select_Fields_Select_Unselect_All (void);
+void Select_Fields_Set_Sensitive (void);
+
+void Mask_Editor_List_Row_Selected (GtkTreeSelection* selection, gpointer data);
+void Mask_Editor_List_New (void);
+void Mask_Editor_List_Duplicate (void);
+void Mask_Editor_List_Add (void);
+void Mask_Editor_List_Remove (void);
+void Mask_Editor_List_Move_Up (void);
+void Mask_Editor_List_Move_Down (void);
+void Mask_Editor_List_Save_Button (void);
+void Mask_Editor_Entry_Changed (void);
+gboolean Mask_Editor_List_Key_Press (GtkWidget *widget, GdkEvent *event);
+
+void Mask_Editor_Clean_Up_Masks_List (void);
+
+void Scanner_Option_Menu_Activate_Item (GtkWidget *widget, gpointer data);
+
+void Populate_Scan_Tag_Masks();
+void Populate_Rename_File_Masks();
+
+
+/*************
+ * *
+ * Functions *
+ * *
+ *************/
+
+void Init_ScannerWindow (void)
+{
+ ScannerWindow = (GtkWidget *)NULL;
+ ScannerOptionCombo= (GtkWidget *)NULL;
+ SWScanButton = (GtkWidget *)NULL;
+}
+
+
+/*
+ * Uses the filename and path to fill tag informations
+ * Note: mask and source are read from the right to the left
+ */
+void Scan_Tag_With_Mask (ET_File *ETFile)
+{
+ GList *fill_tag_list = NULL;
+ gchar **dest = NULL;
+ gchar *mask; // The 'mask' in the entry
+ gchar *filename_utf8;
+ File_Tag *FileTag;
+
+ if (!ScannerWindow || !ScanTagMaskCombo || !ETFile) return;
+ mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child)));
+ if (!mask) return;
+
+ // Create a new File_Tag item
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+
+ // Process this mask with file
+ fill_tag_list = Scan_Generate_New_Tag_From_Mask(ETFile,mask);
+ while (fill_tag_list)
+ {
+ Scan_Mask_Item *mask_item = fill_tag_list->data;
+
+ // Get the target entry for this code
+ dest = Scan_Return_File_Tag_Field_From_Mask_Code(FileTag,mask_item->code);
+
+ // We display the text affected to the code
+ if ( dest && ( OVERWRITE_TAG_FIELD || *dest==NULL || strlen(*dest)==0 ) )
+ ET_Set_Field_File_Tag_Item(dest,mask_item->string);
+
+ if (!fill_tag_list->next) break;
+ fill_tag_list = fill_tag_list->next;
+ }
+ Scan_Free_File_Fill_Tag_List(fill_tag_list);
+
+ // Set the default text to comment
+ if (SET_DEFAULT_COMMENT && (OVERWRITE_TAG_FIELD || FileTag->comment==NULL || strlen(FileTag->comment)==0 ) )
+ ET_Set_Field_File_Tag_Item((void *)&FileTag->comment,DEFAULT_COMMENT);
+
+ // Set CRC-32 value as default comment (for files with ID3 tag only ;-)
+ if (SET_CRC32_COMMENT && (OVERWRITE_TAG_FIELD || FileTag->comment==NULL || strlen(FileTag->comment)==0 ) )
+ {
+ gulong crc32_value = 0;
+ gchar *buffer;
+ ET_File_Description *ETFileDescription;
+
+ ETFileDescription = ETFile->ETFileDescription;
+ switch (ETFileDescription->TagType)
+ {
+ case ID3_TAG:
+ crc32_file_with_ID3_tag( ((File_Name *)((GList *)ETFile->FileNameNew)->data)->value, &crc32_value);
+
+ if (crc32_value > 0)
+ {
+ buffer = g_strdup_printf("%.8lx",crc32_value);
+ ET_Set_Field_File_Tag_Item((void *)&FileTag->comment,buffer);
+ g_free(buffer);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+
+ // Save changes of the 'File_Tag' item
+ ET_Manage_Changes_Of_File_Data(ETFile,NULL,FileTag);
+
+ g_free(mask);
+ Statusbar_Message(_("Tag successfully scanned..."),TRUE);
+ filename_utf8 = g_path_get_basename( ((File_Name *)ETFile->FileNameNew->data)->value_utf8 );
+ Log_Print(_("Tag successfully scanned...(%s)"),filename_utf8);
+ g_free(filename_utf8);
+}
+
+GList *Scan_Generate_New_Tag_From_Mask (ET_File *ETFile, gchar *mask)
+{
+ GList *fill_tag_list = NULL;
+ gchar *filename_utf8;
+ gchar *tmp;
+ gchar *buf;
+ gchar *separator;
+ gchar *string;
+ gint len, i, loop=0;
+ gchar **mask_splitted;
+ gchar **file_splitted;
+ guint mask_splitted_number;
+ guint file_splitted_number;
+ guint mask_splitted_index;
+ guint file_splitted_index;
+ Scan_Mask_Item *mask_item;
+
+ if (!ETFile || !mask) return NULL;
+
+ filename_utf8 = g_strdup(((File_Name *)((GList *)ETFile->FileNameNew)->data)->value_utf8);
+ if (!filename_utf8) return NULL;
+
+ // Remove extension of file (if found)
+ tmp = strrchr(filename_utf8,'.');
+ for (i=0; i<=(gint)ET_FILE_DESCRIPTION_SIZE; i++)
+ {
+ if ( strcasecmp(tmp,ETFileDescription[i].Extension)==0 )
+ {
+ *tmp = 0; //strrchr(source,'.') = 0;
+ break;
+ }
+ }
+
+ if (i==ET_FILE_DESCRIPTION_SIZE)
+ {
+ gchar *tmp1 = g_path_get_basename(filename_utf8);
+ Log_Print(_("Tag scanner: strange..., the extension '%s' was not found into filename '%s'!"),tmp,tmp1);
+ g_free(tmp1);
+ }
+
+ // Replace characters into mask and filename before parsing
+ if (FTS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE)
+ {
+ Scan_Convert_Underscore_Into_Space(mask);
+ Scan_Convert_Underscore_Into_Space(filename_utf8);
+ Scan_Convert_P20_Into_Space(mask);
+ Scan_Convert_P20_Into_Space(filename_utf8);
+ }
+ if (FTS_CONVERT_SPACE_INTO_UNDERSCORE)
+ {
+ Scan_Convert_Space_Into_Undescore(mask);
+ Scan_Convert_Space_Into_Undescore(filename_utf8);
+ }
+
+
+ // Split the Scanner mask
+ mask_splitted = g_strsplit(mask,G_DIR_SEPARATOR_S,0);
+ // Get number of arguments into 'mask_splitted'
+ for (mask_splitted_number=0;mask_splitted[mask_splitted_number];mask_splitted_number++);
+
+ // Split the File Path
+ file_splitted = g_strsplit(filename_utf8,G_DIR_SEPARATOR_S,0);
+ // Get number of arguments into 'file_splitted'
+ for (file_splitted_number=0;file_splitted[file_splitted_number];file_splitted_number++);
+
+ // Set the starting position for each tab
+ if (mask_splitted_number <= file_splitted_number)
+ {
+ mask_splitted_index = 0;
+ file_splitted_index = file_splitted_number - mask_splitted_number;
+ }else
+ {
+ mask_splitted_index = mask_splitted_number - file_splitted_number;
+ file_splitted_index = 0;
+ }
+
+ loop = 0;
+ while ( mask_splitted[mask_splitted_index]!= NULL && file_splitted[file_splitted_index]!=NULL )
+ {
+ gchar *mask_seq = mask_splitted[mask_splitted_index];
+ gchar *file_seq = file_splitted[file_splitted_index];
+ gchar *file_seq_utf8 = filename_to_display(file_seq);
+
+ //g_print(">%d> seq '%s' '%s'\n",loop,mask_seq,file_seq);
+ while ( mask_seq && strlen(mask_seq)>0 )
+ {
+
+ /*
+ * Determine (first) code and destination
+ */
+ if ( (tmp=strchr(mask_seq,'%')) == NULL || strlen(tmp) < 2 )
+ {
+ break;
+ }
+
+ /*
+ * Allocate a new iten for the fill_tag_list
+ */
+ mask_item = g_malloc0(sizeof(Scan_Mask_Item));
+
+ // Get the code (used to determine the corresponding target entry)
+ mask_item->code = tmp[1];
+
+ /*
+ * Delete text before the code
+ */
+ if ( (len = strlen(mask_seq) - strlen(tmp)) > 0 )
+ {
+ // Get this text in 'mask_seq'
+ buf = g_strndup(mask_seq,len);
+ // We remove it in 'mask_seq'
+ mask_seq = mask_seq + len;
+ // Find the same text at the begining of 'file_seq' ?
+ if ( (strstr(file_seq,buf)) == file_seq )
+ {
+ file_seq = file_seq + len; // We remove it
+ }else
+ {
+ Log_Print(_("Scan Error: can't find separator '%s' within '%s'"),buf,file_seq_utf8);
+ }
+ g_free(buf);
+ }
+
+ // Remove the current code into 'mask_seq'
+ mask_seq = mask_seq + 2;
+
+ /*
+ * Determine separator between two code or trailing text (after code)
+ */
+ if ( mask_seq && strlen(mask_seq)>0 )
+ {
+ if ( (tmp=strchr(mask_seq,'%')) == NULL || strlen(tmp) < 2 )
+ {
+ // No more code found
+ len = strlen(mask_seq);
+ }else
+ {
+ len = strlen(mask_seq) - strlen(tmp);
+ }
+ separator = g_strndup(mask_seq,len);
+
+ // Remove the current separator in 'mask_seq'
+ mask_seq = mask_seq + len;
+
+ // Try to find the separator in 'file_seq'
+ if ( (tmp=strstr(file_seq,separator)) == NULL )
+ {
+ Log_Print(_("Scan Error: can't find separator '%s' within '%s'"),separator,file_seq_utf8);
+ separator[0] = 0; // Needed to avoid error when calculting 'len' below
+ }
+
+ // Get the string affected to the code (or the corresponding entry field)
+ len = strlen(file_seq) - (tmp!=NULL?strlen(tmp):0);
+ string = g_strndup(file_seq,len);
+
+ // Remove the current separator in 'file_seq'
+ file_seq = file_seq + strlen(string) + strlen(separator);
+ g_free(separator);
+
+ // We get the text affected to the code
+ mask_item->string = string;
+ }else
+ {
+ // We display the remaining text, affected to the code (no more data in 'mask_seq')
+ mask_item->string = g_strdup(file_seq);
+ }
+
+ // Add the filled mask_iten to the list
+ fill_tag_list = g_list_append(fill_tag_list,mask_item);
+ }
+
+ g_free(file_seq_utf8);
+
+ // Next sequences
+ mask_splitted_index++;
+ file_splitted_index++;
+ loop++;
+ }
+
+ g_free(filename_utf8);
+ g_strfreev(mask_splitted);
+ g_strfreev(file_splitted);
+
+ // The 'fill_tag_list' must be freed after use
+ return fill_tag_list;
+}
+
+void Scan_Fill_Tag_Generate_Preview (void)
+{
+ gchar *mask = NULL;
+ gchar *preview_text = NULL;
+ GList *fill_tag_list = NULL;
+
+ if (!ETCore->ETFileDisplayedList
+ || !ScannerWindow || !RenameFileMaskCombo || !FillTagPreviewLabel
+ || gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) != SCANNER_FILL_TAG)
+ return;
+
+ mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child)));
+ if (!mask)
+ return;
+
+ preview_text = g_strdup("");
+ fill_tag_list = Scan_Generate_New_Tag_From_Mask(ETCore->ETFileDisplayed,mask);
+ while (fill_tag_list)
+ {
+ Scan_Mask_Item *mask_item = fill_tag_list->data;
+ gchar *tmp_code = g_strdup_printf("%c",mask_item->code);
+ gchar *tmp_string = g_markup_printf_escaped("%s",mask_item->string); // To avoid problem with strings containing characters like '&'
+ gchar *tmp_preview_text = preview_text;
+
+ preview_text = g_strconcat(tmp_preview_text,"<b>","%",tmp_code," = ",
+ "</b>","<i>",tmp_string,"</i>",NULL);
+ g_free(tmp_code);
+ g_free(tmp_string);
+ g_free(tmp_preview_text);
+
+ if (!fill_tag_list->next) break;
+ fill_tag_list = fill_tag_list->next;
+
+ tmp_preview_text = preview_text;
+ preview_text = g_strconcat(tmp_preview_text," || ",NULL);
+ g_free(tmp_preview_text);
+ }
+ Scan_Free_File_Fill_Tag_List(fill_tag_list);
+
+ if (GTK_IS_LABEL(FillTagPreviewLabel))
+ {
+ if (preview_text)
+ {
+ //gtk_label_set_text(GTK_LABEL(FillTagPreviewLabel),preview_text);
+ gtk_label_set_markup(GTK_LABEL(FillTagPreviewLabel),preview_text);
+ } else
+ {
+ gtk_label_set_text(GTK_LABEL(FillTagPreviewLabel),"");
+ }
+
+ // Force the window to be redrawed
+ gtk_widget_queue_resize(ScannerWindow);
+ }
+
+ g_free(mask);
+ g_free(preview_text);
+}
+
+void Scan_Free_File_Fill_Tag_List (GList *list)
+{
+ // Free the list
+ list = g_list_first(list);
+ while (list)
+ {
+ if (list->data)
+ {
+ g_free(((Scan_Mask_Item *)list->data)->string);
+ g_free( (Scan_Mask_Item *)list->data );
+ }
+ if (!list->next) break;
+ list = list->next;
+ }
+ g_list_free(list);
+ list = (GList *)NULL;
+}
+
+
+
+/**************************
+ * Scanner To Rename File *
+ **************************/
+/*
+ * Uses tag informations (displayed into tag entries) to rename file
+ * Note: mask and source are read from the right to the left.
+ * Note1: a mask code may be used severals times...
+ */
+void Scan_Rename_File_With_Mask (ET_File *ETFile)
+{
+ gchar *filename_generated_utf8 = NULL;
+ gchar *filename_generated = NULL;
+ gchar *filename_new_utf8 = NULL;
+ gchar *mask = NULL;
+ File_Name *FileName;
+
+ if (!ScannerWindow || !RenameFileMaskCombo || !ETFile) return;
+
+ mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)));
+ if (!mask) return;
+
+ // Note : if the first character is '/', we have a path with the filename,
+ // else we have only the filename. The both are in UTF-8.
+ filename_generated_utf8 = Scan_Generate_New_Filename_From_Mask(ETFile,mask,FALSE);
+ g_free(mask);
+
+ if (!filename_generated_utf8)
+ return;
+ if (g_utf8_strlen(filename_generated_utf8,-1)<1)
+ {
+ g_free(filename_generated_utf8);
+ return;
+ }
+
+ // Convert filename to file-system encoding
+ filename_generated = filename_from_display(filename_generated_utf8);
+ if (!filename_generated)
+ {
+ GtkWidget *msgbox;
+ gchar *msg = g_strdup_printf(_("Could not convert filename '%s' into system filename encoding."), filename_generated_utf8);
+ msgbox = msg_box_new(_("Filename translation"),msg,GTK_STOCK_DIALOG_ERROR,BUTTON_OK,0);
+ msg_box_run(MSG_BOX(msgbox));
+ gtk_widget_destroy(msgbox);
+ g_free(msg);
+ g_free(filename_generated_utf8);
+ return;
+ }
+
+ /* Build the filename with the full path or relative to old path */
+ filename_new_utf8 = ET_File_Name_Generate(ETFile,filename_generated_utf8);
+ g_free(filename_generated);
+ g_free(filename_generated_utf8);
+
+ /* Set the new filename */
+ // Create a new 'File_Name' item
+ FileName = ET_File_Name_Item_New();
+ // Save changes of the 'File_Name' item
+ ET_Set_Filename_File_Name_Item(FileName,filename_new_utf8,NULL);
+
+ ET_Manage_Changes_Of_File_Data(ETFile,FileName,NULL);
+ g_free(filename_new_utf8);
+
+ Statusbar_Message(_("New file name successfully scanned..."),TRUE);
+
+ filename_new_utf8 = g_path_get_basename(((File_Name *)ETFile->FileNameNew->data)->value_utf8);
+ Log_Print(_("New file name successfully scanned...(%s)"),filename_new_utf8);
+ g_free(filename_new_utf8);
+
+ return;
+}
+
+/*
+ * Build the new filename using tag + mask
+ * Used also to rename the directory (from the browser)
+ * @param ETFile : the etfile to process
+ * @param mask : the pattern to parse
+ * @param no_dir_check_or_conversion : if FALSE, disable checking of a directory
+ * in the mask, and don't convert "illegal" characters. This is used in the
+ * function "Write_Playlist" for the content of the playlist.
+ * Returns filename in UTF-8
+ */
+gchar *Scan_Generate_New_Filename_From_Mask (ET_File *ETFile, gchar *mask, gboolean no_dir_check_or_conversion)
+{
+ gchar *tmp;
+ gchar **source = NULL;
+ gchar *path_utf8_cur = NULL;
+ gchar *filename_new_utf8 = NULL;
+ gchar *filename_tmp = NULL;
+ GList *rename_file_list = NULL;
+ File_Mask_Item *mask_item;
+ File_Mask_Item *mask_item_prev;
+ File_Mask_Item *mask_item_next;
+ gint counter = 0;
+
+
+ if (!ETFile || !mask) return NULL;
+
+ /*
+ * Check for a directory in the mask
+ */
+ if (!no_dir_check_or_conversion)
+ {
+ if (g_path_is_absolute(mask))
+ {
+ // Absolute directory
+ }else if (strrchr(mask,G_DIR_SEPARATOR)!=NULL) // This is '/' on UNIX machines and '\' under Windows
+ {
+ // Relative path => set beginning of the path
+ path_utf8_cur = g_path_get_dirname( ((File_Name *)ETFile->FileNameCur->data)->value_utf8 );
+ }
+ }
+
+
+ /*
+ * Parse the codes to generate a list (1rst item = 1rst code)
+ */
+ while ( mask!=NULL && (tmp=strrchr(mask,'%'))!=NULL && strlen(tmp)>1 )
+ {
+ // Mask contains some characters after the code ('%b__')
+ if (strlen(tmp)>2)
+ {
+ mask_item = g_malloc0(sizeof(File_Mask_Item));
+ if (counter)
+ {
+ if (strchr(tmp+2,G_DIR_SEPARATOR))
+ mask_item->type = DIRECTORY_SEPARATOR;
+ else
+ mask_item->type = SEPARATOR;
+ } else
+ {
+ mask_item->type = TRAILING_SEPARATOR;
+ }
+ mask_item->string = g_strdup(tmp+2);
+ rename_file_list = g_list_prepend(rename_file_list,mask_item);
+ }
+
+ // Now, parses the code to get the corresponding string (from tag)
+ source = Scan_Return_File_Tag_Field_From_Mask_Code((File_Tag *)ETFile->FileTag->data,tmp[1]);
+ mask_item = g_malloc0(sizeof(File_Mask_Item));
+ if (source && *source && strlen(*source)>0)
+ {
+ mask_item->type = FIELD;
+ mask_item->string = g_strdup(*source);
+
+ // Replace invalid characters for this field
+ // Note : shouldn't be done always as for the content of a playlist, we don't need to replace...
+ if (!no_dir_check_or_conversion)
+ {
+ ET_File_Name_Convert_Character(mask_item->string);
+ }
+
+ // Replace characters (rules) (!! don't convert in directory path_utf8_cur)
+ if (RFS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE)
+ {
+ Scan_Convert_Underscore_Into_Space(mask_item->string);
+ Scan_Convert_P20_Into_Space(mask_item->string);
+ }
+ if (RFS_CONVERT_SPACE_INTO_UNDERSCORE)
+ Scan_Convert_Space_Into_Undescore(mask_item->string);
+ }else
+ {
+ mask_item->type = EMPTY_FIELD;
+ mask_item->string = NULL;
+ }
+ rename_file_list = g_list_prepend(rename_file_list,mask_item);
+ *tmp = '\0'; // Cut parsed data of mask
+ counter++; // To indicate that we made at least one loop to identifiate 'separator' or 'trailing_separator'
+ }
+
+ // It may have some characters before the last remaining code ('__%a')
+ if (mask!=NULL && strlen(mask)>0)
+ {
+ mask_item = g_malloc0(sizeof(File_Mask_Item));
+ mask_item->type = LEADING_SEPARATOR;
+ mask_item->string = g_strdup(mask);
+ rename_file_list = g_list_prepend(rename_file_list,mask_item);
+ }
+
+ if (!rename_file_list) return NULL;
+
+ /*
+ * For Debugging : display the "rename_file_list" list
+ */
+ /***{
+ GList *list = g_list_first(rename_file_list);
+ gint i = 0;
+ g_print("## rename_file_list - start\n");
+ while (list)
+ {
+ File_Mask_Item *mask_item = (File_Mask_Item *)list->data;
+ Mask_Item_Type type = mask_item->type;
+ gchar *string = mask_item->string;
+
+ //g_print("item %d : \n",i++);
+ //g_print(" - type : '%s'\n",type==UNKNOWN?"UNKNOWN":type==LEADING_SEPARATOR?"LEADING_SEPARATOR":type==TRAILING_SEPARATOR?"TRAILING_SEPARATOR":type==SEPARATOR?"SEPARATOR":type==DIRECTORY_SEPARATOR?"DIRECTORY_SEPARATOR":type==FIELD?"FIELD":type==EMPTY_FIELD?"EMPTY_FIELD":"???");
+ //g_print(" - string : '%s'\n",string);
+ g_print("%d -> %s (%s) | ",i++,type==UNKNOWN?"UNKNOWN":type==LEADING_SEPARATOR?"LEADING_SEPARATOR":type==TRAILING_SEPARATOR?"TRAILING_SEPARATOR":type==SEPARATOR?"SEPARATOR":type==DIRECTORY_SEPARATOR?"DIRECTORY_SEPARATOR":type==FIELD?"FIELD":type==EMPTY_FIELD?"EMPTY_FIELD":"???",string);
+
+ list = list->next;
+ }
+ g_print("\n## rename_file_list - end\n\n");
+ }***/
+
+ /*
+ * Build the new filename with items placed into the list
+ * (read the list from the end to the beginning)
+ */
+ rename_file_list = g_list_last(rename_file_list);
+ filename_new_utf8 = g_strdup("");
+
+ while (rename_file_list)
+ {
+ File_Mask_Item *mask_item = rename_file_list->data;
+
+ if ( mask_item->type==TRAILING_SEPARATOR ) // Trailing characters of mask
+ {
+ // Doesn't write it if previous field is empty
+ if (rename_file_list->prev && ((File_Mask_Item *)rename_file_list->prev->data)->type!=EMPTY_FIELD)
+ {
+ filename_tmp = filename_new_utf8;
+ filename_new_utf8 = g_strconcat(mask_item->string,filename_new_utf8,NULL);
+ g_free(filename_tmp);
+ }
+ }else
+ if ( mask_item->type==EMPTY_FIELD )
+ // We don't concatenate the field value (empty) and the previous
+ // separator (except leading separator) to the filename.
+ // If the empty field is the 'first', we don't concatenate it, and the
+ // next separator too.
+ {
+ if (rename_file_list->prev)
+ {
+ // The empty field isn't the first.
+ // If previous string is a separator, we don't use it, except if the next
+ // string is a FIELD (not empty)
+ mask_item_prev = rename_file_list->prev->data;
+ if ( mask_item_prev->type==SEPARATOR )
+ {
+ if ( !(rename_file_list->next && (mask_item_next=rename_file_list->next->data)
+ && mask_item_next->type==FIELD) )
+ {
+ rename_file_list = rename_file_list->prev;
+ }
+ }
+ }else
+ if (rename_file_list->next && (mask_item_next=rename_file_list->next->data)
+ && mask_item_next->type==SEPARATOR)
+ // We are at the 'beginning' of the mask (so empty field is the first)
+ // and next field is a separator. As the separator may have been already added, we remove it
+ {
+ if ( filename_new_utf8 && mask_item_next->string && (strncmp(filename_new_utf8,mask_item_next->string,strlen(mask_item_next->string))==0) ) // To avoid crash if filename_new_utf8 is 'empty'
+ {
+ filename_tmp = filename_new_utf8;
+ filename_new_utf8 = g_strdup(filename_new_utf8+strlen(mask_item_next->string));
+ g_free(filename_tmp);
+ }
+ }
+
+ }else // SEPARATOR, FIELD, LEADING_SEPARATOR, DIRECTORY_SEPARATOR
+ {
+ filename_tmp = filename_new_utf8;
+ filename_new_utf8 = g_strconcat(mask_item->string,filename_new_utf8,NULL);
+ g_free(filename_tmp);
+ }
+
+ if (!rename_file_list->prev) break;
+ rename_file_list = rename_file_list->prev;
+ }
+
+ // Free the list
+ Scan_Free_File_Rename_List(rename_file_list);
+
+
+ // Add current path if relative path entered
+ if (path_utf8_cur)
+ {
+ filename_tmp = filename_new_utf8; // in UTF-8!
+ filename_new_utf8 = g_strconcat(path_utf8_cur,G_DIR_SEPARATOR_S,filename_new_utf8,NULL);
+ g_free(filename_tmp);
+ g_free(path_utf8_cur);
+ }
+
+ return filename_new_utf8; // in UTF-8!
+}
+
+void Scan_Rename_File_Generate_Preview (void)
+{
+ gchar *preview_text = NULL;
+ gchar *mask = NULL;
+
+ if (!ETCore->ETFileDisplayed
+ || !ScannerWindow || !RenameFileMaskCombo || !RenameFilePreviewLabel)
+ return;
+
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) != SCANNER_RENAME_FILE)
+ return;
+
+ mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)));
+ if (!mask)
+ return;
+
+ preview_text = Scan_Generate_New_Filename_From_Mask(ETCore->ETFileDisplayed,mask,FALSE);
+
+ if (GTK_IS_LABEL(RenameFilePreviewLabel))
+ {
+ if (preview_text)
+ {
+ //gtk_label_set_text(GTK_LABEL(RenameFilePreviewLabel),preview_text);
+ gchar *tmp_string = g_markup_printf_escaped("%s",preview_text); // To avoid problem with strings containing characters like '&'
+ gchar *str = g_strdup_printf("<i>%s</i>",tmp_string);
+ gtk_label_set_markup(GTK_LABEL(RenameFilePreviewLabel),str);
+ g_free(tmp_string);
+ g_free(str);
+ } else
+ {
+ gtk_label_set_text(GTK_LABEL(RenameFilePreviewLabel),"");
+ }
+
+ // Force the window to be redrawed
+ gtk_widget_queue_resize(ScannerWindow);
+ }
+
+ g_free(mask);
+ g_free(preview_text);
+}
+
+
+void Scan_Free_File_Rename_List (GList *list)
+{
+ // Free the list
+ list = g_list_last(list);
+ while (list)
+ {
+ if (list->data)
+ {
+ g_free(((File_Mask_Item *)list->data)->string);
+ g_free( (File_Mask_Item *)list->data );
+ }
+ if (!list->prev) break;
+ list = list->prev;
+ }
+ g_list_free(list);
+ list = (GList *)NULL;
+}
+
+/*
+ * Adds the current path of the file to the mask on the "Rename File Scanner" entry
+ */
+void Scan_Rename_File_Prefix_Path (void)
+{
+ gchar *path_tmp;
+ gchar *combo_text = NULL;
+ gchar *combo_tmp;
+ ET_File *ETFile = ETCore->ETFileDisplayed;
+ gchar *filename_utf8_cur = ((File_Name *)ETFile->FileNameCur->data)->value_utf8;
+ gchar *path_utf8_cur;
+
+
+ // The path to prefix
+ path_utf8_cur = g_path_get_dirname(filename_utf8_cur);
+
+ // The current text in the combobox
+ combo_text = (gchar *)gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child));
+ if (!g_utf8_validate(combo_text, -1, NULL))
+ {
+ combo_tmp = convert_to_utf8(combo_text);
+ }else
+ {
+ combo_tmp = g_strdup(combo_text);
+ }
+
+ // If the path already exists we don't add it again
+ // Use g_utf8_collate_key instead of strncmp
+ if (combo_tmp && path_utf8_cur && strncmp(combo_tmp,path_utf8_cur,strlen(path_utf8_cur))!=0)
+ {
+ if (g_path_is_absolute(combo_tmp))
+ {
+ path_tmp = g_strdup(path_utf8_cur);
+ } else
+ {
+ path_tmp = g_strconcat(path_utf8_cur,G_DIR_SEPARATOR_S,NULL);
+ }
+ gtk_entry_prepend_text(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child),path_tmp);
+ g_free(path_tmp);
+ }
+
+ g_free(path_utf8_cur);
+}
+
+
+/*******************************
+ * Scanner To Rename Directory *
+ *******************************/
+void Scan_Rename_Directory_Generate_Preview (void)
+{
+ gchar *preview_text = NULL;
+ gchar *mask = NULL;
+
+ if (!ETCore->ETFileDisplayed
+ || !RenameDirectoryWindow || !RenameDirectoryMaskCombo || !RenameDirectoryPreviewLabel)
+ return;
+
+ mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameDirectoryMaskCombo)->child)));
+ if (!mask)
+ return;
+
+ preview_text = Scan_Generate_New_Filename_From_Mask(ETCore->ETFileDisplayed,mask,FALSE);
+
+ if (GTK_IS_LABEL(RenameDirectoryPreviewLabel))
+ {
+ if (preview_text)
+ {
+ //gtk_label_set_text(GTK_LABEL(RenameFilePreviewLabel),preview_text);
+ gchar *tmp_string = g_markup_printf_escaped("%s",preview_text); // To avoid problem with strings containing characters like '&'
+ gchar *str = g_strdup_printf("<i>%s</i>",tmp_string);
+ gtk_label_set_markup(GTK_LABEL(RenameDirectoryPreviewLabel),str);
+ g_free(tmp_string);
+ g_free(str);
+ } else
+ {
+ gtk_label_set_text(GTK_LABEL(RenameDirectoryPreviewLabel),"");
+ }
+
+ // Force the window to be redrawed else the preview label may be not placed correctly
+ gtk_widget_queue_resize(RenameDirectoryWindow);
+ }
+
+ g_free(mask);
+ g_free(preview_text);
+}
+
+gchar *Scan_Generate_New_Directory_Name_From_Mask (ET_File *ETFile, gchar *mask, gboolean no_dir_check_or_conversion)
+{
+ return Scan_Generate_New_Filename_From_Mask(ETFile,mask,no_dir_check_or_conversion);
+}
+
+
+
+/*****************************
+ * Scanner To Process Fields *
+ *****************************/
+/* See also functions : Convert_P20_And_Undescore_Into_Spaces, ... in easytag.c */
+void Scan_Process_Fields (ET_File *ETFile)
+{
+ File_Name *FileName = NULL;
+ File_Tag *FileTag = NULL;
+ File_Name *st_filename;
+ File_Tag *st_filetag;
+ gchar *filename_utf8;
+ //GString *string2process;
+ guint string_length;
+ gchar *string;
+ gchar *temp;
+
+
+ if (!ScannerWindow || !ETFile) return;
+
+ st_filename = (File_Name *)ETFile->FileNameNew->data;
+ st_filetag = (File_Tag *)ETFile->FileTag->data;
+ //string2process = g_string_sized_new(512);
+
+ /* Process the filename */
+ if (st_filename != NULL)
+ {
+ if (st_filename->value_utf8 && GTK_TOGGLE_BUTTON(ProcessFileNameField)->active) // File name field
+ {
+ gchar *string_utf8;
+ gchar *pos;
+
+ filename_utf8 = st_filename->value_utf8;
+
+ if (!FileName)
+ FileName = ET_File_Name_Item_New();
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ temp = g_path_get_basename(filename_utf8);
+ string_length = 2 * g_utf8_strlen(temp,-1);
+ string = g_malloc(string_length+1);
+ strncpy(string,temp,string_length);
+ g_free(temp);
+ string[string_length]='\0';
+ // Remove the extension to set it to lower case (to avoid problem with undo)
+ if ((pos=strrchr(string,'.'))!=NULL) *pos = 0;
+
+ Scan_Process_Fields_Functions(string);
+
+ string_utf8 = ET_File_Name_Generate(ETFile,string);
+ ET_Set_Filename_File_Name_Item(FileName,string_utf8,NULL);
+ g_free(string_utf8);
+ g_free(string);
+ }
+ }
+
+ /* Process data of the tag */
+ if (st_filetag != NULL)
+ {
+ // Title field
+ if (st_filetag->title && GTK_TOGGLE_BUTTON(ProcessTitleField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->title);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->title,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->title,string);
+
+ g_free(string);
+ }
+
+ // Artist field
+ if (st_filetag->artist && GTK_TOGGLE_BUTTON(ProcessArtistField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->artist);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->artist,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->artist,string);
+
+ g_free(string);
+ }
+
+ // Album field
+ if (st_filetag->album && GTK_TOGGLE_BUTTON(ProcessAlbumField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->album);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->album,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->album,string);
+
+ g_free(string);
+ }
+
+ // Genre field
+ if (st_filetag->genre && GTK_TOGGLE_BUTTON(ProcessGenreField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->genre);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->genre,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->genre,string);
+
+ g_free(string);
+ }
+
+ // Comment field
+ if (st_filetag->comment && GTK_TOGGLE_BUTTON(ProcessCommentField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->comment);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->comment,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->comment,string);
+
+ g_free(string);
+ }
+
+ // Composer field
+ if (st_filetag->composer && GTK_TOGGLE_BUTTON(ProcessComposerField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->composer);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->composer,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->composer,string);
+
+ g_free(string);
+ }
+
+ // Original artist field
+ if (st_filetag->orig_artist && GTK_TOGGLE_BUTTON(ProcessOrigArtistField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->orig_artist);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->orig_artist,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->orig_artist,string);
+
+ g_free(string);
+ }
+
+ // Copyright field
+ if (st_filetag->copyright && GTK_TOGGLE_BUTTON(ProcessCopyrightField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->copyright);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->copyright,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->copyright,string);
+
+ g_free(string);
+ }
+
+ // URL field
+ if (st_filetag->url && GTK_TOGGLE_BUTTON(ProcessURLField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->url);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->url,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->url,string);
+
+ g_free(string);
+ }
+
+ // 'Encoded by' field
+ if (st_filetag->encoded_by && GTK_TOGGLE_BUTTON(ProcessEncodedByField)->active)
+ {
+ if (!FileTag)
+ {
+ FileTag = ET_File_Tag_Item_New();
+ ET_Copy_File_Tag_Item(ETFile,FileTag);
+ }
+
+ // FIX ME : we suppose that it will not grow more than 2 times its size...
+ string_length = 2 * strlen(st_filetag->encoded_by);
+ string = g_malloc(string_length+1);
+ strncpy(string,st_filetag->encoded_by,string_length);
+ string[string_length]='\0';
+
+ Scan_Process_Fields_Functions(string);
+
+ ET_Set_Field_File_Tag_Item(&FileTag->encoded_by,string);
+
+ g_free(string);
+ }
+ }
+
+ if (FileName && FileTag)
+ {
+ // Synchronize undo key of the both structures (used for the
+ // undo functions, as they are generated as the same time)
+ FileName->key = FileTag->key;
+ }
+ ET_Manage_Changes_Of_File_Data(ETFile,FileName,FileTag);
+
+}
+
+
+void Scan_Process_Fields_Functions (gchar *string)
+{
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsConvertIntoSpace)->active)
+ {
+ Scan_Convert_Underscore_Into_Space(string);
+ Scan_Convert_P20_Into_Space(string);
+ }
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsConvertSpace)->active)
+ Scan_Convert_Space_Into_Undescore(string);
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsInsertSpace)->active)
+ Scan_Process_Fields_Insert_Space(string);
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsOnlyOneSpace)->active)
+ Scan_Process_Fields_Keep_One_Space(string);
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsConvert)->active)
+ Scan_Convert(string);
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsAllUppercase)->active)
+ Scan_Process_Fields_All_Uppercase(string);
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsAllDowncase)->active)
+ Scan_Process_Fields_All_Downcase(string);
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsFirstLetterUppercase)->active)
+ Scan_Process_Fields_Letter_Uppercase(string);
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsFirstLettersUppercase)->active)
+ Scan_Process_Fields_First_Letters_Uppercase(string);
+
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsRemoveSpace)->active)
+ Scan_Process_Fields_Remove_Space(string);
+
+}
+
+void Scan_Process_Fields_All_Uppercase (gchar *text)
+{
+ gchar *temp;
+ gchar temp2[6]; // Must have at least 6 bytes of space
+ gunichar c;
+
+ for (temp = text; *temp; temp = g_utf8_next_char(temp))
+ {
+ c = g_utf8_get_char(temp);
+ if (g_unichar_islower(c))
+ strncpy(temp, temp2, g_unichar_to_utf8(g_unichar_toupper(c), temp2));
+ }
+}
+
+void Scan_Process_Fields_All_Downcase (gchar *text)
+{
+ gchar *temp;
+ gchar temp2[6];
+ gunichar c;
+
+ for (temp = text; *temp; temp = g_utf8_next_char(temp))
+ {
+ c = g_utf8_get_char(temp);
+ if (g_unichar_isupper(c))
+ strncpy(temp, temp2, g_unichar_to_utf8(g_unichar_tolower(c), temp2));
+ }
+}
+
+void Scan_Process_Fields_Letter_Uppercase (gchar *text)
+{
+ gchar *temp;
+ gchar temp2[6];
+ gboolean set_to_upper_case = TRUE;
+ gunichar c;
+ gchar utf8_character[6];
+ gchar *word, *word1, *word2;
+
+ for (temp = text; *temp; temp = g_utf8_next_char(temp))
+ {
+ c = g_utf8_get_char(temp);
+ if (set_to_upper_case && g_unichar_islower(c))
+ strncpy(temp, temp2, g_unichar_to_utf8(g_unichar_toupper(c), temp2));
+ else if (!set_to_upper_case && g_unichar_isupper(c))
+ strncpy(temp, temp2, g_unichar_to_utf8(g_unichar_tolower(c), temp2));
+ set_to_upper_case = FALSE; // After the first time, all will be down case
+ }
+
+ temp = text;
+
+ // Uppercase again the word 'I' in english
+ while ( temp )
+ {
+ word1 = g_utf8_strchr(temp,-1,' ');
+ word2 = g_utf8_strchr(temp,-1,'_');
+
+ // Take the first string found (near beginning of string)
+ if (word1 && word2)
+ word = MIN(word1,word2);
+ else if (word1)
+ word = word1;
+ else if (word2)
+ word = word2;
+ else
+ break;
+
+ // Go to first character of the word (char. after ' ' or '_')
+ word = word+1;
+
+ // Set uppercase word 'I'
+ if (g_ascii_strncasecmp("I ", word, strlen("I ")) == 0)
+ {
+ c = g_utf8_get_char(word);
+ strncpy(word, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
+ }
+
+ temp = word;
+ }
+}
+
+void Scan_Process_Fields_First_Letters_Uppercase (gchar *text)
+{
+/**** DANIEL TEST *****
+ gchar *iter;
+ gchar utf8_character[6];
+ gboolean set_to_upper_case = TRUE;
+ gunichar c;
+
+ for (iter = text; *iter; iter = g_utf8_next_char(iter))
+ {
+ c = g_utf8_get_char(iter);
+ if (set_to_upper_case && g_unichar_islower(c))
+ strncpy(iter, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
+ else if (!set_to_upper_case && g_unichar_isupper(c))
+ strncpy(iter, utf8_character, g_unichar_to_utf8(g_unichar_tolower(c), utf8_character));
+
+ set_to_upper_case = (g_unichar_isalpha(c)
+ || c == (gunichar)'.'
+ || c == (gunichar)'\''
+ || c == (gunichar)'`') ? FALSE : TRUE;
+ }
+****/
+/**** Barış Çiçek version ****/
+ gchar *word, *word1, *word2, *temp;
+ gint i;
+ gchar utf8_character[6];
+ gunichar c;
+ gboolean set_to_upper_case, set_to_upper_case_tmp;
+ // There have to be space at the end of words to seperate them from prefix
+ gchar *exempt[] =
+ {
+ "a ", "a_",
+ "an ", "an_",
+ "and ", "and_",
+ "at ", "at_",
+ "but ", "but_",
+ "feat. ", "feat._",
+ "for ", "for_",
+ "in ", "in_",
+ "nor ", "nor_",
+ "of ", "of_",
+ "off ", "off_",
+ "on ", "on_",
+ "or ", "or_",
+ "over ", "over_",
+ "so ", "so_",
+ "the ", "the_",
+ "to ", "to_",
+ "with ", "with_",
+ NULL
+ };
+
+ if (!PFS_DONT_UPPER_SOME_WORDS)
+ {
+ exempt[0] = NULL;
+ }
+ Scan_Process_Fields_All_Downcase(text);
+
+ if (!g_utf8_validate(text,-1,NULL))
+ {
+ Log_Print("Scan_Process_Fields_First_Letters_Uppercase: Not a valid utf8! quiting");
+ return;
+ }
+ // Removes trailing whitespace
+ text = g_strchomp(text);
+
+ temp = text;
+
+ // Set first character to uppercase
+ c = g_utf8_get_char(temp);
+ strncpy(text, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
+
+ // Uppercase first character of each word, except for 'exempt[]' words lists
+ while ( temp )
+ {
+ word1 = g_utf8_strchr(temp,-1,' ');
+ word2 = g_utf8_strchr(temp,-1,'_');
+
+ // Take the first string found (near beginning of string)
+ if (word1 && word2)
+ word = MIN(word1,word2);
+ else if (word1)
+ word = word1;
+ else if (word2)
+ word = word2;
+ else
+ break;
+
+ // Go to first character of the word (char. after ' ' or '_')
+ word = word+1;
+
+ // Set uppercase the first character of this word
+ c = g_utf8_get_char(word);
+ strncpy(word, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
+
+ // Set lowercase the first character of this word if found in the exempt words list
+ for (i=0; exempt[i]!=NULL; i++)
+ {
+ if (g_ascii_strncasecmp(exempt[i], word, strlen(exempt[i])) == 0)
+ {
+ c = g_utf8_get_char(word);
+ strncpy(word, utf8_character, g_unichar_to_utf8(g_unichar_tolower(c), utf8_character));
+ break;
+ }
+ }
+
+ temp = word;
+ }
+
+ // Uppercase letter placed after some characters like '(', '[', '{'
+ set_to_upper_case = FALSE;
+ for (temp = text; *temp; temp = g_utf8_next_char(temp))
+ {
+ c = g_utf8_get_char(temp);
+ set_to_upper_case_tmp = ( c == (gunichar)'('
+ || c == (gunichar)'['
+ || c == (gunichar)'{'
+ || c == (gunichar)'"'
+ ) ? TRUE : FALSE;
+
+ if (set_to_upper_case && g_unichar_islower(c))
+ strncpy(temp, utf8_character, g_unichar_to_utf8(g_unichar_toupper(c), utf8_character));
+
+ set_to_upper_case = set_to_upper_case_tmp;
+ }
+
+}
+
+void Scan_Process_Fields_Remove_Space (gchar *text)
+{
+ gchar *tmp, *tmp1;
+
+ tmp = tmp1 = text;
+ while (*tmp)
+ {
+ while (*tmp == ' ')
+ tmp++;
+ if (*tmp)
+ *(tmp1++) = *(tmp++);
+ }
+ *tmp1 = '\0';
+}
+
+void Scan_Process_Fields_Insert_Space (gchar *text)
+{
+ gchar *iter;
+ gunichar c;
+ gint j;
+
+ // FIXME: try to use realloc
+ for (iter = g_utf8_next_char(text); *iter; iter = g_utf8_next_char(iter)) // i=1 to not consider first "uppercase" letter
+ {
+ c = g_utf8_get_char(iter);
+
+ if (g_unichar_isupper(c))
+ {
+ for (j = strlen(iter); j > 0; j--)
+ *(iter + j) = *(iter + j - 1);
+ *iter = ' ';
+ iter++;
+ }
+ }
+}
+void Scan_Process_Fields_Keep_One_Space (gchar *text)
+{
+ gchar *tmp, *tmp1;
+ tmp = tmp1 = text;
+
+ // Remove multiple consecutive underscores and spaces.
+ while (*tmp1)
+ {
+ while (*tmp1 && *tmp1 != ' ' && *tmp1 != '_')
+ *(tmp++) = *(tmp1++);
+ if (!*tmp1)
+ break;
+ *(tmp++) = *(tmp1++);
+ while (*tmp1 == ' ' || *tmp1 == '_')
+ *tmp1++;
+ }
+ *tmp = '\0';
+}
+
+/*
+ * Function to replace underscore '_' by a space
+ */
+void Scan_Convert_Underscore_Into_Space (gchar *string)
+{
+ gchar *tmp;
+
+ while ((tmp=strchr(string,'_'))!=NULL)
+ *tmp = ' ';
+}
+
+/*
+ * Function to replace %20 by a space
+ */
+void Scan_Convert_P20_Into_Space (gchar *string)
+{
+ gchar *tmp, *tmp1;
+
+ while ((tmp=strstr(string,"%20"))!=NULL)
+ {
+ tmp1 = tmp + 3;
+ *(tmp++) = ' ';
+ while (*tmp1)
+ *(tmp++) = *(tmp1++);
+ *tmp = '\0';
+ }
+}
+
+/*
+ * Function to replace space by '_'
+ */
+void Scan_Convert_Space_Into_Undescore (gchar *string)
+{
+ gchar *tmp;
+
+ while ((tmp=strchr(string,' '))!=NULL)
+ *tmp = '_';
+}
+
+/*
+ * Replace something with something else ;)
+ * Currently this only works with one character for each
+ */
+void Scan_Convert (gchar *string)
+{
+ gchar *tmp;
+ gchar *from = gtk_editable_get_chars(GTK_EDITABLE(ProcessFieldsConvertFrom),0,-1 );
+ gchar *to = gtk_editable_get_chars(GTK_EDITABLE(ProcessFieldsConvertTo),0,-1 );
+
+ if ( from && to && strlen(from)>0 && strlen(to)>0 )
+ while ((tmp=strchr(string,*from))!=NULL)
+ *tmp = *to;
+}
+
+
+
+/*
+ * Return the field of a 'File_Tag' structure corresponding to the mask code
+ */
+gchar **Scan_Return_File_Tag_Field_From_Mask_Code (File_Tag *FileTag, gchar code)
+{
+ switch (code)
+ {
+ case 't': /* Title */
+ return &FileTag->title;
+ case 'a': /* Artist */
+ return &FileTag->artist;
+ case 'b': /* Album */
+ return &FileTag->album;
+ case 'd': /* Disc Number */
+ return &FileTag->disc_number;
+ case 'y': /* Year */
+ return &FileTag->year;
+ case 'n': /* Track */
+ return &FileTag->track;
+ case 'l': /* Track Total */
+ return &FileTag->track_total;
+ case 'g': /* Genre */
+ return &FileTag->genre;
+ case 'c': /* Comment */
+ return &FileTag->comment;
+ case 'p': /* Composer */
+ return &FileTag->composer;
+ case 'o': /* Orig. Artist */
+ return &FileTag->orig_artist;
+ case 'r': /* Copyright */
+ return &FileTag->copyright;
+ case 'u': /* URL */
+ return &FileTag->url;
+ case 'e': /* Encoded by */
+ return &FileTag->encoded_by;
+ case 'i': /* Ignored */
+ return NULL;
+ default:
+ Log_Print("Scanner: Invalid code '%%%c' found!",code);
+ return NULL;
+ }
+}
+
+
+
+/******************
+ * Scanner Window *
+ ******************/
+#include "../pixmaps/black.xpm"
+#include "../pixmaps/blackwhite.xpm"
+void Open_ScannerWindow (gint scanner_type)
+{
+ GtkWidget *ScanVBox;
+ GtkWidget *HBox1, *HBox2, *HBox4, *VBox, *hbox, *vbox;
+ GtkWidget *Table;
+ GtkWidget *Label;
+ GtkWidget *Button;
+ GtkWidget *Separator;
+ GtkWidget *Icon;
+ GtkWidget *EventBox;
+ GtkTooltips *Tips;
+ GtkWidget *MaskStatusIconBox;
+ GList *pf_cb_group1 = NULL;
+ GList *pf_cb_group2 = NULL;
+ GList *pf_cb_group3 = NULL;
+ GtkTreeViewColumn * column;
+ GtkCellRenderer *renderer;
+
+ /* Check if already opened */
+ if (ScannerWindow)
+ {
+ //gdk_window_show(ScannerWindow->window);
+ gdk_window_raise(ScannerWindow->window);
+ if (ScannerOptionCombo)
+ {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(ScannerOptionCombo), scanner_type);
+ }
+ return;
+ }
+
+ if ( scanner_type < SCANNER_FILL_TAG
+ || scanner_type > SCANNER_PROCESS_FIELDS)
+ scanner_type = SCANNER_FILL_TAG;
+
+ /* The window */
+ ScannerWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ /* Config */
+ gtk_container_set_border_width(GTK_CONTAINER(ScannerWindow), 5);
+ gtk_window_set_resizable(GTK_WINDOW(ScannerWindow), FALSE);
+ gtk_window_set_wmclass(GTK_WINDOW(ScannerWindow),"EasyTag_Scanner","easytag"); // Patch from Nikolai Prokoschenko (Debian)
+ if (SCANNER_WINDOW_ON_TOP)
+ gtk_window_set_transient_for(GTK_WINDOW(ScannerWindow),GTK_WINDOW(MainWindow));
+
+ /* The init position is define below, cause the scanner window must be showed before
+ * to be able to move it. */
+
+ /* Title */
+ gtk_window_set_title(GTK_WINDOW(ScannerWindow),_("Tag and File Name scan"));
+
+ /* Signals connection */
+ g_signal_connect(G_OBJECT(ScannerWindow),"destroy",G_CALLBACK(ScannerWindow_Quit),NULL);
+ g_signal_connect(G_OBJECT(ScannerWindow),"delete_event",G_CALLBACK(ScannerWindow_Quit),NULL);
+ g_signal_connect(G_OBJECT(ScannerWindow),"key_press_event",G_CALLBACK(ScannerWindow_Key_Press),NULL);
+
+ /* The tooltips */
+ Tips = gtk_tooltips_new();
+
+ /* The main vbox */
+ ScanVBox = gtk_vbox_new(FALSE,2);
+ gtk_container_add(GTK_CONTAINER(ScannerWindow),ScanVBox);
+
+
+ /*
+ * The hbox for mode buttons + buttons + what to scan
+ */
+ HBox1 = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(ScanVBox),HBox1,FALSE,FALSE,0);
+
+ /* Option Menu */
+ Label = gtk_label_new(_("Scanner:"));
+ gtk_box_pack_start(GTK_BOX(HBox1),Label,FALSE,FALSE,0);
+
+ EventBox = gtk_event_box_new();
+ ScannerOptionCombo = gtk_combo_box_new_text();
+ gtk_container_add(GTK_CONTAINER(EventBox),ScannerOptionCombo);
+ gtk_box_pack_start(GTK_BOX(HBox1),EventBox,TRUE,TRUE,2);
+ gtk_widget_set_size_request(ScannerOptionCombo, 160, -1);
+
+ /* Option for Tag */
+ gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo), _(Scanner_Option_Menu_Items[SCANNER_FILL_TAG]));
+
+ /* Option for FileName */
+ gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo), _(Scanner_Option_Menu_Items[SCANNER_RENAME_FILE]));
+
+ /* Option for ProcessFields */
+ gtk_combo_box_append_text(GTK_COMBO_BOX(ScannerOptionCombo), _(Scanner_Option_Menu_Items[SCANNER_PROCESS_FIELDS]));
+
+ // Selection of the item made at the end of the function
+ gtk_tooltips_set_tip(Tips, EventBox, _("Select the type of scanner to use"), NULL);
+ g_signal_connect(G_OBJECT(ScannerOptionCombo), "changed", G_CALLBACK(Scanner_Option_Menu_Activate_Item), NULL);
+
+ /* 'Scan selected files' button */
+ SWScanButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock("easytag-scan", GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(SWScanButton),Icon);
+ gtk_box_pack_start(GTK_BOX(HBox1),SWScanButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(SWScanButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,SWScanButton,_("Open scanner window / Scan selected files"),NULL);
+ g_signal_connect(G_OBJECT(SWScanButton),"clicked",G_CALLBACK(Action_Scan_Selected_Files),NULL);
+
+ /* Separator line */
+ Separator = gtk_vseparator_new();
+ gtk_box_pack_start(GTK_BOX(HBox1),Separator,FALSE,FALSE,2);
+
+ /* Options button */
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(HBox1),Button,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Scanner Options"),NULL);
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(Scan_Option_Button),NULL);
+
+ /* Mask Editor button */
+ MaskEditorButton = gtk_toggle_button_new();
+ Icon = gtk_image_new_from_stock("easytag-mask", GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(MaskEditorButton),Icon);
+ gtk_box_pack_start(GTK_BOX(HBox1),MaskEditorButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(MaskEditorButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,MaskEditorButton,_("Show / Hide Masks Editor"),NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(MaskEditorButton),SCAN_MASK_EDITOR_BUTTON);
+ g_signal_connect(G_OBJECT(MaskEditorButton),"toggled",G_CALLBACK(Scan_Toggle_Mask_Editor_Button),NULL);
+
+ /* Legend button */
+ LegendButton = gtk_toggle_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_HELP, GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(LegendButton),Icon);
+ gtk_box_pack_start(GTK_BOX(HBox1),LegendButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(LegendButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,LegendButton,_("Show / Hide Legend"),NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LegendButton),SCAN_LEGEND_BUTTON);
+ g_signal_connect(G_OBJECT(LegendButton),"toggled",G_CALLBACK(Scan_Toggle_Legend_Button),NULL);
+
+ /* Close button */
+ Button = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_QUIT, GTK_ICON_SIZE_BUTTON);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_box_pack_start(GTK_BOX(HBox1),Button,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(Button),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,Button,_("Close this window"),NULL);
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(ScannerWindow_Quit),NULL);
+
+ /*
+ * Frame for Scan Tag
+ */
+ ScanTagFrame = gtk_frame_new (_(Scanner_Option_Menu_Items[0]));
+ gtk_box_pack_start(GTK_BOX(ScanVBox),ScanTagFrame,FALSE,FALSE,0);
+
+ vbox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(ScanTagFrame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
+ gtk_widget_show(vbox);
+
+ /* The combo box + Status icon */
+ HBox2 = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),HBox2,TRUE,TRUE,0);
+
+ // Set up list model which is used both by the combobox and the editor
+ ScanTagListModel = gtk_list_store_new(MASK_EDITOR_COUNT, G_TYPE_STRING);
+
+ // The combo box to select the mask to apply
+ ScanTagMaskCombo = gtk_combo_box_entry_new();
+ gtk_combo_box_set_model(GTK_COMBO_BOX(ScanTagMaskCombo), GTK_TREE_MODEL(ScanTagListModel));
+ gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(ScanTagMaskCombo), MASK_EDITOR_TEXT);
+
+ gtk_box_pack_start(GTK_BOX(HBox2),ScanTagMaskCombo,TRUE,TRUE,2);
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child)),
+ _("Select or type in a mask using codes (see Legend) to parse file name and "
+ "path. Used to fill in tag fields."),NULL);
+ // Signal to generate preview (preview of the new tag values)
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child)),"changed",
+ G_CALLBACK(Scan_Fill_Tag_Generate_Preview),NULL);
+
+ // Load masks into the combobox from a file
+ Load_Scan_Tag_Masks_List(ScanTagListModel, MASK_EDITOR_TEXT, Scan_Masks);
+ if (SCAN_TAG_DEFAULT_MASK)
+ {
+ Add_String_To_Combo_List(ScanTagListModel, SCAN_TAG_DEFAULT_MASK);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child), SCAN_TAG_DEFAULT_MASK);
+ }else
+ {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(ScanTagMaskCombo), 0);
+ }
+
+ // Mask status icon
+ MaskStatusIconBox = Create_Pixmap_Icon_With_Event_Box("easytag-forbidden");
+ gtk_box_pack_start(GTK_BOX(HBox2),MaskStatusIconBox,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,MaskStatusIconBox,_("Invalid Scanner Mask"),NULL);
+ // Signal connection to check if mask is correct into the mask entry
+ g_signal_connect_swapped(G_OBJECT(GTK_BIN(ScanTagMaskCombo)->child),"changed",
+ G_CALLBACK(Scan_Check_Scan_Tag_Mask),GTK_OBJECT(MaskStatusIconBox));
+
+ // Preview label
+ FillTagPreviewLabel = gtk_label_new(_("Fill tag preview..."));
+ gtk_label_set_line_wrap(GTK_LABEL(FillTagPreviewLabel),TRUE);
+ gtk_widget_show(FillTagPreviewLabel);
+ gtk_box_pack_start(GTK_BOX(vbox),FillTagPreviewLabel,TRUE,TRUE,0);
+
+ /*
+ * Frame for Rename File
+ */
+ RenameFileFrame = gtk_frame_new (_(Scanner_Option_Menu_Items[1]));
+ gtk_box_pack_start(GTK_BOX(ScanVBox),RenameFileFrame,FALSE,FALSE,0);
+
+ vbox = gtk_vbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(RenameFileFrame),vbox);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
+ gtk_widget_show(vbox);
+
+ /* The button to prefix path + combo box + Status icon */
+ HBox4 = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(vbox),HBox4,TRUE,TRUE,0);
+
+ // Button to prefix path
+ RenameFilePrefixPathButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock("easytag-add-folder", GTK_ICON_SIZE_SMALL_TOOLBAR); // On Win32, GTK_ICON_SIZE_BUTTON enlarge the combobox...
+ gtk_container_add(GTK_CONTAINER(RenameFilePrefixPathButton),Icon);
+ gtk_box_pack_start(GTK_BOX(HBox4),RenameFilePrefixPathButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(RenameFilePrefixPathButton),GTK_RELIEF_NONE);
+ g_signal_connect(G_OBJECT(RenameFilePrefixPathButton),"clicked",G_CALLBACK(Scan_Rename_File_Prefix_Path),NULL);
+ gtk_tooltips_set_tip(Tips,RenameFilePrefixPathButton,_("Prefix mask with current path"),NULL);
+
+ // Set up list model which is used both by the combobox and the editor
+ RenameFileListModel = gtk_list_store_new(MASK_EDITOR_COUNT, G_TYPE_STRING);
+
+ // The combo box to select the mask to apply
+ RenameFileMaskCombo = gtk_combo_box_entry_new();
+ gtk_combo_box_set_model(GTK_COMBO_BOX(RenameFileMaskCombo), GTK_TREE_MODEL(RenameFileListModel));
+ gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(RenameFileMaskCombo), MASK_EDITOR_TEXT);
+
+ gtk_box_pack_start(GTK_BOX(HBox4),RenameFileMaskCombo,TRUE,TRUE,2);
+ gtk_container_set_border_width(GTK_CONTAINER(HBox4), 2);
+ gtk_tooltips_set_tip(Tips,GTK_WIDGET(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)),
+ _("Select or type in a mask using codes (see Legend) to parse tag fields. "
+ "Used to rename the file.\nUse / to make directories. If the first character "
+ "is /, it's a absolute path, otherwise is relative to the old path."),NULL);
+ // Signal to generate preview (preview of the new filename)
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)),"changed",
+ G_CALLBACK(Scan_Rename_File_Generate_Preview),NULL);
+
+ // Load masks into the combobox from a file
+ Load_Rename_File_Masks_List(RenameFileListModel, MASK_EDITOR_TEXT, Rename_File_Masks);
+ if (RENAME_FILE_DEFAULT_MASK)
+ {
+ Add_String_To_Combo_List(RenameFileListModel, RENAME_FILE_DEFAULT_MASK);
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child), RENAME_FILE_DEFAULT_MASK);
+ }else
+ {
+ gtk_combo_box_set_active(GTK_COMBO_BOX(RenameFileMaskCombo), 0);
+ }
+
+ // Mask status icon
+ MaskStatusIconBox = Create_Pixmap_Icon_With_Event_Box("easytag-forbidden");
+ gtk_box_pack_start(GTK_BOX(HBox4),MaskStatusIconBox,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,MaskStatusIconBox,_("Invalid Scanner Mask"),NULL);
+ // Signal connection to check if mask is correct into the mask entry
+ g_signal_connect_swapped(G_OBJECT(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)),"changed",
+ G_CALLBACK(Scan_Check_Rename_File_Mask),G_OBJECT(MaskStatusIconBox));
+
+ /* Preview label */
+ RenameFilePreviewLabel = gtk_label_new(_("Rename file preview..."));
+ gtk_label_set_line_wrap(GTK_LABEL(RenameFilePreviewLabel),TRUE);
+ gtk_widget_show(RenameFilePreviewLabel);
+ gtk_box_pack_start(GTK_BOX(vbox),RenameFilePreviewLabel,TRUE,TRUE,0);
+
+ /*
+ * Frame for Processing Fields
+ */
+ ProcessFieldsFrame = gtk_frame_new (_(Scanner_Option_Menu_Items[2]));
+ gtk_box_pack_start(GTK_BOX(ScanVBox),ProcessFieldsFrame,FALSE,FALSE,0);
+
+ VBox = gtk_vbox_new(FALSE,0);
+ gtk_container_add(GTK_CONTAINER(ProcessFieldsFrame),VBox);
+ gtk_container_set_border_width(GTK_CONTAINER(VBox), 4);
+ gtk_widget_show(VBox);
+
+ /* Group: select entry fields to process */
+ hbox = gtk_hbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),hbox,FALSE,FALSE,2);
+ EventBox = gtk_event_box_new();
+ Label = gtk_label_new(_("Select fields:"));
+ gtk_box_pack_start(GTK_BOX(hbox),EventBox,FALSE,FALSE,2);
+ gtk_container_add(GTK_CONTAINER(EventBox),Label);
+ gtk_tooltips_set_tip(Tips,EventBox,_("The buttons on the right represent the fields which can "
+ "be processed. Select those who interest you."),NULL);
+ // Advice for Translators : set the first letter of filename translated
+ ProcessFileNameField = gtk_toggle_button_new_with_label( _("F"));
+ gtk_tooltips_set_tip(Tips,ProcessFileNameField, _("Process file name field"),NULL);
+ // Advice for Translators : set the first letter of title translated
+ ProcessTitleField = gtk_toggle_button_new_with_label( _("T"));
+ gtk_tooltips_set_tip(Tips,ProcessTitleField, _("Process title field"),NULL);
+ // Advice for Translators : set the first letter of artist translated
+ ProcessArtistField = gtk_toggle_button_new_with_label( _("Ar"));
+ gtk_tooltips_set_tip(Tips,ProcessArtistField, _("Process file artist field"),NULL);
+ // Advice for Translators : set the first letter of album translated
+ ProcessAlbumField = gtk_toggle_button_new_with_label( _("Al"));
+ gtk_tooltips_set_tip(Tips,ProcessAlbumField, _("Process album field"),NULL);
+ // Advice for Translators : set the first letter of genre translated
+ ProcessGenreField = gtk_toggle_button_new_with_label( _("G"));
+ gtk_tooltips_set_tip(Tips,ProcessGenreField, _("Process genre field"),NULL);
+ // Advice for Translators : set the first letter of comment translated
+ ProcessCommentField = gtk_toggle_button_new_with_label( _("Cm"));
+ gtk_tooltips_set_tip(Tips,ProcessCommentField, _("Process comment field"),NULL);
+ // Advice for Translators : set the first letter of composer translated
+ ProcessComposerField = gtk_toggle_button_new_with_label( _("Cp"));
+ gtk_tooltips_set_tip(Tips,ProcessComposerField, _("Process composer field"),NULL);
+ // Advice for Translators : set the first letter of orig artist translated
+ ProcessOrigArtistField = gtk_toggle_button_new_with_label( _("O"));
+ gtk_tooltips_set_tip(Tips,ProcessOrigArtistField, _("Process original artist field"),NULL);
+ // Advice for Translators : set the first letter of copyright translated
+ ProcessCopyrightField = gtk_toggle_button_new_with_label( _("Cr"));
+ gtk_tooltips_set_tip(Tips,ProcessCopyrightField, _("Process copyright field"),NULL);
+ // Advice for Translators : set the first letter of URL translated
+ ProcessURLField = gtk_toggle_button_new_with_label( _("U"));
+ gtk_tooltips_set_tip(Tips,ProcessURLField, _("Process URL field"),NULL);
+ // Advice for Translators : set the first letter of encoder name translated
+ ProcessEncodedByField = gtk_toggle_button_new_with_label( _("E"));
+ gtk_tooltips_set_tip(Tips,ProcessEncodedByField, _("Process encoder name field"),NULL);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessFileNameField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessTitleField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessArtistField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessAlbumField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessGenreField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessCommentField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessComposerField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessOrigArtistField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessCopyrightField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessURLField, TRUE,TRUE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessEncodedByField, TRUE,TRUE,2);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFileNameField), PROCESS_FILENAME_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessTitleField), PROCESS_TITLE_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessArtistField), PROCESS_ARTIST_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessAlbumField), PROCESS_ALBUM_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessGenreField), PROCESS_GENRE_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessCommentField), PROCESS_COMMENT_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessComposerField), PROCESS_COMPOSER_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessOrigArtistField), PROCESS_ORIG_ARTIST_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessCopyrightField), PROCESS_COPYRIGHT_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessURLField), PROCESS_URL_FIELD);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessEncodedByField), PROCESS_ENCODED_BY_FIELD);
+ g_signal_connect(G_OBJECT(ProcessFileNameField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessTitleField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessArtistField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessAlbumField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessGenreField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessCommentField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessComposerField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessOrigArtistField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessCopyrightField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessURLField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ g_signal_connect(G_OBJECT(ProcessEncodedByField), "toggled",G_CALLBACK(Select_Fields_Set_Sensitive),NULL);
+ /* The small buttons */
+ vbox = gtk_vbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(hbox),vbox,FALSE,FALSE,0);
+ Button = gtk_button_new();
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(Select_Fields_Invert_Selection),NULL);
+ gtk_box_pack_start(GTK_BOX(vbox),Button,FALSE,FALSE,0);
+ gtk_widget_set_size_request(Button, 12, 12);
+ //Icon = gtk_image_new_from_stock("easytag-blackwhite", GTK_ICON_SIZE_BUTTON);
+ Icon = Create_Xpm_Image((const char **)blackwhite_xpm);
+ GTK_WIDGET_UNSET_FLAGS(Button,GTK_CAN_DEFAULT); // To have enought space to display the icon
+ GTK_WIDGET_UNSET_FLAGS(Button,GTK_CAN_FOCUS);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_tooltips_set_tip(Tips,Button,_("Invert Selection"),NULL);
+ Button = gtk_button_new();
+ g_signal_connect(G_OBJECT(Button),"clicked",G_CALLBACK(Select_Fields_Select_Unselect_All),NULL);
+ gtk_box_pack_start(GTK_BOX(vbox),Button,FALSE,FALSE,0);
+ gtk_widget_set_size_request(Button, 12, 12);
+ Icon = Create_Xpm_Image((const char **)black_xpm);
+ GTK_WIDGET_UNSET_FLAGS(Button,GTK_CAN_DEFAULT); // To have enought space to display the icon
+ GTK_WIDGET_UNSET_FLAGS(Button,GTK_CAN_FOCUS);
+ gtk_container_add(GTK_CONTAINER(Button),Icon);
+ gtk_tooltips_set_tip(Tips,Button,_("Select/Unselect All."),NULL);
+
+ /* Separator line */
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ /* Group: character conversion */
+ ProcessFieldsConvertIntoSpace = gtk_check_button_new_with_label(_("Convert '_' and '%20' to ' '"));
+ ProcessFieldsConvertSpace = gtk_check_button_new_with_label(_("Convert ' ' to '_'"));
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsConvertIntoSpace,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsConvertSpace, FALSE,FALSE,0);
+ hbox = gtk_hbox_new(FALSE,2);
+ ProcessFieldsConvert = gtk_check_button_new_with_label(_("Convert:")); // Patch from Ben Hearsum, Oct. 3, 2003
+ ProcessFieldsConvertTo = gtk_entry_new();
+ ProcessFieldsConvertLabelTo = gtk_label_new(_("to: ")); // A "space" at the end to allow an other traduction for "to :" (needed in French!)
+ ProcessFieldsConvertFrom = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(ProcessFieldsConvertTo), 1);
+ gtk_entry_set_max_length(GTK_ENTRY(ProcessFieldsConvertFrom), 1);
+ gtk_widget_set_size_request(ProcessFieldsConvertTo,40,-1);
+ gtk_widget_set_size_request(ProcessFieldsConvertFrom,40,-1);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvert, FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvertFrom, FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvertLabelTo,FALSE,FALSE,4);
+ gtk_box_pack_start(GTK_BOX(hbox),ProcessFieldsConvertTo, FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),hbox,FALSE,FALSE,0);
+ /* List creation for check buttons in group */
+ pf_cb_group1 = g_list_append (pf_cb_group1,ProcessFieldsConvertIntoSpace);
+ pf_cb_group1 = g_list_append (pf_cb_group1,ProcessFieldsConvertSpace);
+ pf_cb_group1 = g_list_append (pf_cb_group1,ProcessFieldsConvert);
+ /* Toggled signals */
+ g_signal_connect(G_OBJECT(ProcessFieldsConvertIntoSpace),"toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group1);
+ g_signal_connect(G_OBJECT(ProcessFieldsConvertSpace), "toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group1);
+ g_signal_connect(G_OBJECT(ProcessFieldsConvert), "toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group1);
+ g_signal_connect(G_OBJECT(ProcessFieldsConvert), "toggled",G_CALLBACK(Process_Fields_Convert_Check_Button_Toggled),NULL);
+ /* Set check buttons to init value */
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsConvertIntoSpace),PF_CONVERT_INTO_SPACE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsConvertSpace),PF_CONVERT_SPACE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsConvert),PF_CONVERT);
+ /* Tooltips */
+ gtk_tooltips_set_tip(Tips,ProcessFieldsConvertIntoSpace,
+ _("The underscore character or the string '%20' are replaced by one space. "
+ "Example, before: 'Text%20In%20An_Entry', after: 'Text In An Entry'."),NULL);
+ gtk_tooltips_set_tip(Tips,ProcessFieldsConvertSpace,
+ _("The space character is replaced by one underscore character. "
+ "Example, before: 'Text In An Entry', after: 'Text_In_An_Entry'."),NULL);
+ gtk_tooltips_set_tip(Tips,ProcessFieldsConvert,_("Replace a character by an other one."),NULL);
+
+ /* Separator line */
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ /* Group: capitalize, ... */
+ ProcessFieldsAllUppercase = gtk_check_button_new_with_label (_("All uppercase"));
+ ProcessFieldsAllDowncase = gtk_check_button_new_with_label (_("All downcase"));
+ ProcessFieldsFirstLetterUppercase = gtk_check_button_new_with_label(_("First letter uppercase"));
+ ProcessFieldsFirstLettersUppercase = gtk_check_button_new_with_label(_("First letter uppercase of each word"));
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsAllUppercase, FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsAllDowncase, FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsFirstLetterUppercase, FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsFirstLettersUppercase,FALSE,FALSE,0);
+ /* List creation for check buttons in group */
+ pf_cb_group2 = g_list_append(pf_cb_group2,ProcessFieldsAllUppercase);
+ pf_cb_group2 = g_list_append(pf_cb_group2,ProcessFieldsAllDowncase);
+ pf_cb_group2 = g_list_append(pf_cb_group2,ProcessFieldsFirstLetterUppercase);
+ pf_cb_group2 = g_list_append(pf_cb_group2,ProcessFieldsFirstLettersUppercase);
+ /* Toggled signals */
+ g_signal_connect(G_OBJECT(ProcessFieldsAllUppercase),"toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group2);
+ g_signal_connect(G_OBJECT(ProcessFieldsAllDowncase), "toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group2);
+ g_signal_connect(G_OBJECT(ProcessFieldsFirstLetterUppercase),"toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group2);
+ g_signal_connect(G_OBJECT(ProcessFieldsFirstLettersUppercase),"toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group2);
+ /* Set check buttons to init value */
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsAllUppercase),PF_CONVERT_ALL_UPPERCASE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsAllDowncase),PF_CONVERT_ALL_DOWNCASE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsFirstLetterUppercase),PF_CONVERT_FIRST_LETTER_UPPERCASE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsFirstLettersUppercase),PF_CONVERT_FIRST_LETTERS_UPPERCASE);
+ /* Tooltips */
+ gtk_tooltips_set_tip(Tips,ProcessFieldsAllUppercase,
+ _("Convert all words in all fields to upper case. "
+ "Example, before: 'Text IN AN entry', after: 'TEXT IN AN ENTRY'."),NULL);
+ gtk_tooltips_set_tip(Tips,ProcessFieldsAllDowncase,
+ _("Convert all words in all fields to lower case. "
+ "Example, before: 'TEXT IN an entry', after: 'text in an entry'."),NULL);
+ gtk_tooltips_set_tip(Tips,ProcessFieldsFirstLetterUppercase,
+ _("Convert the initial of the first word in all fields to upper case. "
+ "Example, before: 'text IN An ENTRY', after: 'Text in an entry'."),NULL);
+ gtk_tooltips_set_tip(Tips,ProcessFieldsFirstLettersUppercase,
+ _("Convert the initial of each word in all fields to upper case. "
+ "Example, before: 'Text in an ENTRY', after: 'Text In An Entry'."),NULL);
+
+ /* Separator line */
+ Separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(VBox),Separator,FALSE,FALSE,0);
+
+ /* Group: insert/remove spaces */
+ ProcessFieldsRemoveSpace = gtk_check_button_new_with_label(_("Remove spaces"));
+ ProcessFieldsInsertSpace = gtk_check_button_new_with_label(_("Insert a space before an uppercase letter"));
+ ProcessFieldsOnlyOneSpace = gtk_check_button_new_with_label(_("Remove duplicates of space or underscore"));
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsRemoveSpace,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsInsertSpace,FALSE,FALSE,0);
+ gtk_box_pack_start(GTK_BOX(VBox),ProcessFieldsOnlyOneSpace,FALSE,FALSE,0);
+ /* List creation for check buttons in group */
+ pf_cb_group3 = g_list_append (pf_cb_group3,ProcessFieldsRemoveSpace);
+ pf_cb_group3 = g_list_append (pf_cb_group3,ProcessFieldsInsertSpace);
+ pf_cb_group3 = g_list_append (pf_cb_group3,ProcessFieldsOnlyOneSpace);
+ /* Toggled signals */
+ g_signal_connect(G_OBJECT(ProcessFieldsRemoveSpace), "toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group3);
+ g_signal_connect(G_OBJECT(ProcessFieldsInsertSpace), "toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group3);
+ g_signal_connect(G_OBJECT(ProcessFieldsOnlyOneSpace),"toggled",G_CALLBACK(Process_Fields_Check_Button_Toggled),pf_cb_group3);
+ /* Set check buttons to init value */
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsRemoveSpace),PF_REMOVE_SPACE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsInsertSpace),PF_INSERT_SPACE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFieldsOnlyOneSpace),PF_ONLY_ONE_SPACE);
+ /* Tooltips */
+ gtk_tooltips_set_tip(Tips,ProcessFieldsRemoveSpace,
+ _("All spaces between words are removed. "
+ "Example, before: 'Text In An Entry', after: 'TextInAnEntry'."),NULL);
+ gtk_tooltips_set_tip(Tips,ProcessFieldsInsertSpace,
+ _("A space is inserted before each upper case letter. "
+ "Example, before: 'TextInAnEntry', after: 'Text In An Entry'."),NULL);
+ gtk_tooltips_set_tip(Tips,ProcessFieldsOnlyOneSpace,
+ _("Duplicated spaces or underscores are removed. "
+ "Example, before: 'Text__In__An Entry', after: 'Text_In_An Entry'."),NULL);
+
+ /*
+ * Frame to display codes legend
+ */
+ LegendFrame = gtk_frame_new (_("Legend"));
+ gtk_box_pack_start(GTK_BOX(ScanVBox),LegendFrame,FALSE,FALSE,0);
+ /* Legend labels */
+ Table = gtk_table_new(3,3,FALSE);
+ gtk_container_add(GTK_CONTAINER(LegendFrame),Table);
+ gtk_container_set_border_width(GTK_CONTAINER(Table),4);
+ Label = gtk_label_new(_("%a : artist"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,0,1,0,1);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%b : album"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,0,1,1,2);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%c : comment"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,0,1,2,3);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%p : composer"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,0,1,3,4);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%r : copyright"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,0,1,4,5);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%d : disc number"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,1,2,0,1);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%e : encoded by"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,1,2,1,2);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%g : genre"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,1,2,2,3);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%i : ignored"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,1,2,3,4);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%l : number of tracks"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,1,2,4,5);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%o : orig. artist"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,2,3,0,1);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%n : track"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,2,3,1,2);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%t : title"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,2,3,2,3);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%u : URL"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,2,3,3,4);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+ Label = gtk_label_new(_("%y : year"));
+ gtk_table_attach_defaults(GTK_TABLE(Table),Label,2,3,4,5);
+ gtk_misc_set_alignment(GTK_MISC(Label),0,0.5);
+
+ /*
+ * Masks Editor
+ */
+ MaskEditorFrame = gtk_frame_new (_("Mask Editor"));
+ gtk_box_pack_start(GTK_BOX(ScanVBox),MaskEditorFrame,FALSE,FALSE,0);
+ MaskEditorHBox = gtk_hbox_new(FALSE,4);
+ gtk_container_add(GTK_CONTAINER(MaskEditorFrame),MaskEditorHBox);
+ gtk_container_set_border_width(GTK_CONTAINER(MaskEditorHBox), 4);
+
+ /* The editor part */
+ MaskEditorVBox = gtk_vbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(MaskEditorHBox),MaskEditorVBox,TRUE,TRUE,0);
+ MaskEditorScrollWindow = gtk_scrolled_window_new(NULL,NULL);
+ gtk_box_pack_start(GTK_BOX(MaskEditorVBox),MaskEditorScrollWindow,TRUE,TRUE,0);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(MaskEditorScrollWindow),
+ GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_widget_set_size_request(GTK_WIDGET(MaskEditorScrollWindow), -1, 101);
+
+ /* The list */
+ MaskEditorList = gtk_tree_view_new();
+ gtk_tree_view_set_model(GTK_TREE_VIEW(MaskEditorList), GTK_TREE_MODEL(ScanTagListModel));
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(NULL,
+ renderer, "text", MASK_EDITOR_TEXT, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(MaskEditorList), column);
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(MaskEditorList), FALSE);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList)),
+ GTK_SELECTION_MULTIPLE);
+ gtk_tree_view_set_reorderable(GTK_TREE_VIEW(MaskEditorList), TRUE);
+ gtk_container_add(GTK_CONTAINER(MaskEditorScrollWindow), MaskEditorList);
+ g_signal_connect_after(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList))),
+ "changed", G_CALLBACK(Mask_Editor_List_Row_Selected), NULL);
+ g_signal_connect(G_OBJECT(MaskEditorList), "key-press-event",
+ G_CALLBACK(Mask_Editor_List_Key_Press), NULL);
+ /* The entry */
+ hbox = gtk_hbox_new(FALSE,2);
+ gtk_box_pack_start(GTK_BOX(MaskEditorVBox),hbox,FALSE,FALSE,0);
+ MaskEditorEntry = gtk_entry_new();
+ gtk_box_pack_start(GTK_BOX(hbox),MaskEditorEntry,TRUE,TRUE,2);
+ g_signal_connect(G_OBJECT(MaskEditorEntry),"changed",
+ G_CALLBACK(Mask_Editor_Entry_Changed),NULL);
+ // Mask status icon
+ MaskStatusIconBox = Create_Pixmap_Icon_With_Event_Box("easytag-forbidden");
+ gtk_box_pack_start(GTK_BOX(hbox),MaskStatusIconBox,FALSE,FALSE,0);
+ gtk_tooltips_set_tip(Tips,MaskStatusIconBox,_("Invalid Scanner Mask"),NULL);
+ // Signal connection to check if mask is correct into the mask entry
+ g_signal_connect_swapped(G_OBJECT(MaskEditorEntry),"changed",
+ G_CALLBACK(Scan_Check_Editor_Mask),G_OBJECT(MaskStatusIconBox));
+
+ /* The buttons part */
+ MaskEditorVBox = gtk_vbox_new(FALSE,0);
+ gtk_box_pack_start(GTK_BOX(MaskEditorHBox),MaskEditorVBox,FALSE,FALSE,0);
+
+ /* New mask button */
+ MaskEditorNewButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_NEW, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(MaskEditorNewButton),Icon);
+ gtk_box_pack_start(GTK_BOX(MaskEditorVBox),MaskEditorNewButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(MaskEditorNewButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,MaskEditorNewButton,_("Create New Mask"),NULL);
+ g_signal_connect(G_OBJECT(MaskEditorNewButton),"clicked",
+ G_CALLBACK(Mask_Editor_List_New),NULL);
+
+ /* Move up mask button */
+ MaskEditorUpButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_GO_UP, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(MaskEditorUpButton),Icon);
+ gtk_box_pack_start(GTK_BOX(MaskEditorVBox),MaskEditorUpButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(MaskEditorUpButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,MaskEditorUpButton,_("Move Up this Mask"),NULL);
+ g_signal_connect(G_OBJECT(MaskEditorUpButton),"clicked",
+ G_CALLBACK(Mask_Editor_List_Move_Up),NULL);
+
+ /* Move down mask button */
+ MaskEditorDownButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(MaskEditorDownButton),Icon);
+ gtk_box_pack_start(GTK_BOX(MaskEditorVBox),MaskEditorDownButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(MaskEditorDownButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,MaskEditorDownButton,_("Move Down this Mask"),NULL);
+ g_signal_connect(G_OBJECT(MaskEditorDownButton),"clicked",
+ G_CALLBACK(Mask_Editor_List_Move_Down),NULL);
+
+ /* Copy mask button */
+ MaskEditorCopyButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(MaskEditorCopyButton),Icon);
+ gtk_box_pack_start(GTK_BOX(MaskEditorVBox),MaskEditorCopyButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(MaskEditorCopyButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,MaskEditorCopyButton,_("Duplicate Mask"),NULL);
+ g_signal_connect(G_OBJECT(MaskEditorCopyButton),"clicked",
+ G_CALLBACK(Mask_Editor_List_Duplicate),NULL);
+
+ /* Add mask button */
+ MaskEditorAddButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(MaskEditorAddButton),Icon);
+ gtk_box_pack_start(GTK_BOX(MaskEditorVBox),MaskEditorAddButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(MaskEditorAddButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,MaskEditorAddButton,_("Add Default Masks"),NULL);
+ g_signal_connect(G_OBJECT(MaskEditorAddButton),"clicked",
+ G_CALLBACK(Mask_Editor_List_Add),NULL);
+
+ /* Remove mask button */
+ MaskEditorRemoveButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(MaskEditorRemoveButton),Icon);
+ gtk_box_pack_start(GTK_BOX(MaskEditorVBox),MaskEditorRemoveButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(MaskEditorRemoveButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,MaskEditorRemoveButton,_("Remove Mask"),NULL);
+ g_signal_connect(G_OBJECT(MaskEditorRemoveButton),"clicked",
+ G_CALLBACK(Mask_Editor_List_Remove),NULL);
+
+ /* Save mask button */
+ MaskEditorSaveButton = gtk_button_new();
+ Icon = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_container_add(GTK_CONTAINER(MaskEditorSaveButton),Icon);
+ gtk_box_pack_end(GTK_BOX(MaskEditorVBox),MaskEditorSaveButton,FALSE,FALSE,0);
+ gtk_button_set_relief(GTK_BUTTON(MaskEditorSaveButton),GTK_RELIEF_NONE);
+ gtk_tooltips_set_tip(Tips,MaskEditorSaveButton,_("Save Masks"),NULL);
+ g_signal_connect(G_OBJECT(MaskEditorSaveButton),"clicked",
+ G_CALLBACK(Mask_Editor_List_Save_Button),NULL);
+
+ gtk_widget_show(ScanVBox);
+ gtk_widget_show_all(HBox1);
+ gtk_widget_show_all(HBox2);
+ gtk_widget_show_all(HBox4);
+ gtk_widget_show(ScannerWindow);
+
+ /* Init position of the scanner window */
+ Scan_Set_Scanner_Window_Init_Position();
+
+ /* To initialize the mask status icon and visibility */
+ g_signal_emit_by_name(G_OBJECT(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child)),"changed");
+ g_signal_emit_by_name(G_OBJECT(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)),"changed");
+ g_signal_emit_by_name(G_OBJECT(MaskEditorEntry),"changed");
+ g_signal_emit_by_name(G_OBJECT(LegendButton),"toggled"); /* To hide legend frame */
+ g_signal_emit_by_name(G_OBJECT(MaskEditorButton),"toggled"); /* To hide mask editor frame */
+ g_signal_emit_by_name(G_OBJECT(ProcessFieldsConvert),"toggled");/* To enable / disable entries */
+
+ // Activate the current menu in the option menu
+ gtk_combo_box_set_active(GTK_COMBO_BOX(ScannerOptionCombo), scanner_type);
+}
+
+gboolean ScannerWindow_Key_Press (GtkWidget *window, GdkEvent *event)
+{
+ GdkEventKey *kevent;
+
+ if (event && event->type == GDK_KEY_PRESS)
+ {
+ kevent = (GdkEventKey *)event;
+ switch(kevent->keyval)
+ {
+ case GDK_Escape:
+ ScannerWindow_Quit();
+ break;
+ }
+ }
+ return FALSE;
+}
+
+/*
+ * Select the scanner to run for the current ETFile
+ */
+void Scan_Select_Mode_And_Run_Scanner (ET_File *ETFile)
+{
+ if (!ScannerWindow || !ETFile) return;
+
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_FILL_TAG)
+ {
+ /* Run Scanner Type: Scan Tag */
+ Scan_Tag_With_Mask(ETFile);
+ } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_RENAME_FILE)
+ {
+ /* Run Scanner Type: Rename File */
+ Scan_Rename_File_With_Mask(ETFile);
+ } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_PROCESS_FIELDS)
+ {
+ /* Run Scanner Type: Process Fields */
+ Scan_Process_Fields(ETFile);
+ }
+}
+
+void Scan_Use_Fill_Tag_Scanner (void)
+{
+ if (!ScannerWindow || gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) != SCANNER_FILL_TAG)
+ Open_ScannerWindow(SCANNER_FILL_TAG);
+ else
+ Action_Scan_Selected_Files();
+}
+
+
+void Scan_Use_Rename_File_Scanner (void)
+{
+ if (!ScannerWindow || gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) != SCANNER_RENAME_FILE)
+ Open_ScannerWindow(SCANNER_RENAME_FILE);
+ else
+ Action_Scan_Selected_Files();
+}
+
+void Scan_Use_Process_Fields_Scanner (void)
+{
+ if (!ScannerWindow || gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) != SCANNER_PROCESS_FIELDS)
+ Open_ScannerWindow(SCANNER_PROCESS_FIELDS);
+ else
+ Action_Scan_Selected_Files();
+}
+
+
+/* Callback from Open_ScannerWindow */
+void ScannerWindow_Quit (void)
+{
+ if (ScannerWindow)
+ {
+ if (SCAN_TAG_DEFAULT_MASK) g_free(SCAN_TAG_DEFAULT_MASK);
+ SCAN_TAG_DEFAULT_MASK = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(ScanTagMaskCombo)->child)));
+ Add_String_To_Combo_List(ScanTagListModel, SCAN_TAG_DEFAULT_MASK);
+ Save_Rename_File_Masks_List(ScanTagListModel, MASK_EDITOR_TEXT);
+
+ if (RENAME_FILE_DEFAULT_MASK) g_free(RENAME_FILE_DEFAULT_MASK);
+ RENAME_FILE_DEFAULT_MASK = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(RenameFileMaskCombo)->child)));
+ Add_String_To_Combo_List(RenameFileListModel, RENAME_FILE_DEFAULT_MASK);
+ Save_Rename_File_Masks_List(RenameFileListModel, MASK_EDITOR_TEXT);
+
+ ScannerWindow_Apply_Changes();
+
+ gtk_widget_destroy(ScannerWindow);
+ gtk_list_store_clear(ScanTagListModel);
+ gtk_list_store_clear(RenameFileListModel);
+ ScannerWindow = (GtkWidget *)NULL;
+ ScannerOptionCombo= (GtkWidget *)NULL;
+ SWScanButton = (GtkWidget *)NULL;
+
+ // To avoid crashs after tests
+ ScanTagMaskCombo = (GtkWidget *)NULL;
+ RenameFileMaskCombo = (GtkWidget *)NULL;
+ MaskEditorEntry = (GtkWidget *)NULL;
+ LegendFrame = (GtkWidget *)NULL;
+ ProcessFieldsConvertIntoSpace = (GtkWidget *)NULL;
+ ProcessFieldsConvertSpace = (GtkWidget *)NULL;
+ FillTagPreviewLabel = (GtkWidget *)NULL;
+ RenameFilePreviewLabel = (GtkWidget *)NULL;
+ }
+}
+
+
+/*
+ * For the configuration file...
+ */
+void ScannerWindow_Apply_Changes (void)
+{
+ if (ScannerWindow)
+ {
+ gint x, y;//, width, height;
+
+ if ( ScannerWindow->window!=NULL && gdk_window_is_visible(ScannerWindow->window)
+ && gdk_window_get_state(ScannerWindow->window)!=GDK_WINDOW_STATE_MAXIMIZED )
+ {
+ // Position and Origin of the scanner window
+ gdk_window_get_root_origin(ScannerWindow->window,&x,&y);
+ SCANNER_WINDOW_X = x;
+ SCANNER_WINDOW_Y = y;
+ //gdk_window_get_size(ScannerWindow->window,&width,&height);
+ //SCANNER_WINDOW_WIDTH = width;
+ //SCANNER_WINDOW_HEIGHT = height;
+ }
+
+ // The scanner selected
+ SCANNER_TYPE = gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo));
+
+ SCAN_MASK_EDITOR_BUTTON = GTK_TOGGLE_BUTTON(MaskEditorButton)->active;
+ SCAN_LEGEND_BUTTON = GTK_TOGGLE_BUTTON(LegendButton)->active;
+
+ /* Group: select entries to process */
+ PROCESS_FILENAME_FIELD = GTK_TOGGLE_BUTTON(ProcessFileNameField)->active;
+ PROCESS_TITLE_FIELD = GTK_TOGGLE_BUTTON(ProcessTitleField)->active;
+ PROCESS_ARTIST_FIELD = GTK_TOGGLE_BUTTON(ProcessArtistField)->active;
+ PROCESS_ALBUM_FIELD = GTK_TOGGLE_BUTTON(ProcessAlbumField)->active;
+ PROCESS_GENRE_FIELD = GTK_TOGGLE_BUTTON(ProcessGenreField)->active;
+ PROCESS_COMMENT_FIELD = GTK_TOGGLE_BUTTON(ProcessCommentField)->active;
+ PROCESS_COMPOSER_FIELD = GTK_TOGGLE_BUTTON(ProcessComposerField)->active;
+ PROCESS_ORIG_ARTIST_FIELD = GTK_TOGGLE_BUTTON(ProcessOrigArtistField)->active;
+ PROCESS_COPYRIGHT_FIELD = GTK_TOGGLE_BUTTON(ProcessCopyrightField)->active;
+ PROCESS_URL_FIELD = GTK_TOGGLE_BUTTON(ProcessURLField)->active;
+ PROCESS_ENCODED_BY_FIELD = GTK_TOGGLE_BUTTON(ProcessEncodedByField)->active;
+
+ /* Group: convert one character */
+ PF_CONVERT_INTO_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsConvertIntoSpace)->active;
+ PF_CONVERT_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsConvertSpace)->active;
+ PF_CONVERT = GTK_TOGGLE_BUTTON(ProcessFieldsConvert)->active;
+
+ /* Group: capitalize */
+ PF_CONVERT_ALL_UPPERCASE = GTK_TOGGLE_BUTTON(ProcessFieldsAllUppercase)->active;
+ PF_CONVERT_ALL_DOWNCASE = GTK_TOGGLE_BUTTON(ProcessFieldsAllDowncase)->active;
+ PF_CONVERT_FIRST_LETTER_UPPERCASE = GTK_TOGGLE_BUTTON(ProcessFieldsFirstLetterUppercase)->active;
+ PF_CONVERT_FIRST_LETTERS_UPPERCASE = GTK_TOGGLE_BUTTON(ProcessFieldsFirstLettersUppercase)->active;
+
+ /* Group: remove/insert space */
+ PF_REMOVE_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsConvertIntoSpace)->active;
+ PF_INSERT_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsConvertSpace)->active;
+ PF_ONLY_ONE_SPACE = GTK_TOGGLE_BUTTON(ProcessFieldsOnlyOneSpace)->active;
+ }
+}
+
+
+/* Callback from Option button */
+void Scan_Option_Button (void)
+{
+ Open_OptionsWindow();
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(OptionsNoteBook), OptionsNoteBook_Scanner_Page_Num);
+}
+
+
+
+/*
+ * Check if mask of the "Scan Tag" is valid. Return TRUE if valid, else FALSE.
+ */
+gboolean Scan_Check_Scan_Tag_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source)
+{
+ gchar *tmp = NULL;
+ gchar *mask = NULL;
+ gint loop = 0;
+
+
+ if (!widget_to_show_hide || !widget_source)
+ goto Bad_Mask;
+
+ mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget_source)));
+ if (!mask || strlen(mask)<1)
+ goto Bad_Mask;
+
+ while (mask)
+ {
+ if ( (tmp=strrchr(mask,'%'))==NULL )
+ {
+ if (loop==0)
+ /* There is no code the first time => not accepted */
+ goto Bad_Mask;
+ else
+ /* There is no more code => accepted */
+ goto Good_Mask;
+ }
+ if ( strlen(tmp)>1
+ && (tmp[1]=='a' || tmp[1]=='b' || tmp[1]=='c' || tmp[1]=='d' || tmp[1]=='p' ||
+ tmp[1]=='r' || tmp[1]=='e' || tmp[1]=='g' || tmp[1]=='i' || tmp[1]=='l' ||
+ tmp[1]=='o' || tmp[1]=='n' || tmp[1]=='t' || tmp[1]=='u' || tmp[1]=='y' ) )
+ {
+ /* Code is correct */
+ *(mask+strlen(mask)-strlen(tmp)) = '\0';
+ }else
+ {
+ goto Bad_Mask;
+ }
+
+ /* Check the following code and separator */
+ if ( (tmp=strrchr(mask,'%'))==NULL )
+ /* There is no more code => accepted */
+ goto Good_Mask;
+
+ if ( strlen(tmp)>2
+ && (tmp[1]=='a' || tmp[1]=='b' || tmp[1]=='c' || tmp[1]=='d' || tmp[1]=='p' ||
+ tmp[1]=='r' || tmp[1]=='e' || tmp[1]=='g' || tmp[1]=='i' || tmp[1]=='l' ||
+ tmp[1]=='o' || tmp[1]=='n' || tmp[1]=='t' || tmp[1]=='u' || tmp[1]=='y' ) )
+ {
+ /* There is a separator and code is correct */
+ *(mask+strlen(mask)-strlen(tmp)) = '\0';
+ }else
+ {
+ goto Bad_Mask;
+ }
+ loop++;
+ }
+
+ Bad_Mask:
+ g_free(mask);
+ gtk_widget_show(GTK_WIDGET(widget_to_show_hide));
+ return FALSE;
+
+ Good_Mask:
+ g_free(mask);
+ gtk_widget_hide(GTK_WIDGET(widget_to_show_hide));
+ return TRUE;
+}
+/*
+ * Check if mask of the "Rename File" is valid. Return TRUE if valid, else FALSE.
+ */
+gboolean Scan_Check_Rename_File_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source)
+{
+ gchar *tmp = NULL;
+ gchar *mask = NULL;
+
+
+ if (!widget_to_show_hide || !widget_source)
+ goto Bad_Mask;
+
+ mask = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget_source)));
+ if (!mask || strlen(mask)<1)
+ goto Bad_Mask;
+
+ // Since version 1.99.4, it is available!
+ /*if ( strchr(mask,G_DIR_SEPARATOR)!=NULL ) // Renaming directory is not yet available
+ goto Bad_Mask;*/
+ // Not a valid path....
+ if ( strstr(mask,"//") != NULL
+ || strstr(mask,"./") != NULL
+ || strstr(mask,"../") != NULL)
+ goto Bad_Mask;
+
+ while (mask)
+ {
+ if ( (tmp=strrchr(mask,'%'))==NULL )
+ {
+ /* There is no more code. */
+ /* No code in mask is accepted. */
+ goto Good_Mask;
+ }
+ if ( strlen(tmp)>1
+ && (tmp[1]=='a' || tmp[1]=='b' || tmp[1]=='c' || tmp[1]=='d' || tmp[1]=='p' ||
+ tmp[1]=='r' || tmp[1]=='e' || tmp[1]=='g' || tmp[1]=='i' || tmp[1]=='l' ||
+ tmp[1]=='o' || tmp[1]=='n' || tmp[1]=='t' || tmp[1]=='u' || tmp[1]=='y' ) )
+ {
+ /* The code is valid. */
+ /* No separator is accepted. */
+ *(mask+strlen(mask)-strlen(tmp)) = '\0';
+ }else
+ {
+ goto Bad_Mask;
+ }
+ }
+
+ Bad_Mask:
+ g_free(mask);
+ gtk_widget_show(GTK_WIDGET(widget_to_show_hide));
+ return FALSE;
+
+ Good_Mask:
+ g_free(mask);
+ gtk_widget_hide(GTK_WIDGET(widget_to_show_hide));
+ return TRUE;
+}
+
+
+/*
+ * Check if the selected mask in the Mask Editor is valid, else display the mask status icon.
+ */
+gboolean Scan_Check_Editor_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source)
+{
+ /* Select and get result of check scanner */
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_FILL_TAG)
+ {
+ return Scan_Check_Scan_Tag_Mask(widget_to_show_hide,widget_source);
+ } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_RENAME_FILE)
+ {
+ return Scan_Check_Rename_File_Mask(widget_to_show_hide,widget_source);
+ } else
+ return FALSE;
+}
+
+
+void Scan_Toggle_Legend_Button (void)
+{
+ if (!LegendButton || !LegendFrame) return;
+
+ if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(LegendButton)) )
+ gtk_widget_show_all(LegendFrame);
+ else
+ gtk_widget_hide(LegendFrame);
+}
+
+
+void Scan_Toggle_Mask_Editor_Button (void)
+{
+ GtkTreeModel *treemodel;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+
+ if (!MaskEditorButton || !MaskEditorFrame || !MaskEditorList) return;
+
+ if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(MaskEditorButton)) )
+ {
+ gtk_widget_show_all(MaskEditorFrame);
+
+ // Select first row in list
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+ if (gtk_tree_model_get_iter_first(treemodel, &iter))
+ {
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList));
+ gtk_tree_selection_unselect_all(selection);
+ gtk_tree_selection_select_iter(selection, &iter);
+ }
+
+ // Update status of the icon box cause prev instruction show it for all cases
+ g_signal_emit_by_name(GTK_OBJECT(MaskEditorEntry),"changed");
+ }else
+ {
+ gtk_widget_hide_all(MaskEditorFrame);
+ }
+}
+
+
+
+/*
+ * Manage/Toggle check buttons into 'Process Fields' frame
+ */
+void Process_Fields_Check_Button_Toggled (GtkObject *object, GList *list)
+{
+ gint i = 0;
+
+ if ( GTK_TOGGLE_BUTTON(object)->active )
+ {
+ while (list)
+ {
+ if ( list->data!=NULL && GTK_OBJECT(list->data)!=object )
+ gtk_toggle_button_set_active((GtkToggleButton *)list->data,FALSE);
+ i++;
+ if (!list->next) break;
+ list = list->next;
+ }
+ }
+}
+
+
+void Process_Fields_Convert_Check_Button_Toggled (GtkObject *object)
+{
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertTo),GTK_TOGGLE_BUTTON(object)->active);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertFrom),GTK_TOGGLE_BUTTON(object)->active);
+}
+
+
+/*
+ * Small buttons of Process Fields scanner
+ */
+void Select_Fields_Invert_Selection (void)
+{
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFileNameField),
+ !GTK_TOGGLE_BUTTON(ProcessFileNameField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessTitleField),
+ !GTK_TOGGLE_BUTTON(ProcessTitleField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessArtistField),
+ !GTK_TOGGLE_BUTTON(ProcessArtistField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessAlbumField),
+ !GTK_TOGGLE_BUTTON(ProcessAlbumField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessGenreField),
+ !GTK_TOGGLE_BUTTON(ProcessGenreField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessCommentField),
+ !GTK_TOGGLE_BUTTON(ProcessCommentField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessComposerField),
+ !GTK_TOGGLE_BUTTON(ProcessComposerField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessOrigArtistField),
+ !GTK_TOGGLE_BUTTON(ProcessOrigArtistField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessCopyrightField),
+ !GTK_TOGGLE_BUTTON(ProcessCopyrightField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessURLField),
+ !GTK_TOGGLE_BUTTON(ProcessURLField)->active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessEncodedByField),
+ !GTK_TOGGLE_BUTTON(ProcessEncodedByField)->active);
+}
+void Select_Fields_Select_Unselect_All (void)
+{
+ static gboolean state = 1;
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessFileNameField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessTitleField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessArtistField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessAlbumField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessGenreField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessCommentField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessComposerField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessOrigArtistField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessCopyrightField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessURLField), state);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ProcessEncodedByField), state);
+ state = !state;
+}
+
+/*
+ * Set sensitive state of the processing check boxes : if no one is selected => all disabled
+ */
+void Select_Fields_Set_Sensitive (void)
+{
+ if (GTK_TOGGLE_BUTTON(ProcessFileNameField)->active
+ || GTK_TOGGLE_BUTTON(ProcessTitleField)->active
+ || GTK_TOGGLE_BUTTON(ProcessArtistField)->active
+ || GTK_TOGGLE_BUTTON(ProcessAlbumField)->active
+ || GTK_TOGGLE_BUTTON(ProcessGenreField)->active
+ || GTK_TOGGLE_BUTTON(ProcessCommentField)->active
+ || GTK_TOGGLE_BUTTON(ProcessComposerField)->active
+ || GTK_TOGGLE_BUTTON(ProcessOrigArtistField)->active
+ || GTK_TOGGLE_BUTTON(ProcessCopyrightField)->active
+ || GTK_TOGGLE_BUTTON(ProcessURLField)->active
+ || GTK_TOGGLE_BUTTON(ProcessEncodedByField)->active)
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertIntoSpace), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertSpace), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvert), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertLabelTo), TRUE);
+ // Activate the two entries only if the check box is actived, esle keep them disabled
+ if (GTK_TOGGLE_BUTTON(ProcessFieldsConvert)->active)
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertTo), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertFrom), TRUE);
+ }
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsAllUppercase), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsAllDowncase), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsFirstLetterUppercase), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsFirstLettersUppercase),TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsRemoveSpace), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsInsertSpace), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsOnlyOneSpace), TRUE);
+ }else
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertIntoSpace), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertSpace), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvert), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertTo), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertLabelTo), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsConvertFrom), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsAllUppercase), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsAllDowncase), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsFirstLetterUppercase), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsFirstLettersUppercase),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsRemoveSpace), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsInsertSpace), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ProcessFieldsOnlyOneSpace), FALSE);
+ }
+}
+
+/*
+ * Callbacks from Mask Editor buttons
+ */
+
+/*
+ * Callback from the mask edit list
+ * Previously known as Mask_Editor_List_Select_Row
+ */
+void Mask_Editor_List_Row_Selected (GtkTreeSelection* selection, gpointer data)
+{
+ GList *selectedRows;
+ gchar *text = NULL;
+ GtkTreePath *lastSelected;
+ GtkTreeIter lastFile;
+ GtkTreeModel *treemodel;
+ gboolean valid;
+
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+
+ /* We must block the function, else the previous selected row will be modified */
+ g_signal_handlers_block_by_func(G_OBJECT(MaskEditorEntry),
+ G_CALLBACK(Mask_Editor_Entry_Changed),NULL);
+
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+
+ /*
+ * At some point, we might get called when no rows are selected?
+ */
+ if (g_list_length(selectedRows) == 0)
+ {
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ g_signal_handlers_unblock_by_func(G_OBJECT(MaskEditorEntry),
+ G_CALLBACK(Mask_Editor_Entry_Changed),NULL);
+ return;
+ }
+
+ /* Get the text of the last selected row */
+ lastSelected = (GtkTreePath *)g_list_last(selectedRows)->data;
+
+ valid= gtk_tree_model_get_iter(treemodel, &lastFile, lastSelected);
+ if (valid)
+ {
+ gtk_tree_model_get(treemodel, &lastFile, MASK_EDITOR_TEXT, &text, -1);
+
+ if (text)
+ {
+ gtk_entry_set_text(GTK_ENTRY(MaskEditorEntry),text);
+ g_free(text);
+ }
+ }
+
+ g_signal_handlers_unblock_by_func(G_OBJECT(MaskEditorEntry),
+ G_CALLBACK(Mask_Editor_Entry_Changed),NULL);
+}
+
+
+/*
+ * Add a new mask to the list
+ */
+void Mask_Editor_List_New (void)
+{
+ gchar *text = _("New_mask");
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ GtkTreeModel *treemodel;
+
+ if (!MaskEditorList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList));
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+
+ gtk_list_store_insert(GTK_LIST_STORE(treemodel), &iter, 0);
+ gtk_list_store_set(GTK_LIST_STORE(treemodel), &iter, MASK_EDITOR_TEXT, text, -1);
+
+ gtk_tree_selection_unselect_all(selection);
+ gtk_tree_selection_select_iter(selection, &iter);
+}
+
+/*
+ * Duplicate a mask on the list
+ */
+void Mask_Editor_List_Duplicate (void)
+{
+ gchar *text = NULL;
+ GList *selectedRows;
+ GList *toInsert = NULL;
+ GtkTreeSelection *selection;
+ GtkTreeIter row;
+ GtkTreeModel *treemodel;
+ gboolean valid;
+
+ if (!MaskEditorList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList));
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+
+ if (g_list_length(selectedRows) == 0)
+ {
+ Log_Print(_("Copy: No row selected!"));
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ return;
+ }
+
+ /* Loop through selected rows, duplicating them into a GList */
+ /* We cannot directly insert because the paths in selectedRows get out of date after an insertion */
+ while(selectedRows)
+ {
+ valid = gtk_tree_model_get_iter(treemodel, &row, (GtkTreePath*) selectedRows->data);
+ if (valid)
+ {
+ gtk_tree_model_get(treemodel, &row, MASK_EDITOR_TEXT, &text, -1);
+ toInsert = g_list_append(toInsert, text);
+ }
+
+ selectedRows = selectedRows->next;
+ if (!selectedRows) break;
+ }
+
+ /* Duplicate the relevant entries, by looping through the list backwards (to preserve original order) */
+ toInsert = g_list_last(toInsert);
+ while(toInsert)
+ {
+ gtk_list_store_insert(GTK_LIST_STORE(treemodel), &row, 0);
+ gtk_list_store_set(GTK_LIST_STORE(treemodel), &row, MASK_EDITOR_TEXT, (gchar*) toInsert->data, -1);
+ g_free(toInsert->data);
+
+ toInsert = toInsert->prev;
+ if (!toInsert) break;
+ }
+
+ /* Free data no longer needed */
+ selectedRows = g_list_first(selectedRows);
+ toInsert = g_list_first(toInsert);
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ g_list_foreach(toInsert, (GFunc) g_free, NULL);
+ g_list_free(toInsert);
+}
+
+void Mask_Editor_List_Add(void)
+{
+ gint i = 0;
+ GtkTreeIter iter;
+ GtkTreeModel *treemodel;
+ gchar *temp;
+
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_FILL_TAG)
+ {
+ while(Scan_Masks[i])
+ {
+ if (!g_utf8_validate(Scan_Masks[i], -1, NULL))
+ temp = convert_to_utf8(Scan_Masks[i]);
+ else
+ temp = g_strdup(Scan_Masks[i]);
+
+ gtk_list_store_append(GTK_LIST_STORE(treemodel), &iter);
+ gtk_list_store_set(GTK_LIST_STORE(treemodel), &iter,
+ MASK_EDITOR_TEXT, temp, -1);
+ g_free(temp);
+ i++;
+ }
+ } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_RENAME_FILE)
+ {
+ while(Rename_File_Masks[i])
+ {
+ if (!g_utf8_validate(Rename_File_Masks[i], -1, NULL))
+ temp = convert_to_utf8(Rename_File_Masks[i]);
+ else
+ temp = g_strdup(Scan_Masks[i]);
+
+ gtk_list_store_append(GTK_LIST_STORE(treemodel), &iter);
+ gtk_list_store_set(GTK_LIST_STORE(treemodel), &iter,
+ MASK_EDITOR_TEXT, temp, -1);
+ g_free(temp);
+ i++;
+ }
+ }
+}
+
+/*
+ * Remove the selected rows from the mask editor list
+ */
+void Mask_Editor_List_Remove (void)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ GtkTreeModel *treemodel;
+
+ if (!MaskEditorList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList));
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+
+ if (gtk_tree_selection_count_selected_rows(selection) == 0) {
+ Log_Print(_("Remove: No row selected!"));
+ return;
+ }
+
+ if (!gtk_tree_model_get_iter_first(treemodel, &iter))
+ return;
+
+ while (TRUE)
+ {
+ if (gtk_tree_selection_iter_is_selected(selection, &iter))
+ {
+ if (!gtk_list_store_remove(GTK_LIST_STORE(treemodel), &iter))
+ {
+ break;
+ }
+ } else
+ {
+ if (!gtk_tree_model_iter_next(treemodel, &iter))
+ {
+ break;
+ }
+ }
+ }
+}
+
+/*
+ * Move all selected rows up one place in the mask list
+ */
+void Mask_Editor_List_Move_Up (void)
+{
+ GtkTreeSelection *selection;
+ GList *selectedRows;
+ GList *selectedRowsCopy;
+ GtkTreeIter currentFile;
+ GtkTreeIter nextFile;
+ GtkTreePath *currentPath;
+ GtkTreeModel *treemodel;
+ gboolean valid;
+
+ if (!MaskEditorList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList));
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+
+ if (g_list_length(selectedRows) == 0)
+ {
+ Log_Print(_("Move Up: No row selected!"));
+ g_list_foreach(selectedRows, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ return;
+ }
+
+ selectedRowsCopy = selectedRows;
+
+ while(selectedRows)
+ {
+ currentPath = (GtkTreePath*) selectedRows->data;
+ valid = gtk_tree_model_get_iter(treemodel, &currentFile, currentPath);
+ if (valid)
+ {
+ /* Find the entry above the node... */
+ if (gtk_tree_path_prev(currentPath)) {
+ /* ...and if it exists, swap the two rows by iter */
+ gtk_tree_model_get_iter(treemodel, &nextFile, currentPath);
+ gtk_list_store_swap(GTK_LIST_STORE(treemodel), &currentFile, &nextFile);
+ }
+ }
+
+ selectedRows = selectedRows->next;
+ if (!selectedRows) break;
+ }
+
+ g_list_foreach(selectedRowsCopy, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selectedRowsCopy);
+}
+
+/*
+ * Move all selected rows down one place in the mask list
+ */
+void Mask_Editor_List_Move_Down (void)
+{
+ GtkTreeSelection *selection;
+ GList *selectedRows;
+ GList *selectedRowsCopy;
+ GtkTreeIter currentFile;
+ GtkTreeIter nextFile;
+ GtkTreePath *currentPath;
+ GtkTreeModel *treemodel;
+ gboolean valid;
+
+ if (!MaskEditorList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList));
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+
+ if (g_list_length(selectedRows) == 0) {
+ Log_Print(_("Move Down: No row selected!"));
+ g_list_foreach(selectedRows, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ return;
+ }
+
+ selectedRowsCopy = selectedRows;
+
+ while (selectedRows)
+ {
+ currentPath = (GtkTreePath*) selectedRows->data;
+ valid = gtk_tree_model_get_iter(treemodel, &currentFile, currentPath);
+ if (valid)
+ {
+ /* Find the entry below the node and swap the two nodes by iter */
+ gtk_tree_path_next(currentPath);
+ gtk_tree_model_get_iter(treemodel, &nextFile, currentPath);
+ gtk_list_store_swap(GTK_LIST_STORE(treemodel), &currentFile, &nextFile);
+ }
+
+ if (!selectedRows->next) break;
+ selectedRows = selectedRows->next;
+ }
+
+ g_list_foreach(selectedRowsCopy, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selectedRowsCopy);
+}
+
+/*
+ * Save the currently displayed mask list in the mask editor
+ */
+void Mask_Editor_List_Save_Button (void)
+{
+ Mask_Editor_Clean_Up_Masks_List();
+
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_FILL_TAG)
+ {
+ Save_Scan_Tag_Masks_List(ScanTagListModel, MASK_EDITOR_TEXT);
+ } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) == SCANNER_RENAME_FILE)
+ {
+ Save_Rename_File_Masks_List(RenameFileListModel, MASK_EDITOR_TEXT);
+ }
+}
+
+/*
+ * Clean up the currently displayed masks lists, ready for saving
+ */
+void Mask_Editor_Clean_Up_Masks_List (void)
+{
+ gchar *text = NULL;
+ gchar *text1 = NULL;
+ GtkTreeIter currentIter;
+ GtkTreeIter itercopy;
+ GtkTreeModel *treemodel;
+
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+
+ /* Remove blank and duplicate items */
+ if (gtk_tree_model_get_iter_first(treemodel, &currentIter))
+ {
+
+ while(TRUE)
+ {
+ gtk_tree_model_get(treemodel, &currentIter, MASK_EDITOR_TEXT, &text, -1);
+
+ /* Check for blank entry */
+ if (text && g_utf8_strlen(text, -1) == 0)
+ {
+ g_free(text);
+
+ if (!gtk_list_store_remove(GTK_LIST_STORE(treemodel), &currentIter))
+ break; /* No following entries */
+ else
+ continue; /* Go on to next entry, which the remove function already moved onto for us */
+ }
+
+ /* Check for duplicate entries */
+ itercopy = currentIter;
+ if (!gtk_tree_model_iter_next(treemodel, &itercopy))
+ {
+ g_free(text);
+ break;
+ }
+
+ while(TRUE)
+ {
+ gtk_tree_model_get(treemodel, &itercopy, MASK_EDITOR_TEXT, &text1, -1);
+ if (text1 && g_utf8_collate(text,text1) == 0)
+ {
+ g_free(text1);
+
+ if (!gtk_list_store_remove(GTK_LIST_STORE(treemodel), &itercopy))
+ break; /* No following entries */
+ else
+ continue; /* Go on to next entry, which the remove function already set iter to for us */
+
+ }
+ g_free(text1);
+ if (!gtk_tree_model_iter_next(treemodel, &itercopy))
+ break;
+ }
+
+ g_free(text);
+
+ if (!gtk_tree_model_iter_next(treemodel, &currentIter))
+ break;
+ }
+ }
+}
+
+/*
+ * Update the Mask List with the new value of the entry box
+ */
+void Mask_Editor_Entry_Changed (void)
+{
+ GtkTreeSelection *selection;
+ GtkTreePath *firstSelected;
+ GtkTreeModel *treemodel;
+ GList *selectedRows;
+ GtkTreeIter row;
+ const gchar* text;
+ gboolean valid;
+
+ if (!MaskEditorList) return;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(MaskEditorList));
+ treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(MaskEditorList));
+ selectedRows = gtk_tree_selection_get_selected_rows(selection, NULL);
+
+ if (g_list_length(selectedRows) == 0)
+ {
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+ return;
+ }
+
+ firstSelected = (GtkTreePath *)g_list_first(selectedRows)->data;
+ text = gtk_entry_get_text(GTK_ENTRY(MaskEditorEntry));
+
+ valid = gtk_tree_model_get_iter(treemodel, &row, firstSelected);
+ if (valid)
+ gtk_list_store_set(GTK_LIST_STORE(treemodel), &row, MASK_EDITOR_TEXT, text, -1);
+
+ g_list_foreach(selectedRows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free(selectedRows);
+}
+
+/*
+ * Actions when the a key is pressed into the masks editor clist
+ */
+gboolean Mask_Editor_List_Key_Press (GtkWidget *widget, GdkEvent *event)
+{
+ if (event && event->type == GDK_KEY_PRESS) {
+ GdkEventKey *kevent = (GdkEventKey *)event;
+
+ switch(kevent->keyval) {
+ case GDK_Delete:
+ Mask_Editor_List_Remove();
+ break;
+/* case GDK_Up:
+ Mask_Editor_Clist_Move_Up();
+ break;
+ case GDK_Down:
+ Mask_Editor_Clist_Move_Down();
+ break;
+*/ }
+ }
+ return TRUE;
+}
+
+/*
+ * Function when you select an item of the option menu
+ */
+void Scanner_Option_Menu_Activate_Item (GtkWidget *combo, gpointer data)
+{
+ switch (gtk_combo_box_get_active(GTK_COMBO_BOX(combo)))
+ {
+ case SCANNER_FILL_TAG:
+ gtk_widget_show(MaskEditorButton);
+ gtk_widget_show(LegendButton);
+ gtk_widget_show(ScanTagFrame);
+ gtk_widget_hide(RenameFileFrame);
+ gtk_widget_hide(ProcessFieldsFrame);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(MaskEditorList), GTK_TREE_MODEL(ScanTagListModel));
+ Scan_Fill_Tag_Generate_Preview();
+ g_signal_emit_by_name(G_OBJECT(LegendButton),"toggled"); /* To hide or show legend frame */
+ g_signal_emit_by_name(G_OBJECT(MaskEditorButton),"toggled"); /* To hide or show mask editor frame */
+ break;
+
+ case SCANNER_RENAME_FILE:
+ gtk_widget_show(MaskEditorButton);
+ gtk_widget_show(LegendButton);
+ gtk_widget_hide(ScanTagFrame);
+ gtk_widget_show(RenameFileFrame);
+ gtk_widget_hide(ProcessFieldsFrame);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(MaskEditorList), GTK_TREE_MODEL(RenameFileListModel));
+ Scan_Rename_File_Generate_Preview();
+ g_signal_emit_by_name(G_OBJECT(LegendButton),"toggled"); /* To hide or show legend frame */
+ g_signal_emit_by_name(G_OBJECT(MaskEditorButton),"toggled"); /* To hide or show mask editor frame */
+ break;
+
+ case SCANNER_PROCESS_FIELDS:
+ gtk_widget_hide(MaskEditorButton);
+ gtk_widget_hide(LegendButton);
+ gtk_widget_hide(ScanTagFrame);
+ gtk_widget_hide(RenameFileFrame);
+ gtk_widget_show_all(ProcessFieldsFrame);
+ // Hide directly the frames to don't change state of the buttons!
+ gtk_widget_hide(LegendFrame);
+ gtk_widget_hide(MaskEditorFrame);
+
+ gtk_tree_view_set_model(GTK_TREE_VIEW(MaskEditorList), NULL);
+ break;
+ }
+}
+
+/*
+ * Init the position of the scanner window
+ */
+void Scan_Set_Scanner_Window_Init_Position (void)
+{
+ if (ScannerWindow && SET_SCANNER_WINDOW_POSITION)
+ {
+ gtk_widget_realize(ScannerWindow);
+ gdk_window_move(ScannerWindow->window,SCANNER_WINDOW_X,SCANNER_WINDOW_Y);
+ }
+}
diff --git a/src/scan.h b/src/scan.h
new file mode 100755
index 0000000..3173aa3
--- /dev/null
+++ b/src/scan.h
@@ -0,0 +1,89 @@
+/* scan.h - 2000/06/16 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __SCAN_H__
+#define __SCAN_H__
+
+
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+GtkWidget *ScannerWindow;
+GtkWidget *SWScanButton; // To enable/disable it in easytag.c
+
+
+enum
+{
+ SCANNER_FILL_TAG = 0,
+ SCANNER_RENAME_FILE,
+ SCANNER_PROCESS_FIELDS
+}; // Add a new item : Min and Max values used in Open_ScannerWindow
+
+enum {
+ MASK_EDITOR_TEXT,
+ MASK_EDITOR_COUNT
+};
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void Scan_Tag_With_Mask (ET_File *ETFile);
+void Scan_Rename_File_With_Mask (ET_File *ETFile);
+void Scan_Process_Fields (ET_File *ETFile);
+void Scan_Select_Mode_And_Run_Scanner (ET_File *ETFile);
+gchar *Scan_Generate_New_Filename_From_Mask (ET_File *ETFile, gchar *mask, gboolean no_dir_check_or_conversion);
+GList *Scan_Generate_New_Tag_From_Mask (ET_File *ETFile, gchar *mask);
+gchar *Scan_Generate_New_Directory_Name_From_Mask (ET_File *ETFile, gchar *mask, gboolean no_dir_check_or_conversion);
+void Scan_Rename_File_Generate_Preview (void);
+void Scan_Fill_Tag_Generate_Preview (void);
+void Scan_Rename_Directory_Generate_Preview (void);
+
+void Scan_Use_Fill_Tag_Scanner (void);
+void Scan_Use_Rename_File_Scanner (void);
+void Scan_Use_Process_Fields_Scanner (void);
+
+gboolean Scan_Check_Rename_File_Mask (GtkObject *widget_to_show_hide, GtkEntry *widget_source);
+
+void Scan_Process_Fields_All_Uppercase (gchar *text);
+void Scan_Process_Fields_All_Downcase (gchar *text);
+void Scan_Process_Fields_Letter_Uppercase (gchar *text);
+void Scan_Process_Fields_First_Letters_Uppercase (gchar *text);
+void Scan_Process_Fields_Remove_Space (gchar *text);
+void Scan_Process_Fields_Insert_Space (gchar *text);
+void Scan_Process_Fields_Keep_One_Space (gchar *text);
+
+void Scan_Convert_Underscore_Into_Space (gchar *string);
+void Scan_Convert_P20_Into_Space (gchar *string);
+void Scan_Convert_Space_Into_Undescore (gchar *string);
+void Scan_Convert (gchar *string);
+
+void Init_ScannerWindow (void);
+void Open_ScannerWindow (gint scanner_type);
+void ScannerWindow_Apply_Changes (void);
+
+void Scan_Set_Scanner_Window_Init_Position (void);
+
+#endif /* __SCAN_H__ */
diff --git a/src/setting.c b/src/setting.c
new file mode 100755
index 0000000..8e68c6b
--- /dev/null
+++ b/src/setting.c
@@ -0,0 +1,1616 @@
+/* config.c - 2000/06/21 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <dirent.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+#include "setting.h"
+#include "prefs.h"
+#include "bar.h"
+#include "easytag.h"
+#include "charset.h"
+#include "scan.h"
+#include "log.h"
+#include "misc.h"
+#include "cddb.h"
+#include "browser.h"
+
+#ifdef WIN32
+# include "win32/win32dep.h"
+#endif
+
+
+/***************
+ * Declaration *
+ ***************/
+
+/*
+ * Nota :
+ * - no trailing slashes on directory name to avoid problem with
+ * NetBSD's mkdir(2).
+ */
+
+// Base directory created into home dir
+gchar *EASYTAG_DIR = ".easytag";
+// File for configuration
+gchar *CONFIG_FILE = ".easytag/easytagrc";
+// File of masks for tag scanner
+gchar *SCAN_TAG_MASKS_FILE = ".easytag/scan_tag.mask";
+// File of masks for rename file scanner
+gchar *RENAME_FILE_MASKS_FILE = ".easytag/rename_file.mask";
+// File for history of RenameDirectoryMaskCombo combobox
+gchar *RENAME_DIRECTORY_MASKS_FILE = ".easytag/rename_directory.mask";
+// File for history of PlayListNameCombo combobox
+gchar *PLAY_LIST_NAME_MASKS_FILE = ".easytag/play_list_name.mask";
+// File for history of PlayListContentMaskEntry combobox
+gchar *PLAYLIST_CONTENT_MASKS_FILE = ".easytag/playlist_content.mask";
+// File for history of DefaultPathToMp3 combobox
+gchar *DEFAULT_PATH_TO_MP3_HISTORY_FILE = ".easytag/default_path_to_mp3.history";
+// File for history of DefaultComment combobox
+gchar *DEFAULT_TAG_COMMENT_HISTORY_FILE = ".easytag/default_tag_comment.history";
+// File for history of BrowserEntry combobox
+gchar *PATH_ENTRY_HISTORY_FILE = ".easytag/browser_path.history";
+// File for history of run program combobox for directories
+gchar *RUN_PROGRAM_WITH_DIRECTORY_HISTORY_FILE = ".easytag/run_program_with_directory.history";
+// File for history of run program combobox for files
+gchar *RUN_PROGRAM_WITH_FILE_HISTORY_FILE = ".easytag/run_program_with_file.history";
+// File for history of run player combobox
+gchar *AUDIO_FILE_PLAYER_HISTORY_FILE = ".easytag/audio_file_player.history";
+// File for history of search string combobox
+gchar *SEARCH_FILE_HISTORY_FILE = ".easytag/search_file.history";
+// File for history of FileToLoad combobox
+gchar *FILE_TO_LOAD_HISTORY_FILE = ".easytag/file_to_load.history";
+// File for history of CddbSearchStringEntry combobox
+gchar *CDDB_SEARCH_STRING_HISTORY_FILE = ".easytag/cddb_search_string.history";
+// File for history of CddbSearchStringInResultEntry combobox
+gchar *CDDB_SEARCH_STRING_IN_RESULT_HISTORY_FILE = ".easytag/cddb_search_string_in_result.history";
+// File for history of CddbLocalPath combobox
+gchar *CDDB_LOCAL_PATH_HISTORY_FILE = ".easytag/cddb_local_path.history";
+
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+
+
+/********************
+ * Config Variables *
+ ********************/
+tConfigVariable Config_Variables[] =
+{
+ {"load_on_startup", CV_TYPE_BOOL, &LOAD_ON_STARTUP },
+ {"default_path_to_mp3", CV_TYPE_STRING, &DEFAULT_PATH_TO_MP3 },
+ {"browser_line_style", CV_TYPE_BOOL, &BROWSER_LINE_STYLE },
+ {"browser_expander_style", CV_TYPE_BOOL, &BROWSER_EXPANDER_STYLE },
+ {"browse_subdir", CV_TYPE_BOOL, &BROWSE_SUBDIR },
+ {"browse_hidden_dir", CV_TYPE_BOOL, &BROWSE_HIDDEN_DIR },
+ {"open_selected_browser_node", CV_TYPE_BOOL, &OPEN_SELECTED_BROWSER_NODE },
+
+ {"set_main_window_position", CV_TYPE_BOOL, &SET_MAIN_WINDOW_POSITION },
+ {"main_window_x", CV_TYPE_INT, &MAIN_WINDOW_X },
+ {"main_window_y", CV_TYPE_INT, &MAIN_WINDOW_Y },
+ {"main_window_height", CV_TYPE_INT, &MAIN_WINDOW_HEIGHT },
+ {"main_window_width", CV_TYPE_INT, &MAIN_WINDOW_WIDTH },
+ {"pane_handle_position1", CV_TYPE_INT, &PANE_HANDLE_POSITION1 },
+ {"pane_handle_position2", CV_TYPE_INT, &PANE_HANDLE_POSITION2 },
+ {"pane_handle_position3", CV_TYPE_INT, &PANE_HANDLE_POSITION3 },
+ {"pane_handle_position4", CV_TYPE_INT, &PANE_HANDLE_POSITION4 },
+ {"show_header_infos", CV_TYPE_BOOL, &SHOW_HEADER_INFO },
+ {"changed_files_displayed_to_red", CV_TYPE_BOOL, &CHANGED_FILES_DISPLAYED_TO_RED },
+ {"changed_files_displayed_to_bold", CV_TYPE_BOOL, &CHANGED_FILES_DISPLAYED_TO_BOLD },
+
+ {"date_auto_completion", CV_TYPE_BOOL, &DATE_AUTO_COMPLETION },
+ {"number_track_formated", CV_TYPE_BOOL, &NUMBER_TRACK_FORMATED },
+ {"number_track_formated_spin_button", CV_TYPE_INT, &NUMBER_TRACK_FORMATED_SPIN_BUTTON },
+ {"ogg_tag_write_xmms_comment", CV_TYPE_BOOL, &OGG_TAG_WRITE_XMMS_COMMENT },
+ {"set_focus_to_same_tag_field", CV_TYPE_BOOL, &SET_FOCUS_TO_SAME_TAG_FIELD },
+ {"set_focus_to_first_tag_field", CV_TYPE_BOOL, &SET_FOCUS_TO_FIRST_TAG_FIELD },
+ {"sorting_file_mode", CV_TYPE_INT, &SORTING_FILE_MODE },
+ {"sorting_file_case_sensitive", CV_TYPE_BOOL, &SORTING_FILE_CASE_SENSITIVE },
+
+ {"replace_illegal_character_in_filename",CV_TYPE_BOOL, &REPLACE_ILLEGAL_CHARACTERS_IN_FILENAME },
+ {"filename_extension_lower_case", CV_TYPE_BOOL, &FILENAME_EXTENSION_LOWER_CASE },
+ {"filename_extension_upper_case", CV_TYPE_BOOL, &FILENAME_EXTENSION_UPPER_CASE },
+ {"filename_extension_no_change", CV_TYPE_BOOL, &FILENAME_EXTENSION_NO_CHANGE },
+ {"preserve_modification_time", CV_TYPE_BOOL, &PRESERVE_MODIFICATION_TIME },
+ {"filename_character_set_other", CV_TYPE_BOOL, &FILENAME_CHARACTER_SET_OTHER },
+ {"filename_character_set_approximate", CV_TYPE_BOOL, &FILENAME_CHARACTER_SET_APPROXIMATE },
+ {"filename_character_set_discard", CV_TYPE_BOOL, &FILENAME_CHARACTER_SET_DISCARD },
+
+ {"write_id3_tags_in_flac_file", CV_TYPE_BOOL, &WRITE_ID3_TAGS_IN_FLAC_FILE },
+ {"strip_tag_when_empty_fields", CV_TYPE_BOOL, &STRIP_TAG_WHEN_EMPTY_FIELDS },
+ {"convert_old_id3v2_tag_version", CV_TYPE_BOOL, &CONVERT_OLD_ID3V2_TAG_VERSION },
+ {"use_non_standard_id3_reading_character_set", CV_TYPE_BOOL, &USE_NON_STANDARD_ID3_READING_CHARACTER_SET},
+ {"file_reading_id3v1v2_character_set", CV_TYPE_STRING,&FILE_READING_ID3V1V2_CHARACTER_SET},
+ {"file_writing_id3v2_write_tag", CV_TYPE_BOOL, &FILE_WRITING_ID3V2_WRITE_TAG },
+ {"file_writing_id3v2_version_4", CV_TYPE_BOOL, &FILE_WRITING_ID3V2_VERSION_4 },
+ {"file_writing_id3v2_use_crc32", CV_TYPE_BOOL, &FILE_WRITING_ID3V2_USE_CRC32 },
+ {"file_writing_id3v2_use_compression", CV_TYPE_BOOL, &FILE_WRITING_ID3V2_USE_COMPRESSION },
+ {"file_writing_id3v2_use_unicode_character_set", CV_TYPE_BOOL, &FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET},
+ {"file_writing_id3v2_unicode_character_set", CV_TYPE_STRING,&FILE_WRITING_ID3V2_UNICODE_CHARACTER_SET},
+ {"file_writing_id3v2_no_unicode_character_set", CV_TYPE_STRING,&FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET},
+ {"file_writing_id3v2_iconv_options_no", CV_TYPE_BOOL, &FILE_WRITING_ID3V2_ICONV_OPTIONS_NO},
+ {"file_writing_id3v2_iconv_options_translit", CV_TYPE_BOOL, &FILE_WRITING_ID3V2_ICONV_OPTIONS_TRANSLIT},
+ {"file_writing_id3v2_iconv_options_ignore", CV_TYPE_BOOL, &FILE_WRITING_ID3V2_ICONV_OPTIONS_IGNORE},
+ {"file_writing_id3v1_write_tag", CV_TYPE_BOOL, &FILE_WRITING_ID3V1_WRITE_TAG },
+ {"file_writing_id3v1_character_set", CV_TYPE_STRING,&FILE_WRITING_ID3V1_CHARACTER_SET},
+ {"file_writing_id3v1_iconv_options_no", CV_TYPE_BOOL, &FILE_WRITING_ID3V1_ICONV_OPTIONS_NO},
+ {"file_writing_id3v1_iconv_options_translit", CV_TYPE_BOOL, &FILE_WRITING_ID3V1_ICONV_OPTIONS_TRANSLIT},
+ {"file_writing_id3v1_iconv_options_ignore", CV_TYPE_BOOL, &FILE_WRITING_ID3V1_ICONV_OPTIONS_IGNORE},
+
+ {"message_box_position_none", CV_TYPE_BOOL, &MESSAGE_BOX_POSITION_NONE },
+ {"message_box_position_center", CV_TYPE_BOOL, &MESSAGE_BOX_POSITION_CENTER },
+ {"message_box_position_mouse", CV_TYPE_BOOL, &MESSAGE_BOX_POSITION_MOUSE },
+ {"message_box_position_center_on_parent", CV_TYPE_BOOL, &MESSAGE_BOX_POSITION_CENTER_ON_PARENT },
+
+ {"audio_file_player", CV_TYPE_STRING,&AUDIO_FILE_PLAYER },
+
+ {"scanner_type", CV_TYPE_INT, &SCANNER_TYPE },
+ {"scan_mask_editor_button", CV_TYPE_BOOL,&SCAN_MASK_EDITOR_BUTTON },
+ {"scan_legend_button", CV_TYPE_BOOL,&SCAN_LEGEND_BUTTON },
+ {"fts_convert_underscore_and_p20_into_space",CV_TYPE_BOOL,&FTS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE },
+ {"fts_convert_space_into_underscore", CV_TYPE_BOOL,&FTS_CONVERT_SPACE_INTO_UNDERSCORE },
+ {"rfs_convert_underscore_and_p20_into_space",CV_TYPE_BOOL,&RFS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE },
+ {"rfs_convert_space_into_underscore", CV_TYPE_BOOL,&RFS_CONVERT_SPACE_INTO_UNDERSCORE },
+ {"pfs_dont_upper_some_words", CV_TYPE_BOOL,&PFS_DONT_UPPER_SOME_WORDS },
+ {"overwrite_tag_field", CV_TYPE_BOOL, &OVERWRITE_TAG_FIELD },
+ {"set_default_comment", CV_TYPE_BOOL, &SET_DEFAULT_COMMENT },
+ {"default_comment", CV_TYPE_STRING, &DEFAULT_COMMENT },
+ {"crc32_comment", CV_TYPE_BOOL, &SET_CRC32_COMMENT },
+ {"open_scanner_window_on_startup", CV_TYPE_BOOL, &OPEN_SCANNER_WINDOW_ON_STARTUP },
+ {"scanner_window_on_top", CV_TYPE_BOOL, &SCANNER_WINDOW_ON_TOP },
+ {"set_scanner_window_position", CV_TYPE_BOOL, &SET_SCANNER_WINDOW_POSITION },
+ {"scanner_window_x", CV_TYPE_INT, &SCANNER_WINDOW_X },
+ {"scanner_window_y", CV_TYPE_INT, &SCANNER_WINDOW_Y },
+
+ {"confirm_before_exit", CV_TYPE_BOOL, &CONFIRM_BEFORE_EXIT },
+ {"confirm_write_tag", CV_TYPE_BOOL, &CONFIRM_WRITE_TAG },
+ {"confirm_rename_file", CV_TYPE_BOOL, &CONFIRM_RENAME_FILE },
+ {"confirm_write_playlist", CV_TYPE_BOOL, &CONFIRM_WRITE_PLAYLIST },
+ {"confirm_delete_file", CV_TYPE_BOOL, &CONFIRM_DELETE_FILE },
+ {"process_filename_field", CV_TYPE_BOOL, &PROCESS_FILENAME_FIELD },
+ {"process_title_field", CV_TYPE_BOOL, &PROCESS_TITLE_FIELD },
+ {"process_artist_field", CV_TYPE_BOOL, &PROCESS_ARTIST_FIELD },
+ {"process_album_field", CV_TYPE_BOOL, &PROCESS_ALBUM_FIELD },
+ {"process_genre_field", CV_TYPE_BOOL, &PROCESS_GENRE_FIELD },
+ {"process_comment_field", CV_TYPE_BOOL, &PROCESS_COMMENT_FIELD },
+ {"process_composer_field", CV_TYPE_BOOL, &PROCESS_COMPOSER_FIELD },
+ {"process_orig_artist_field", CV_TYPE_BOOL, &PROCESS_ORIG_ARTIST_FIELD },
+ {"process_copyright_field", CV_TYPE_BOOL, &PROCESS_COPYRIGHT_FIELD },
+ {"process_url_field", CV_TYPE_BOOL, &PROCESS_URL_FIELD },
+ {"process_encoded_by_field", CV_TYPE_BOOL, &PROCESS_ENCODED_BY_FIELD },
+
+ {"pf_convert_into_space", CV_TYPE_BOOL, &PF_CONVERT_INTO_SPACE },
+ {"pf_convert_space", CV_TYPE_BOOL, &PF_CONVERT_SPACE },
+ {"pf_convert", CV_TYPE_BOOL, &PF_CONVERT },
+ {"pf_convert_all_uppercase", CV_TYPE_BOOL, &PF_CONVERT_ALL_UPPERCASE },
+ {"pf_convert_all_downcase", CV_TYPE_BOOL, &PF_CONVERT_ALL_DOWNCASE },
+ {"pf_convert_first_letter_uppercase", CV_TYPE_BOOL, &PF_CONVERT_FIRST_LETTER_UPPERCASE },
+ {"pf_convert_first_letters_uppercase", CV_TYPE_BOOL, &PF_CONVERT_FIRST_LETTERS_UPPERCASE },
+ {"pf_remove_space", CV_TYPE_BOOL, &PF_REMOVE_SPACE },
+ {"pf_insert_space", CV_TYPE_BOOL, &PF_INSERT_SPACE },
+ {"pf_only_one_space", CV_TYPE_BOOL, &PF_ONLY_ONE_SPACE },
+
+ {"playlist_name", CV_TYPE_STRING, &PLAYLIST_NAME },
+ {"playlist_use_mask_name", CV_TYPE_BOOL, &PLAYLIST_USE_MASK_NAME },
+ {"playlist_use_dir_name", CV_TYPE_BOOL, &PLAYLIST_USE_DIR_NAME },
+ {"playlist_only_selected_files", CV_TYPE_BOOL, &PLAYLIST_ONLY_SELECTED_FILES },
+ {"playlist_full_path", CV_TYPE_BOOL, &PLAYLIST_FULL_PATH },
+ {"playlist_relative_path", CV_TYPE_BOOL, &PLAYLIST_RELATIVE_PATH },
+ {"playlist_create_in_parent_dir", CV_TYPE_BOOL, &PLAYLIST_CREATE_IN_PARENT_DIR },
+ {"playlist_use_dos_separator", CV_TYPE_BOOL, &PLAYLIST_USE_DOS_SEPARATOR },
+ {"playlist_content_none", CV_TYPE_BOOL, &PLAYLIST_CONTENT_NONE },
+ {"playlist_content_filename", CV_TYPE_BOOL, &PLAYLIST_CONTENT_FILENAME },
+ {"playlist_content_mask", CV_TYPE_BOOL, &PLAYLIST_CONTENT_MASK },
+ {"playlist_content_mask_value", CV_TYPE_STRING, &PLAYLIST_CONTENT_MASK_VALUE },
+ {"playlist_window_x", CV_TYPE_INT, &PLAYLIST_WINDOW_X },
+ {"playlist_window_y", CV_TYPE_INT, &PLAYLIST_WINDOW_Y },
+ {"playlist_window_width", CV_TYPE_INT, &PLAYLIST_WINDOW_WIDTH },
+ {"playlist_window_height", CV_TYPE_INT, &PLAYLIST_WINDOW_HEIGHT },
+
+ {"load_file_run_scanner", CV_TYPE_BOOL, &LOAD_FILE_RUN_SCANNER },
+ {"load_file_window_x", CV_TYPE_INT, &LOAD_FILE_WINDOW_X },
+ {"load_file_window_y", CV_TYPE_INT, &LOAD_FILE_WINDOW_Y },
+ {"load_file_window_width", CV_TYPE_INT, &LOAD_FILE_WINDOW_WIDTH },
+ {"load_file_window_height", CV_TYPE_INT, &LOAD_FILE_WINDOW_HEIGHT },
+
+ {"cddb_server_name_automatic_search", CV_TYPE_STRING, &CDDB_SERVER_NAME_AUTOMATIC_SEARCH },
+ {"cddb_server_port_automatic_search", CV_TYPE_INT, &CDDB_SERVER_PORT_AUTOMATIC_SEARCH },
+ {"cddb_server_cgi_path_automatic_search", CV_TYPE_STRING, &CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH },
+ {"cddb_server_name_automatic_search2", CV_TYPE_STRING, &CDDB_SERVER_NAME_AUTOMATIC_SEARCH2 },
+ {"cddb_server_port_automatic_search2", CV_TYPE_INT, &CDDB_SERVER_PORT_AUTOMATIC_SEARCH2 },
+ {"cddb_server_cgi_path_automatic_search2", CV_TYPE_STRING, &CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2 },
+ {"cddb_server_name_manual_search", CV_TYPE_STRING, &CDDB_SERVER_NAME_MANUAL_SEARCH },
+ {"cddb_server_port_manual_search", CV_TYPE_INT, &CDDB_SERVER_PORT_MANUAL_SEARCH },
+ {"cddb_server_cgi_path_manual_search", CV_TYPE_STRING, &CDDB_SERVER_CGI_PATH_MANUAL_SEARCH },
+ {"cddb_local_path", CV_TYPE_STRING, &CDDB_LOCAL_PATH },
+ {"cddb_use_proxy", CV_TYPE_INT, &CDDB_USE_PROXY },
+ {"cddb_proxy_name", CV_TYPE_STRING, &CDDB_PROXY_NAME },
+ {"cddb_proxy_port", CV_TYPE_INT, &CDDB_PROXY_PORT },
+ {"cddb_proxy_user_name", CV_TYPE_STRING, &CDDB_PROXY_USER_NAME },
+ {"cddb_proxy_user_password", CV_TYPE_STRING, &CDDB_PROXY_USER_PASSWORD },
+ {"set_cddb_window_position", CV_TYPE_BOOL, &SET_CDDB_WINDOW_POSITION },
+ {"cddb_window_x", CV_TYPE_INT, &CDDB_WINDOW_X },
+ {"cddb_window_y", CV_TYPE_INT, &CDDB_WINDOW_Y },
+ {"cddb_window_height", CV_TYPE_INT, &CDDB_WINDOW_HEIGHT },
+ {"cddb_window_width", CV_TYPE_INT, &CDDB_WINDOW_WIDTH },
+ {"cddb_pane_handle_position", CV_TYPE_INT, &CDDB_PANE_HANDLE_POSITION },
+
+ {"cddb_follow_file", CV_TYPE_BOOL, &CDDB_FOLLOW_FILE },
+ {"cddb_use_dlm", CV_TYPE_BOOL, &CDDB_USE_DLM },
+ {"cddb_use_local_access", CV_TYPE_BOOL, &CDDB_USE_LOCAL_ACCESS },
+
+ {"cddb_search_in_all_fields", CV_TYPE_BOOL, &CDDB_SEARCH_IN_ALL_FIELDS },
+ {"cddb_search_in_artist_field", CV_TYPE_BOOL, &CDDB_SEARCH_IN_ARTIST_FIELD },
+ {"cddb_search_in_title_field", CV_TYPE_BOOL, &CDDB_SEARCH_IN_TITLE_FIELD },
+ {"cddb_search_in_track_name_field", CV_TYPE_BOOL, &CDDB_SEARCH_IN_TRACK_NAME_FIELD },
+ {"cddb_search_in_other_field", CV_TYPE_BOOL, &CDDB_SEARCH_IN_OTHER_FIELD },
+ {"cddb_show_categories", CV_TYPE_BOOL, &CDDB_SHOW_CATEGORIES },
+
+ {"cddb_search_in_all_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_ALL_CATEGORIES },
+ {"cddb_search_in_blues_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_BLUES_CATEGORY },
+ {"cddb_search_in_classical_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_CLASSICAL_CATEGORY },
+ {"cddb_search_in_country_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_COUNTRY_CATEGORY },
+ {"cddb_search_in_folk_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_FOLK_CATEGORY },
+ {"cddb_search_in_jazz_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_JAZZ_CATEGORY },
+ {"cddb_search_in_misc_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_MISC_CATEGORY },
+ {"cddb_search_in_newage_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_NEWAGE_CATEGORY },
+ {"cddb_search_in_reggae_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_REGGAE_CATEGORY },
+ {"cddb_search_in_rock_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_ROCK_CATEGORY },
+ {"cddb_search_in_soundtrack_categories", CV_TYPE_BOOL, &CDDB_SEARCH_IN_SOUNDTRACK_CATEGORY },
+
+ {"cddb_set_to_all_fields", CV_TYPE_BOOL, &CDDB_SET_TO_ALL_FIELDS },
+ {"cddb_set_to_title", CV_TYPE_BOOL, &CDDB_SET_TO_TITLE },
+ {"cddb_set_to_artist", CV_TYPE_BOOL, &CDDB_SET_TO_ARTIST },
+ {"cddb_set_to_album", CV_TYPE_BOOL, &CDDB_SET_TO_ALBUM },
+ {"cddb_set_to_year", CV_TYPE_BOOL, &CDDB_SET_TO_YEAR },
+ {"cddb_set_to_track", CV_TYPE_BOOL, &CDDB_SET_TO_TRACK },
+ {"cddb_set_to_track_total", CV_TYPE_BOOL, &CDDB_SET_TO_TRACK_TOTAL },
+ {"cddb_set_to_genre", CV_TYPE_BOOL, &CDDB_SET_TO_GENRE },
+ {"cddb_set_to_file_name", CV_TYPE_BOOL, &CDDB_SET_TO_FILE_NAME },
+
+ {"cddb_run_scanner", CV_TYPE_BOOL, &CDDB_RUN_SCANNER },
+
+ {"set_search_window_position", CV_TYPE_BOOL, &SET_SEARCH_WINDOW_POSITION },
+ {"search_window_x", CV_TYPE_INT, &SEARCH_WINDOW_X },
+ {"search_window_y", CV_TYPE_INT, &SEARCH_WINDOW_Y },
+ {"search_window_height", CV_TYPE_INT, &SEARCH_WINDOW_HEIGHT },
+ {"search_window_width", CV_TYPE_INT, &SEARCH_WINDOW_WIDTH },
+ {"search_in_filename", CV_TYPE_BOOL, &SEARCH_IN_FILENAME },
+ {"search_in_tag", CV_TYPE_BOOL, &SEARCH_IN_TAG },
+ {"search_case_sensitive", CV_TYPE_BOOL, &SEARCH_CASE_SENSITIVE },
+
+ {"scan_tag_default_mask", CV_TYPE_STRING, &SCAN_TAG_DEFAULT_MASK },
+ {"rename_file_default_mask", CV_TYPE_STRING, &RENAME_FILE_DEFAULT_MASK },
+ {"rename_directory_default_mask", CV_TYPE_STRING, &RENAME_DIRECTORY_DEFAULT_MASK },
+ {"rename_directory_with_mask", CV_TYPE_BOOL, &RENAME_DIRECTORY_WITH_MASK },
+
+ {"options_notebook_page", CV_TYPE_INT, &OPTIONS_NOTEBOOK_PAGE },
+ {"options_window_height", CV_TYPE_INT, &OPTIONS_WINDOW_HEIGHT },
+ {"options_window_width", CV_TYPE_INT, &OPTIONS_WINDOW_WIDTH }
+
+};
+
+
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * Define and Load default values into config variables
+ */
+void Init_Config_Variables (void)
+{
+
+ /*
+ * Common
+ */
+ LOAD_ON_STARTUP = 1;
+ DEFAULT_PATH_TO_MP3 = g_strdup(HOME_VARIABLE);
+ BROWSE_SUBDIR = 1;
+#ifdef WIN32
+ BROWSE_HIDDEN_DIR = 1;
+#else
+ BROWSE_HIDDEN_DIR = 0;
+#endif
+ OPEN_SELECTED_BROWSER_NODE = 1;
+
+ /*
+ * Misc
+ */
+ SET_MAIN_WINDOW_POSITION = 1; // Set it to '0' if problem with some Windows Manager
+ MAIN_WINDOW_X = -1; // '-1' lets the Windows Manager to place the window
+ MAIN_WINDOW_Y = -1;
+ MAIN_WINDOW_WIDTH = 1040;
+ MAIN_WINDOW_HEIGHT = -1;
+ PANE_HANDLE_POSITION1 = 660;
+ PANE_HANDLE_POSITION2 = 360;
+ PANE_HANDLE_POSITION3 = 300;
+ PANE_HANDLE_POSITION4 = 300;
+ SHOW_HEADER_INFO = 1;
+ CHANGED_FILES_DISPLAYED_TO_RED = 1;
+ CHANGED_FILES_DISPLAYED_TO_BOLD = 0;
+
+ DATE_AUTO_COMPLETION = 1;
+ NUMBER_TRACK_FORMATED = 1;
+ NUMBER_TRACK_FORMATED_SPIN_BUTTON = 2;
+ OGG_TAG_WRITE_XMMS_COMMENT = 1;
+ SET_FOCUS_TO_SAME_TAG_FIELD = 1;
+ SET_FOCUS_TO_FIRST_TAG_FIELD = 0;
+ SORTING_FILE_MODE = SORTING_BY_ASCENDING_FILENAME;
+#ifdef WIN32
+ SORTING_FILE_CASE_SENSITIVE = 1;
+#else
+ SORTING_FILE_CASE_SENSITIVE = 0;
+#endif
+
+ MESSAGE_BOX_POSITION_NONE = 0;
+ MESSAGE_BOX_POSITION_CENTER = 0;
+ MESSAGE_BOX_POSITION_MOUSE = 0;
+ MESSAGE_BOX_POSITION_CENTER_ON_PARENT = 1;
+
+#ifdef WIN32
+ AUDIO_FILE_PLAYER = ET_Win32_Get_Audio_File_Player();
+#else
+ AUDIO_FILE_PLAYER = g_strdup("xmms -p");
+#endif
+
+ /*
+ * File Settings
+ */
+ REPLACE_ILLEGAL_CHARACTERS_IN_FILENAME = 1;
+ FILENAME_EXTENSION_LOWER_CASE = 1;
+ FILENAME_EXTENSION_UPPER_CASE = 0;
+ FILENAME_EXTENSION_NO_CHANGE = 0;
+ PRESERVE_MODIFICATION_TIME = 1;
+
+ FILENAME_CHARACTER_SET_OTHER = 1;
+ FILENAME_CHARACTER_SET_APPROXIMATE = 0;
+ FILENAME_CHARACTER_SET_DISCARD = 0;
+
+ /*
+ * Tag Settings
+ */
+ WRITE_ID3_TAGS_IN_FLAC_FILE = 0;
+ STRIP_TAG_WHEN_EMPTY_FIELDS = 1;
+ CONVERT_OLD_ID3V2_TAG_VERSION = 1;
+ USE_NON_STANDARD_ID3_READING_CHARACTER_SET = 0;
+ FILE_READING_ID3V1V2_CHARACTER_SET = g_strdup("UTF-8");
+ FILE_WRITING_ID3V2_WRITE_TAG = 1;
+ FILE_WRITING_ID3V2_VERSION_4 = 1;
+ FILE_WRITING_ID3V2_USE_CRC32 = 0;
+ FILE_WRITING_ID3V2_USE_COMPRESSION = 0;
+ FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET = 1;
+ FILE_WRITING_ID3V2_UNICODE_CHARACTER_SET = g_strdup("UTF-8");
+ FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET = g_strdup("ISO-8859-1");
+ FILE_WRITING_ID3V2_ICONV_OPTIONS_NO = 1;
+ FILE_WRITING_ID3V2_ICONV_OPTIONS_TRANSLIT = 0;
+ FILE_WRITING_ID3V2_ICONV_OPTIONS_IGNORE = 0;
+ FILE_WRITING_ID3V1_WRITE_TAG = 1;
+ FILE_WRITING_ID3V1_CHARACTER_SET = g_strdup("ISO-8859-1");
+ FILE_WRITING_ID3V1_ICONV_OPTIONS_NO = 1;
+ FILE_WRITING_ID3V1_ICONV_OPTIONS_TRANSLIT = 0;
+ FILE_WRITING_ID3V1_ICONV_OPTIONS_IGNORE = 0;
+
+ /*
+ * Scanner
+ */
+ SCANNER_TYPE = SCANNER_FILL_TAG;
+ SCAN_MASK_EDITOR_BUTTON = 0;
+ SCAN_LEGEND_BUTTON = 0;
+ FTS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE = 1;
+ FTS_CONVERT_SPACE_INTO_UNDERSCORE = 0;
+ RFS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE = 1;
+ RFS_CONVERT_SPACE_INTO_UNDERSCORE = 0;
+ PFS_DONT_UPPER_SOME_WORDS = 0;
+ OVERWRITE_TAG_FIELD = 1;
+ SET_DEFAULT_COMMENT = 0;
+ DEFAULT_COMMENT = g_strdup("Tagged with EasyTAG");
+ SET_CRC32_COMMENT = 0;
+ OPEN_SCANNER_WINDOW_ON_STARTUP = 0;
+ SCANNER_WINDOW_ON_TOP = 1;
+ SET_SCANNER_WINDOW_POSITION = 1; // Set it to '0' if problem with some Windows Manager
+ SCANNER_WINDOW_X = -1;
+ SCANNER_WINDOW_Y = -1;
+
+ /*
+ * Confirmation
+ */
+ CONFIRM_BEFORE_EXIT = 1;
+ CONFIRM_WRITE_TAG = 1;
+ CONFIRM_RENAME_FILE = 1;
+ CONFIRM_DELETE_FILE = 1;
+ CONFIRM_WRITE_PLAYLIST = 1;
+
+ /*
+ * Scanner window
+ */
+ PROCESS_FILENAME_FIELD = 0;
+ PROCESS_TITLE_FIELD = 1;
+ PROCESS_ARTIST_FIELD = 1;
+ PROCESS_ALBUM_FIELD = 1;
+ PROCESS_GENRE_FIELD = 1;
+ PROCESS_COMMENT_FIELD = 1;
+ PROCESS_COMPOSER_FIELD = 1;
+ PROCESS_ORIG_ARTIST_FIELD = 1;
+ PROCESS_COPYRIGHT_FIELD = 1;
+ PROCESS_URL_FIELD = 1;
+ PROCESS_ENCODED_BY_FIELD = 1;
+
+ PF_CONVERT_INTO_SPACE = 1;
+ PF_CONVERT_SPACE = 0;
+ PF_CONVERT = 0;
+ PF_CONVERT_ALL_UPPERCASE = 0;
+ PF_CONVERT_ALL_DOWNCASE = 0;
+ PF_CONVERT_FIRST_LETTER_UPPERCASE = 0;
+ PF_CONVERT_FIRST_LETTERS_UPPERCASE = 1;
+ PF_REMOVE_SPACE = 0;
+ PF_INSERT_SPACE = 0;
+ PF_ONLY_ONE_SPACE = 1;
+
+ /*
+ * Playlist window
+ */
+ PLAYLIST_NAME = g_strdup("playlist_%a_-_%b");
+ PLAYLIST_USE_MASK_NAME = 0;
+ PLAYLIST_USE_DIR_NAME = 1;
+ PLAYLIST_ONLY_SELECTED_FILES = 1;
+ PLAYLIST_FULL_PATH = 0;
+ PLAYLIST_RELATIVE_PATH = 1;
+ PLAYLIST_CREATE_IN_PARENT_DIR = 0;
+ PLAYLIST_USE_DOS_SEPARATOR = 0;
+ PLAYLIST_CONTENT_NONE = 0;
+ PLAYLIST_CONTENT_FILENAME = 1;
+ PLAYLIST_CONTENT_MASK = 0;
+ PLAYLIST_CONTENT_MASK_VALUE = g_strdup("%n/%l - %a - %b - %t");
+
+ PLAYLIST_WINDOW_X = -1;
+ PLAYLIST_WINDOW_Y = -1;
+ PLAYLIST_WINDOW_WIDTH = -1;
+ PLAYLIST_WINDOW_HEIGHT = -1;
+
+ /*
+ * Load File window
+ */
+ LOAD_FILE_RUN_SCANNER = 0;
+ LOAD_FILE_WINDOW_X = -1;
+ LOAD_FILE_WINDOW_Y = -1;
+ LOAD_FILE_WINDOW_WIDTH = -1;
+ LOAD_FILE_WINDOW_HEIGHT = -1;
+
+ /*
+ * CDDB window
+ */
+ CDDB_SERVER_NAME_AUTOMATIC_SEARCH = g_strdup("freedb.freedb.org");
+ CDDB_SERVER_PORT_AUTOMATIC_SEARCH = 80;
+ CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH = g_strdup("/~cddb/cddb.cgi");
+ CDDB_SERVER_NAME_AUTOMATIC_SEARCH2 = g_strdup("freedb.musicbrainz.org");
+ CDDB_SERVER_PORT_AUTOMATIC_SEARCH2 = 80;
+ CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2 = g_strdup("/~cddb/cddb.cgi");
+ CDDB_SERVER_NAME_MANUAL_SEARCH = g_strdup("www.gnudb.org");
+ CDDB_SERVER_PORT_MANUAL_SEARCH = 80;
+ CDDB_SERVER_CGI_PATH_MANUAL_SEARCH = g_strdup("/~cddb/cddb.cgi");
+ CDDB_LOCAL_PATH = NULL;
+ CDDB_USE_PROXY = 0;
+ CDDB_PROXY_NAME = g_strdup("localhost");
+ CDDB_PROXY_PORT = 8080;
+ CDDB_PROXY_USER_NAME = NULL;
+ CDDB_PROXY_USER_PASSWORD = NULL;
+
+ SET_CDDB_WINDOW_POSITION = 1; // Set it to '0' if problem with some Windows Manager
+ CDDB_WINDOW_X = -1;
+ CDDB_WINDOW_Y = -1;
+ CDDB_WINDOW_WIDTH = 660;
+ CDDB_WINDOW_HEIGHT = 470;
+ CDDB_PANE_HANDLE_POSITION = 350;
+
+ CDDB_FOLLOW_FILE = 1;
+ CDDB_USE_DLM = 0;
+ CDDB_USE_LOCAL_ACCESS = 0;
+
+ CDDB_SEARCH_IN_ALL_FIELDS = 0;
+ CDDB_SEARCH_IN_ARTIST_FIELD = 1;
+ CDDB_SEARCH_IN_TITLE_FIELD = 1;
+ CDDB_SEARCH_IN_TRACK_NAME_FIELD = 0;
+ CDDB_SEARCH_IN_OTHER_FIELD = 0;
+ CDDB_SHOW_CATEGORIES = 0;
+
+ CDDB_SEARCH_IN_ALL_CATEGORIES = 1;
+ CDDB_SEARCH_IN_BLUES_CATEGORY = 0;
+ CDDB_SEARCH_IN_CLASSICAL_CATEGORY = 0;
+ CDDB_SEARCH_IN_COUNTRY_CATEGORY = 0;
+ CDDB_SEARCH_IN_FOLK_CATEGORY = 0;
+ CDDB_SEARCH_IN_JAZZ_CATEGORY = 0;
+ CDDB_SEARCH_IN_MISC_CATEGORY = 1;
+ CDDB_SEARCH_IN_NEWAGE_CATEGORY = 1;
+ CDDB_SEARCH_IN_REGGAE_CATEGORY = 0;
+ CDDB_SEARCH_IN_ROCK_CATEGORY = 1;
+ CDDB_SEARCH_IN_SOUNDTRACK_CATEGORY = 0;
+
+ CDDB_SET_TO_ALL_FIELDS = 1;
+ CDDB_SET_TO_TITLE = 1;
+ CDDB_SET_TO_ARTIST = 0;
+ CDDB_SET_TO_ALBUM = 0;
+ CDDB_SET_TO_YEAR = 0;
+ CDDB_SET_TO_TRACK = 1;
+ CDDB_SET_TO_TRACK_TOTAL = 1;
+ CDDB_SET_TO_GENRE = 0;
+ CDDB_SET_TO_FILE_NAME = 1;
+
+ CDDB_RUN_SCANNER = 0;
+
+ /*
+ * Search window
+ */
+ SET_SEARCH_WINDOW_POSITION = 1; // Set it to '0' if problem with some Windows Manager
+ SEARCH_WINDOW_X = -1;
+ SEARCH_WINDOW_Y = -1;
+ SEARCH_WINDOW_HEIGHT = 350;
+ SEARCH_WINDOW_WIDTH = 650;
+ SEARCH_IN_FILENAME = 1;
+ SEARCH_IN_TAG = 1;
+ SEARCH_CASE_SENSITIVE = 0;
+
+ /*
+ * Masks
+ */
+ SCAN_TAG_DEFAULT_MASK = NULL;
+ RENAME_FILE_DEFAULT_MASK = NULL;
+ RENAME_DIRECTORY_DEFAULT_MASK = NULL;
+ RENAME_DIRECTORY_WITH_MASK = 0;
+
+ /*
+ * Other parameters
+ */
+ OPTIONS_NOTEBOOK_PAGE = 0;
+ OPTIONS_WINDOW_HEIGHT = 300;
+ OPTIONS_WINDOW_WIDTH = 400;
+
+}
+
+
+
+/*
+ * Function called when pressing the "Save" button of the preferences window.
+ * Save into the config variables the settings of each tab of the Preferences window...
+ * If settings needs to be "shown/applied" to the corresponding window, we do it
+ */
+void Apply_Changes_Of_Preferences_Window (void)
+{
+ gchar *temp;
+ int active;
+
+ if (OptionsWindow)
+ {
+ /* Common */
+ LOAD_ON_STARTUP = GTK_TOGGLE_BUTTON(LoadOnStartup)->active;
+ if (DEFAULT_PATH_TO_MP3) g_free(DEFAULT_PATH_TO_MP3);
+ DEFAULT_PATH_TO_MP3 = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultPathToMp3)->child))); // Saved in UTF-8
+//#ifdef WIN32
+// ET_Win32_Path_Replace_Backslashes(DEFAULT_PATH_TO_MP3);
+//#endif
+ BROWSE_SUBDIR = GTK_TOGGLE_BUTTON(BrowseSubdir)->active;
+ BROWSE_HIDDEN_DIR = GTK_TOGGLE_BUTTON(BrowseHiddendir)->active;
+ OPEN_SELECTED_BROWSER_NODE = GTK_TOGGLE_BUTTON(OpenSelectedBrowserNode)->active;
+
+ /* User interface */
+ SHOW_HEADER_INFO = GTK_TOGGLE_BUTTON(ShowHeaderInfos)->active;
+ // We reload the list if the selected style have changed
+ if (CHANGED_FILES_DISPLAYED_TO_RED != GTK_TOGGLE_BUTTON(ChangedFilesDisplayedToRed)->active)
+ {
+ CHANGED_FILES_DISPLAYED_TO_RED = GTK_TOGGLE_BUTTON(ChangedFilesDisplayedToRed)->active;
+ CHANGED_FILES_DISPLAYED_TO_BOLD = GTK_TOGGLE_BUTTON(ChangedFilesDisplayedToBold)->active;
+ Browser_List_Refresh_Whole_List();
+ }
+
+ /* Misc */
+ DATE_AUTO_COMPLETION = GTK_TOGGLE_BUTTON(DateAutoCompletion)->active;
+ NUMBER_TRACK_FORMATED = GTK_TOGGLE_BUTTON(NumberTrackFormated)->active;
+ NUMBER_TRACK_FORMATED_SPIN_BUTTON = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(NumberTrackFormatedSpinButton));
+ OGG_TAG_WRITE_XMMS_COMMENT = GTK_TOGGLE_BUTTON(OggTagWriteXmmsComment)->active;
+ SORTING_FILE_CASE_SENSITIVE = GTK_TOGGLE_BUTTON(SortingFileCaseSensitive)->active;
+ SET_FOCUS_TO_SAME_TAG_FIELD = GTK_TOGGLE_BUTTON(SetFocusToSameTagField)->active;
+ SET_FOCUS_TO_FIRST_TAG_FIELD = GTK_TOGGLE_BUTTON(SetFocusToFirstTagField)->active;
+
+ SORTING_FILE_MODE = gtk_combo_box_get_active(GTK_COMBO_BOX(SortingFileCombo));
+
+ MESSAGE_BOX_POSITION_NONE = GTK_TOGGLE_BUTTON(MessageBoxPositionNone)->active;
+ MESSAGE_BOX_POSITION_CENTER = GTK_TOGGLE_BUTTON(MessageBoxPositionCenter)->active;
+ MESSAGE_BOX_POSITION_MOUSE = GTK_TOGGLE_BUTTON(MessageBoxPositionMouse)->active;
+ MESSAGE_BOX_POSITION_CENTER_ON_PARENT = GTK_TOGGLE_BUTTON(MessageBoxPositionCenterOnParent)->active;
+
+ if (AUDIO_FILE_PLAYER) g_free(AUDIO_FILE_PLAYER);
+ AUDIO_FILE_PLAYER = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(FilePlayerCombo)->child)));
+
+ /* File Settings */
+ REPLACE_ILLEGAL_CHARACTERS_IN_FILENAME = GTK_TOGGLE_BUTTON(ReplaceIllegalCharactersInFilename)->active;
+ FILENAME_EXTENSION_LOWER_CASE = GTK_TOGGLE_BUTTON(FilenameExtensionLowerCase)->active;
+ FILENAME_EXTENSION_UPPER_CASE = GTK_TOGGLE_BUTTON(FilenameExtensionUpperCase)->active;
+ FILENAME_EXTENSION_NO_CHANGE = GTK_TOGGLE_BUTTON(FilenameExtensionNoChange)->active;
+ PRESERVE_MODIFICATION_TIME = GTK_TOGGLE_BUTTON(PreserveModificationTime)->active;
+
+ FILENAME_CHARACTER_SET_OTHER = GTK_TOGGLE_BUTTON(FilenameCharacterSetOther)->active;
+ FILENAME_CHARACTER_SET_APPROXIMATE = GTK_TOGGLE_BUTTON(FilenameCharacterSetApproximate)->active;
+ FILENAME_CHARACTER_SET_DISCARD = GTK_TOGGLE_BUTTON(FilenameCharacterSetDiscard)->active;
+
+ /* Tag Settings */
+ WRITE_ID3_TAGS_IN_FLAC_FILE = GTK_TOGGLE_BUTTON(WriteId3TagsInFlacFiles)->active;
+ STRIP_TAG_WHEN_EMPTY_FIELDS = GTK_TOGGLE_BUTTON(StripTagWhenEmptyFields)->active;
+ CONVERT_OLD_ID3V2_TAG_VERSION = GTK_TOGGLE_BUTTON(ConvertOldId3v2TagVersion)->active;
+ USE_NON_STANDARD_ID3_READING_CHARACTER_SET = GTK_TOGGLE_BUTTON(UseNonStandardId3ReadingCharacterSet)->active;
+
+#ifdef ENABLE_ID3LIB
+ active = gtk_combo_box_get_active(GTK_COMBO_BOX(FileWritingId3v2VersionCombo));
+ FILE_WRITING_ID3V2_VERSION_4 = !active;
+#else
+ FILE_WRITING_ID3V2_VERSION_4 = 1;
+#endif
+ temp = Get_Active_Combo_Box_Item(GTK_COMBO_BOX(FileReadingId3v1v2CharacterSetCombo));
+ FILE_READING_ID3V1V2_CHARACTER_SET = Charset_Get_Name_From_Title(temp);
+ g_free(temp);
+
+ FILE_WRITING_ID3V2_WRITE_TAG = GTK_TOGGLE_BUTTON(FileWritingId3v2WriteTag)->active;
+ FILE_WRITING_ID3V2_USE_CRC32 = GTK_TOGGLE_BUTTON(FileWritingId3v2UseCrc32)->active;
+ FILE_WRITING_ID3V2_USE_COMPRESSION = GTK_TOGGLE_BUTTON(FileWritingId3v2UseCompression)->active;
+ FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET = GTK_TOGGLE_BUTTON(FileWritingId3v2UseUnicodeCharacterSet)->active;
+
+ active = gtk_combo_box_get_active(GTK_COMBO_BOX(FileWritingId3v2UnicodeCharacterSetCombo));
+ FILE_WRITING_ID3V2_UNICODE_CHARACTER_SET = (active == 1) ? "UTF-16" : "UTF-8";
+
+ temp = Get_Active_Combo_Box_Item(GTK_COMBO_BOX(FileWritingId3v2NoUnicodeCharacterSetCombo));
+ FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET = Charset_Get_Name_From_Title(temp);
+ g_free(temp);
+
+ FILE_WRITING_ID3V2_ICONV_OPTIONS_NO = GTK_TOGGLE_BUTTON(FileWritingId3v2IconvOptionsNo)->active;
+ FILE_WRITING_ID3V2_ICONV_OPTIONS_TRANSLIT = GTK_TOGGLE_BUTTON(FileWritingId3v2IconvOptionsTranslit)->active;
+ FILE_WRITING_ID3V2_ICONV_OPTIONS_IGNORE = GTK_TOGGLE_BUTTON(FileWritingId3v2IconvOptionsIgnore)->active;
+
+ FILE_WRITING_ID3V1_WRITE_TAG = GTK_TOGGLE_BUTTON(FileWritingId3v1WriteTag)->active;
+ temp = Get_Active_Combo_Box_Item(GTK_COMBO_BOX(FileWritingId3v1CharacterSetCombo));
+ FILE_WRITING_ID3V1_CHARACTER_SET = Charset_Get_Name_From_Title(temp);
+ g_free(temp);
+
+ FILE_WRITING_ID3V1_ICONV_OPTIONS_NO = GTK_TOGGLE_BUTTON(FileWritingId3v1IconvOptionsNo)->active;
+ FILE_WRITING_ID3V1_ICONV_OPTIONS_TRANSLIT = GTK_TOGGLE_BUTTON(FileWritingId3v1IconvOptionsTranslit)->active;
+ FILE_WRITING_ID3V1_ICONV_OPTIONS_IGNORE = GTK_TOGGLE_BUTTON(FileWritingId3v1IconvOptionsIgnore)->active;
+
+ /* Scanner */
+ // Fill Tag Scanner
+ FTS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE = GTK_TOGGLE_BUTTON(FTSConvertUnderscoreAndP20IntoSpace)->active;
+ FTS_CONVERT_SPACE_INTO_UNDERSCORE = GTK_TOGGLE_BUTTON(FTSConvertSpaceIntoUnderscore)->active;
+ // Rename File Scanner
+ RFS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE = GTK_TOGGLE_BUTTON(RFSConvertUnderscoreAndP20IntoSpace)->active;
+ RFS_CONVERT_SPACE_INTO_UNDERSCORE = GTK_TOGGLE_BUTTON(RFSConvertSpaceIntoUnderscore)->active;
+ // Process File Scanner
+ PFS_DONT_UPPER_SOME_WORDS = GTK_TOGGLE_BUTTON(PFSDontUpperSomeWords)->active;
+
+ OVERWRITE_TAG_FIELD = GTK_TOGGLE_BUTTON(OverwriteTagField)->active;
+ SET_DEFAULT_COMMENT = GTK_TOGGLE_BUTTON(SetDefaultComment)->active;
+ if (DEFAULT_COMMENT) g_free(DEFAULT_COMMENT);
+ DEFAULT_COMMENT = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(DefaultComment)->child)));
+ SET_CRC32_COMMENT = GTK_TOGGLE_BUTTON(Crc32Comment)->active;
+
+ OPEN_SCANNER_WINDOW_ON_STARTUP = GTK_TOGGLE_BUTTON(OpenScannerWindowOnStartup)->active;
+ SCANNER_WINDOW_ON_TOP = GTK_TOGGLE_BUTTON(ScannerWindowOnTop)->active;
+
+ /* CDDB */
+ if (CDDB_SERVER_NAME_AUTOMATIC_SEARCH) g_free(CDDB_SERVER_NAME_AUTOMATIC_SEARCH);
+ CDDB_SERVER_NAME_AUTOMATIC_SEARCH = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbServerNameAutomaticSearch)->child)));
+ CDDB_SERVER_PORT_AUTOMATIC_SEARCH = atoi(gtk_entry_get_text(GTK_ENTRY(CddbServerPortAutomaticSearch)));
+ if (CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH) g_free(CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH);
+ CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH = g_strdup(gtk_entry_get_text(GTK_ENTRY(CddbServerCgiPathAutomaticSearch)));
+
+ if (CDDB_SERVER_NAME_AUTOMATIC_SEARCH2) g_free(CDDB_SERVER_NAME_AUTOMATIC_SEARCH2);
+ CDDB_SERVER_NAME_AUTOMATIC_SEARCH2 = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbServerNameAutomaticSearch2)->child)));
+ CDDB_SERVER_PORT_AUTOMATIC_SEARCH2 = atoi(gtk_entry_get_text(GTK_ENTRY(CddbServerPortAutomaticSearch2)));
+ if (CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2) g_free(CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2);
+ CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2 = g_strdup(gtk_entry_get_text(GTK_ENTRY(CddbServerCgiPathAutomaticSearch2)));
+
+ if (CDDB_SERVER_NAME_MANUAL_SEARCH) g_free(CDDB_SERVER_NAME_MANUAL_SEARCH);
+ CDDB_SERVER_NAME_MANUAL_SEARCH = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbServerNameManualSearch)->child)));
+ CDDB_SERVER_PORT_MANUAL_SEARCH = atoi(gtk_entry_get_text(GTK_ENTRY(CddbServerPortManualSearch)));
+ if (CDDB_SERVER_CGI_PATH_MANUAL_SEARCH) g_free(CDDB_SERVER_CGI_PATH_MANUAL_SEARCH);
+ CDDB_SERVER_CGI_PATH_MANUAL_SEARCH = g_strdup(gtk_entry_get_text(GTK_ENTRY(CddbServerCgiPathManualSearch)));
+
+ if (CDDB_LOCAL_PATH) g_free(CDDB_LOCAL_PATH);
+ CDDB_LOCAL_PATH = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(CddbLocalPath)->child)));
+
+ CDDB_USE_PROXY = GTK_TOGGLE_BUTTON(CddbUseProxy)->active;
+ if (CDDB_PROXY_NAME) g_free(CDDB_PROXY_NAME);
+ CDDB_PROXY_NAME = g_strdup(gtk_entry_get_text(GTK_ENTRY(CddbProxyName)));
+ CDDB_PROXY_PORT = atoi(gtk_entry_get_text(GTK_ENTRY(CddbProxyPort)));
+ if (CDDB_PROXY_USER_NAME) g_free(CDDB_PROXY_USER_NAME);
+ CDDB_PROXY_USER_NAME = g_strdup(gtk_entry_get_text(GTK_ENTRY(CddbProxyUserName)));
+ if (CDDB_PROXY_USER_PASSWORD) g_free(CDDB_PROXY_USER_PASSWORD);
+ CDDB_PROXY_USER_PASSWORD = g_strdup(gtk_entry_get_text(GTK_ENTRY(CddbProxyUserPassword)));
+
+ CDDB_FOLLOW_FILE = GTK_TOGGLE_BUTTON(CddbFollowFile)->active;
+ CDDB_USE_DLM = GTK_TOGGLE_BUTTON(CddbUseDLM)->active;
+
+ /* Confirmation */
+ CONFIRM_BEFORE_EXIT = GTK_TOGGLE_BUTTON(ConfirmBeforeExit)->active;
+ CONFIRM_WRITE_TAG = GTK_TOGGLE_BUTTON(ConfirmWriteTag)->active;
+ CONFIRM_RENAME_FILE = GTK_TOGGLE_BUTTON(ConfirmRenameFile)->active;
+ CONFIRM_DELETE_FILE = GTK_TOGGLE_BUTTON(ConfirmDeleteFile)->active;
+ CONFIRM_WRITE_PLAYLIST = GTK_TOGGLE_BUTTON(ConfirmWritePlayList)->active;
+
+ /* Parameters and variables of Scanner Window are in "scan.c" file */
+ /* Parameters and variables of Cddb Window are in "cddb.c" file */
+ }
+
+ /*
+ * Changes to apply to :
+ */
+ if (MainWindow)
+ {
+ if (SHOW_HEADER_INFO) gtk_widget_show_all(HeaderInfosTable);
+ else gtk_widget_hide_all(HeaderInfosTable);
+
+ /* Update state of check-menu-item into main/popup menu to browse subdirs */
+ Check_Menu_Item_Update_Browse_Subdir();
+
+ /* Update state of check-menu-item into main/popup menu to show hidden directories */
+ Check_Menu_Item_Update_Browse_Hidden_Dir();
+
+ /* Reload if number of character changed for track list */
+ //Load_Track_List_To_UI();
+
+ /* Reload directory, in case we have changed BROWSE_HIDDEN_DIR */
+ // FIX ME : commented as it reloads files...
+ //Browser_Tree_Rebuild(NULL);
+ }
+
+ if (ScannerWindow)
+ {
+ if (SCANNER_WINDOW_ON_TOP)
+ gtk_window_set_transient_for(GTK_WINDOW(ScannerWindow),GTK_WINDOW(MainWindow));
+ else
+ gtk_window_set_transient_for(GTK_WINDOW(ScannerWindow),NULL);
+ }
+
+}
+
+/*
+ * Save into the config variables the settings of each window
+ * - Position/size of the window
+ * - Specific options in the window
+ */
+void Apply_Changes_Of_UI (void)
+{
+ /*
+ * Changes in user interface
+ */
+
+ // Configuration of the main window (see easytag.c) - Function also called when destroying the window
+ MainWindow_Apply_Changes();
+
+ // Configuration of the preference window (see prefs.c) - Function also called when destroying the window
+ OptionsWindow_Apply_Changes();
+
+ // Configuration of the scanner window (see scan.c) - Function also called when destroying the window
+ ScannerWindow_Apply_Changes();
+
+ // Configuration of the cddb window (see cddb.c) - Function also called when destroying the window
+ Cddb_Window_Apply_Changes();
+
+ // Configuration of the playlist window (see misc.c) - Function also called when destroying the window
+ Write_Playlist_Window_Apply_Changes();
+
+ // Configuration of the search_file window (see misc.c) - Function also called when destroying the window
+ Search_File_Window_Apply_Changes();
+
+ // Configuration of the load_filename window (see misc.c) - Function also called when destroying the window
+ Load_Filename_Window_Apply_Changes();
+
+}
+
+void Save_Changes_Of_UI (void)
+{
+ Apply_Changes_Of_UI();
+ Save_Config_To_File();
+}
+
+void Save_Changes_Of_Preferences_Window (void)
+{
+ Apply_Changes_Of_Preferences_Window();
+ Save_Config_To_File();
+
+ Statusbar_Message(_("Configuration saved"),TRUE);
+}
+
+
+
+/*
+ * Write the config file
+ */
+void Save_Config_To_File (void)
+{
+ gchar *file_path = NULL;
+ FILE *file;
+
+ /* The file to write */
+ if (!HOME_VARIABLE) return;
+ file_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR ? G_DIR_SEPARATOR_S : "",
+ CONFIG_FILE,NULL);
+
+ if ( Create_Easytag_Directory()==0 || (file=fopen(file_path,"w+"))==0 )
+ {
+ Log_Print(_("ERROR: Can't write config file: %s (%s)"),file_path,g_strerror(errno));
+ }else
+ {
+ gint ConfigVarListLen = sizeof(Config_Variables)/sizeof(tConfigVariable);
+ gint i;
+ gchar *data = NULL;
+
+ for (i=0; i<ConfigVarListLen; i++)
+ {
+ switch (Config_Variables[i].type)
+ {
+ case CV_TYPE_INT:
+ {
+ data = g_strdup_printf("%s=%i\n",Config_Variables[i].name,
+ *(int *)Config_Variables[i].pointer);
+ fwrite(data,strlen(data),1,file);
+ //g_print("# (type:%d) %s",Config_Variables[i].type,data);
+ g_free(data);
+ break;
+ }
+ case CV_TYPE_BOOL:
+ {
+ data = g_strdup_printf("%s=%i\n",Config_Variables[i].name,
+ ( *(int *)Config_Variables[i].pointer ? 1 : 0 ));
+ fwrite(data,strlen(data),1,file);
+ //g_print("# (type:%d) %s",Config_Variables[i].type,data);
+ g_free(data);
+ break;
+ }
+ case CV_TYPE_STRING:
+ {
+ /* Doesn't write datum if empty */
+ if ( (*(char **)Config_Variables[i].pointer)==NULL ) break;
+
+ data = g_strdup_printf("%s=%s\n",Config_Variables[i].name,
+ *(char **)Config_Variables[i].pointer);
+ fwrite(data,strlen(data),1,file);
+ //g_print("# (type:%d) %s",Config_Variables[i].type,data);
+ g_free(data);
+ break;
+ }
+ default:
+ {
+ Log_Print("ERROR: Can't save: type of config variable not supported "
+ "for '%s'!",Config_Variables[i].name);
+ break;
+ }
+ }
+ }
+ fclose(file);
+ }
+ g_free(file_path);
+
+ //Display_Config();
+}
+
+
+/*
+ * Parse lines read (line as <var_description>=<value>) and load the values
+ * into the corresponding config variables.
+ */
+void Set_Config (gchar *line)
+{
+ gchar *var_descriptor;
+ gchar *var_value;
+ gint ConfigVarListLen;
+ gint i;
+
+ if (*line=='\n' || *line=='#') return;
+
+ /* Cut string */
+ var_descriptor = (gchar*)strtok(line,"=");
+ var_value = (gchar*)strtok(NULL,"=");
+ //g_print("\nstr1:'%s',\t str2:'%s'",var_descriptor,var_value);
+
+ ConfigVarListLen = sizeof(Config_Variables)/sizeof(tConfigVariable);
+ for (i=0; i<ConfigVarListLen; i++)
+ {
+ if (Config_Variables[i].name!=NULL && var_descriptor
+ && !strcmp(Config_Variables[i].name,var_descriptor))
+ {
+ switch (Config_Variables[i].type)
+ {
+ case CV_TYPE_INT:
+ {
+ *(int *)Config_Variables[i].pointer = strtol(var_value, NULL, 10);
+ break;
+ }
+
+ case CV_TYPE_BOOL:
+ {
+ if (strtol(var_value, NULL, 10))
+ *(int *)Config_Variables[i].pointer = 1;
+ else
+ *(int *)Config_Variables[i].pointer = 0;
+ break;
+ }
+
+ case CV_TYPE_STRING:
+ {
+ if (!var_value)
+ {
+ *(char **)Config_Variables[i].pointer = NULL;
+ //g_print("\nConfig File Warning: Field of '%s' has no value!\n",var_descriptor);
+ } else
+ {
+ if ( *(char **)Config_Variables[i].pointer != NULL )
+ g_free(*(char **)Config_Variables[i].pointer);
+ *(char **)Config_Variables[i].pointer = g_malloc(strlen(var_value)+1);
+ strcpy( *(char **)Config_Variables[i].pointer,var_value );
+ }
+ break;
+ }
+
+ default:
+ {
+ Log_Print("ERROR: Can't read: type of config variable not supported "
+ "for '%s'!",Config_Variables[i].name);
+ break;
+ }
+ }
+ }
+ }
+}
+
+
+/*
+ * Read config from config file
+ */
+void Read_Config (void)
+{
+ gchar *file_path = NULL;
+ FILE *file;
+ gchar buffer[MAX_STRING_LEN];
+
+ /* The file to read */
+ if (!HOME_VARIABLE) return;
+ file_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ CONFIG_FILE,NULL);
+
+ if ( (file=fopen(file_path,"r"))==0 )
+ {
+ Log_Print(_("Can't open configuration file '%s' (%s)"),file_path,g_strerror(errno));
+ Log_Print(_("Loading default configuration..."));
+ }else
+ {
+ while (fgets(buffer,sizeof(buffer),file))
+ {
+ if (buffer[strlen(buffer)-1]=='\n')
+ buffer[strlen(buffer)-1]='\0';
+ Set_Config(buffer);
+ }
+ fclose(file);
+
+ // Force this configuration! - Disabled as it is boring for russian people
+ //USE_ISO_8859_1_CHARACTER_SET_TRANSLATION = 1;
+ //USE_CHARACTER_SET_TRANSLATION = 0;
+ }
+ g_free(file_path);
+}
+
+
+/*
+ * Display values in config variables
+ * For debuging only!
+ */
+void Display_Config (void)
+{
+ gchar *file_path = NULL;
+ FILE *file;
+
+ /* The file to write */
+ if (!HOME_VARIABLE) return;
+ file_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ CONFIG_FILE,NULL);
+
+ if ( (file=fopen(file_path,"r"))==0 )
+ {
+ g_print(_("Can't open configuration file '%s' (%s)"),file_path,g_strerror(errno));
+ }else
+ {
+ gint ConfigVarListLen = sizeof(Config_Variables)/sizeof(tConfigVariable);
+ gint i;
+
+ g_print("\n## Current Config ##");
+ for (i=0; i<ConfigVarListLen; i++)
+ {
+ switch(Config_Variables[i].type)
+ {
+ case CV_TYPE_INT:
+ case CV_TYPE_BOOL:
+ {
+ g_print("\n%d: %s=%d",i,Config_Variables[i].name,
+ *(int*)Config_Variables[i].pointer);
+ break;
+ }
+ case CV_TYPE_STRING:
+ {
+ g_print("\n%d: %s=%s",i,Config_Variables[i].name,
+ *(char**)Config_Variables[i].pointer);
+ break;
+ }
+ default:
+ {
+ g_print("NOT IMPLEMENTED (Save_Config)!! \n\a");
+ break;
+ }
+ }
+ }
+ g_print("\n## End Current Config ##\n");
+ fclose(file);
+ }
+ g_free(file_path);
+}
+
+
+
+
+/*
+ * Create the main directory with empty history files
+ */
+gboolean Setting_Create_Files (void)
+{
+ gchar *home_path = NULL;
+ gchar *file_path = NULL;
+ FILE *file;
+
+ /* The file to write */
+ if (!HOME_VARIABLE)
+ return FALSE;
+
+ if ( Create_Easytag_Directory()==FALSE )
+ return FALSE;
+
+ home_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ NULL);
+
+ file_path = g_strconcat(home_path,CONFIG_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),CONFIG_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,SCAN_TAG_MASKS_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),SCAN_TAG_MASKS_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,RENAME_FILE_MASKS_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),RENAME_FILE_MASKS_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,RENAME_DIRECTORY_MASKS_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),RENAME_DIRECTORY_MASKS_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,DEFAULT_PATH_TO_MP3_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),DEFAULT_PATH_TO_MP3_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,DEFAULT_TAG_COMMENT_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),DEFAULT_TAG_COMMENT_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,PATH_ENTRY_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),PATH_ENTRY_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,PLAY_LIST_NAME_MASKS_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),PLAY_LIST_NAME_MASKS_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,RUN_PROGRAM_WITH_DIRECTORY_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),RUN_PROGRAM_WITH_DIRECTORY_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,RUN_PROGRAM_WITH_FILE_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),RUN_PROGRAM_WITH_FILE_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,AUDIO_FILE_PLAYER_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),AUDIO_FILE_PLAYER_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,SEARCH_FILE_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),SEARCH_FILE_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,FILE_TO_LOAD_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),FILE_TO_LOAD_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,PLAYLIST_CONTENT_MASKS_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),PLAYLIST_CONTENT_MASKS_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,CDDB_SEARCH_STRING_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),CDDB_SEARCH_STRING_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,CDDB_SEARCH_STRING_IN_RESULT_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),CDDB_SEARCH_STRING_IN_RESULT_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+ file_path = g_strconcat(home_path,CDDB_LOCAL_PATH_HISTORY_FILE,NULL);
+ if ( (file=fopen(file_path,"a+")) != NULL )
+ fclose(file);
+ else
+ Log_Print(_("Can't create or open file '%s' (%s)"),CDDB_LOCAL_PATH_HISTORY_FILE,g_strerror(errno));
+ g_free(file_path);
+
+
+ g_free(home_path);
+
+ return TRUE;
+}
+
+
+
+/*
+ * Save the contents of a list store to a file
+ */
+void Save_List_Store_To_File (gchar *filename, GtkListStore *liststore, gint colnum)
+{
+ gchar *file_path = NULL;
+ FILE *file;
+ gchar *data = NULL;
+ gchar *text;
+ GtkTreeIter iter;
+
+ if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &iter))
+ return;
+
+ /* The file to write */
+ if (!HOME_VARIABLE) return;
+ file_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ filename,NULL);
+
+ if ( Create_Easytag_Directory()==0 || (file=fopen(file_path,"w+"))==NULL )
+ {
+ Log_Print(_("ERROR: Can't write list to file: %s (%s)"),file_path,g_strerror(errno));
+ }else
+ {
+ do
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(liststore), &iter, colnum, &text, -1);
+ data = g_strdup_printf("%s\n",text);
+ g_free(text);
+
+ if (data)
+ {
+ fwrite(data,strlen(data),1,file);
+ g_free(data);
+ }
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(liststore), &iter));
+ fclose(file);
+ }
+ g_free(file_path);
+}
+
+/*
+ * Populate a list store with data from a file passed in as first parameter
+ */
+gboolean Populate_List_Store_From_File (gchar *filename, GtkListStore *liststore, gint text_column)
+{
+
+ gchar *file_path = NULL;
+ FILE *file;
+ gchar buffer[MAX_STRING_LEN];
+ GtkTreeIter iter;
+ gboolean entries_set = FALSE;
+
+ /* The file to write */
+ if (!filename || !HOME_VARIABLE) return FALSE;
+ file_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ filename,NULL);
+
+ if ( (file=fopen(file_path,"r"))==NULL )
+ {
+ Log_Print(_("Can't open file '%s' (%s)"),file_path,g_strerror(errno));
+ }else
+ {
+ gchar *data = NULL;
+
+ while(fgets(buffer,sizeof(buffer),file))
+ {
+ if (buffer[strlen(buffer)-1]=='\n')
+ buffer[strlen(buffer)-1]='\0';
+ if (g_utf8_validate(buffer, -1, NULL))
+ data = g_strdup(buffer);
+ else
+ data = convert_to_utf8(buffer);
+
+ if (data && g_utf8_strlen(data, -1) > 0)
+ {
+ gtk_list_store_append(liststore, &iter);
+ gtk_list_store_set(liststore, &iter, text_column, data, -1);
+ entries_set = TRUE;
+ }
+ g_free(data);
+ }
+ fclose(file);
+ }
+ g_free(file_path);
+ return entries_set;
+}
+
+
+/*
+ * Functions for writing and reading list of 'Fill Tag' masks
+ */
+void Load_Scan_Tag_Masks_List (GtkListStore *liststore, gint colnum, gchar **fallback)
+{
+ gint i = 0;
+ GtkTreeIter iter;
+
+ if (!Populate_List_Store_From_File(SCAN_TAG_MASKS_FILE, liststore, colnum))
+ {
+ // Fall back to defaults
+ Log_Print(_("Loading default 'Fill Tag' masks..."));
+
+ while(fallback[i])
+ {
+ gtk_list_store_append(liststore, &iter);
+ gtk_list_store_set(liststore, &iter, colnum, fallback[i], -1);
+ i++;
+ }
+ }
+}
+
+void Save_Scan_Tag_Masks_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(SCAN_TAG_MASKS_FILE, liststore, colnum);
+}
+
+
+/*
+ * Functions for writing and reading list of 'Rename File' masks
+ */
+void Load_Rename_File_Masks_List (GtkListStore *liststore, gint colnum, gchar **fallback)
+{
+ gint i = 0;
+ GtkTreeIter iter;
+
+ if (!Populate_List_Store_From_File(RENAME_FILE_MASKS_FILE, liststore, colnum))
+ {
+ // Fall back to defaults
+ Log_Print(_("Loading default 'Rename File' masks..."));
+
+ while(fallback[i])
+ {
+ gtk_list_store_append(liststore, &iter);
+ gtk_list_store_set(liststore, &iter, colnum, fallback[i], -1);
+ i++;
+ }
+ }
+}
+
+void Save_Rename_File_Masks_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(RENAME_FILE_MASKS_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of 'Rename Directory' masks
+ */
+void Load_Rename_Directory_Masks_List (GtkListStore *liststore, gint colnum, gchar **fallback)
+{
+ gint i = 0;
+ GtkTreeIter iter;
+
+ if (!Populate_List_Store_From_File(RENAME_DIRECTORY_MASKS_FILE, liststore, colnum))
+ {
+ // Fall back to defaults
+ Log_Print(_("Loading default 'Rename Directory' masks..."));
+
+ while(fallback[i])
+ {
+ gtk_list_store_append(liststore, &iter);
+ gtk_list_store_set(liststore, &iter, colnum, fallback[i], -1);
+ i++;
+ }
+ }
+}
+
+void Save_Rename_Directory_Masks_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(RENAME_DIRECTORY_MASKS_FILE, liststore, colnum);
+}
+
+
+
+
+/*
+ * Functions for writing and reading list of 'DefaultPathToMp3' combobox
+ */
+void Load_Default_Path_To_MP3_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(DEFAULT_PATH_TO_MP3_HISTORY_FILE, liststore, colnum);
+}
+void Save_Default_Path_To_MP3_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(DEFAULT_PATH_TO_MP3_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of 'DefaultComment' combobox
+ */
+void Load_Default_Tag_Comment_Text_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(DEFAULT_TAG_COMMENT_HISTORY_FILE, liststore, colnum);
+}
+void Save_Default_Tag_Comment_Text_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(DEFAULT_TAG_COMMENT_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of 'BrowserEntry' combobox
+ */
+void Load_Path_Entry_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(PATH_ENTRY_HISTORY_FILE, liststore, colnum);
+}
+void Save_Path_Entry_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(PATH_ENTRY_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of 'PlayListNameCombo' combobox
+ */
+void Load_Play_List_Name_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(PLAY_LIST_NAME_MASKS_FILE, liststore, colnum);
+}
+void Save_Play_List_Name_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(PLAY_LIST_NAME_MASKS_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of combobox to run program (tree browser)
+ */
+void Load_Run_Program_With_Directory_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(RUN_PROGRAM_WITH_DIRECTORY_HISTORY_FILE, liststore, colnum);
+}
+void Save_Run_Program_With_Directory_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(RUN_PROGRAM_WITH_DIRECTORY_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of combobox to run program (file browser)
+ */
+void Load_Run_Program_With_File_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(RUN_PROGRAM_WITH_FILE_HISTORY_FILE, liststore, colnum);
+}
+void Save_Run_Program_With_File_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(RUN_PROGRAM_WITH_FILE_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of combobox to run file audio player
+ */
+void Load_Audio_File_Player_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(AUDIO_FILE_PLAYER_HISTORY_FILE, liststore, colnum);
+}
+void Save_Audio_File_Player_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(AUDIO_FILE_PLAYER_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of combobox to search a string into file (tag or filename)
+ */
+void Load_Search_File_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(SEARCH_FILE_HISTORY_FILE, liststore, colnum);
+}
+void Save_Search_File_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(SEARCH_FILE_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of combobox of path of file to load to rename files
+ */
+void Load_File_To_Load_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(FILE_TO_LOAD_HISTORY_FILE, liststore, colnum);
+}
+void Save_File_To_Load_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(FILE_TO_LOAD_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of combobox of playlist content
+ */
+void Load_Playlist_Content_Mask_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(PLAYLIST_CONTENT_MASKS_FILE, liststore, colnum);
+}
+void Save_Playlist_Content_Mask_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(PLAYLIST_CONTENT_MASKS_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of combobox of cddb search string
+ */
+void Load_Cddb_Search_String_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(CDDB_SEARCH_STRING_HISTORY_FILE, liststore, colnum);
+}
+void Save_Cddb_Search_String_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(CDDB_SEARCH_STRING_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of combobox of cddb search string in result list
+ */
+void Load_Cddb_Search_String_In_Result_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(CDDB_SEARCH_STRING_IN_RESULT_HISTORY_FILE, liststore, colnum);
+}
+void Save_Cddb_Search_String_In_Result_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(CDDB_SEARCH_STRING_IN_RESULT_HISTORY_FILE, liststore, colnum);
+}
+
+/*
+ * Functions for writing and reading list of 'CddbLocalPath3' combobox
+ */
+void Load_Cddb_Local_Path_List (GtkListStore *liststore, gint colnum)
+{
+ Populate_List_Store_From_File(CDDB_LOCAL_PATH_HISTORY_FILE, liststore, colnum);
+}
+void Save_Cddb_Local_Path_List (GtkListStore *liststore, gint colnum)
+{
+ Save_List_Store_To_File(CDDB_LOCAL_PATH_HISTORY_FILE, liststore, colnum);
+}
+
+
+
+
+
+
+
+/*
+ * Create the directory used by EasyTAG to store files for each user.
+ * If the directory already exists, does nothing and returns 1.
+ * If unable to create the directory, returns 0.
+ */
+gboolean Create_Easytag_Directory (void)
+{
+ gchar *easytag_path = NULL;
+ DIR *dir;
+
+ if (!HOME_VARIABLE)
+ {
+ Log_Print(_("ERROR: The environment variable HOME is not defined!"));
+ return FALSE;
+ }
+
+ /* Directory to create (if doesn't exists) with absolute path
+ * Note for NetBSD : avoid passing a trailing slash to mkdir() */
+ easytag_path = g_strconcat(HOME_VARIABLE,
+ HOME_VARIABLE[strlen(HOME_VARIABLE)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ EASYTAG_DIR,
+ //EASYTAG_DIR[strlen(EASYTAG_DIR)-1]!=G_DIR_SEPARATOR?G_DIR_SEPARATOR_S:"",
+ NULL);
+
+ if ( (dir=opendir(easytag_path)) == NULL )
+ {
+ if ( (mkdir(easytag_path,S_IRWXU|S_IXGRP|S_IRGRP)) == -1)
+ {
+ Log_Print(_("ERROR: Can't create directory '%s' (%s)!"),easytag_path,g_strerror(errno));
+ return FALSE;
+ }
+ }else
+ {
+ closedir(dir);
+ }
+
+ g_free(easytag_path);
+
+ return TRUE;
+}
diff --git a/src/setting.h b/src/setting.h
new file mode 100755
index 0000000..7a47a2d
--- /dev/null
+++ b/src/setting.h
@@ -0,0 +1,375 @@
+/* config.h - 2000/06/21 */
+/*
+ * EasyTAG - Tag editor for MP3 and Ogg Vorbis files
+ * Copyright (C) 2000-2003 Jerome Couderc <easytag@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __CONFIG_H__
+#define __CONFIG_H__
+
+#include <gtk/gtk.h>
+
+/***************
+ * Declaration *
+ ***************/
+
+typedef enum
+{
+ CV_TYPE_STRING=0,
+ CV_TYPE_INT,
+ CV_TYPE_BOOL
+} Config_Variable_Type;
+
+
+typedef struct _tConfigVariable tConfigVariable;
+struct _tConfigVariable
+{
+ char *name; /* Variable name written in config file */
+ Config_Variable_Type type; /* Variable type: Integer, Alphabetic, ... */
+ void *pointer; /* Pointer to our variable */
+};
+
+
+/*
+ * Config varariables
+ */
+/* Common */
+gint LOAD_ON_STARTUP;
+gchar *DEFAULT_PATH_TO_MP3;
+gint BROWSER_LINE_STYLE;
+gint BROWSER_EXPANDER_STYLE;
+gint BROWSE_SUBDIR;
+gint BROWSE_HIDDEN_DIR;
+gint OPEN_SELECTED_BROWSER_NODE;
+
+/* Misc */
+// User Interface
+gint SET_MAIN_WINDOW_POSITION;
+gint MAIN_WINDOW_X;
+gint MAIN_WINDOW_Y;
+gint MAIN_WINDOW_HEIGHT;
+gint MAIN_WINDOW_WIDTH;
+gint PANE_HANDLE_POSITION1;
+gint PANE_HANDLE_POSITION2;
+gint PANE_HANDLE_POSITION3;
+gint PANE_HANDLE_POSITION4;
+gint SHOW_HEADER_INFO;
+
+gint CHANGED_FILES_DISPLAYED_TO_RED;
+gint CHANGED_FILES_DISPLAYED_TO_BOLD;
+
+gint SORTING_FILE_MODE;
+gint SORTING_FILE_CASE_SENSITIVE;
+
+gint MESSAGE_BOX_POSITION_NONE;
+gint MESSAGE_BOX_POSITION_CENTER;
+gint MESSAGE_BOX_POSITION_MOUSE;
+gint MESSAGE_BOX_POSITION_CENTER_ON_PARENT;
+
+gchar *AUDIO_FILE_PLAYER;
+
+/* File Settings */
+gint REPLACE_ILLEGAL_CHARACTERS_IN_FILENAME;
+gint FILENAME_EXTENSION_LOWER_CASE;
+gint FILENAME_EXTENSION_UPPER_CASE;
+gint FILENAME_EXTENSION_NO_CHANGE;
+gint PRESERVE_MODIFICATION_TIME;
+
+gint FILENAME_CHARACTER_SET_OTHER;
+gint FILENAME_CHARACTER_SET_APPROXIMATE;
+gint FILENAME_CHARACTER_SET_DISCARD;
+
+/* Tag Settings */
+gint WRITE_ID3_TAGS_IN_FLAC_FILE;
+gint STRIP_TAG_WHEN_EMPTY_FIELDS;
+gint CONVERT_OLD_ID3V2_TAG_VERSION;
+
+gint FILE_WRITING_ID3V2_VERSION_4;
+gint USE_NON_STANDARD_ID3_READING_CHARACTER_SET;
+gchar *FILE_READING_ID3V1V2_CHARACTER_SET;
+
+gint FILE_WRITING_ID3V2_WRITE_TAG;
+gint FILE_WRITING_ID3V2_USE_CRC32;
+gint FILE_WRITING_ID3V2_USE_COMPRESSION;
+gint FILE_WRITING_ID3V2_USE_UNICODE_CHARACTER_SET;
+gchar *FILE_WRITING_ID3V2_UNICODE_CHARACTER_SET;
+gchar *FILE_WRITING_ID3V2_NO_UNICODE_CHARACTER_SET;
+gint FILE_WRITING_ID3V2_ICONV_OPTIONS_NO;
+gint FILE_WRITING_ID3V2_ICONV_OPTIONS_TRANSLIT;
+gint FILE_WRITING_ID3V2_ICONV_OPTIONS_IGNORE;
+
+gint FILE_WRITING_ID3V1_WRITE_TAG;
+gchar *FILE_WRITING_ID3V1_CHARACTER_SET;
+gint FILE_WRITING_ID3V1_ICONV_OPTIONS_NO;
+gint FILE_WRITING_ID3V1_ICONV_OPTIONS_TRANSLIT;
+gint FILE_WRITING_ID3V1_ICONV_OPTIONS_IGNORE;
+
+gint DATE_AUTO_COMPLETION;
+gint NUMBER_TRACK_FORMATED;
+gint NUMBER_TRACK_FORMATED_SPIN_BUTTON;
+gint OGG_TAG_WRITE_XMMS_COMMENT;
+gint SET_FOCUS_TO_SAME_TAG_FIELD;
+gint SET_FOCUS_TO_FIRST_TAG_FIELD;
+
+
+/* Scanner */
+gint SCANNER_TYPE;
+gint SCAN_MASK_EDITOR_BUTTON;
+gint SCAN_LEGEND_BUTTON;
+gint FTS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE;
+gint FTS_CONVERT_SPACE_INTO_UNDERSCORE;
+gint RFS_CONVERT_UNDERSCORE_AND_P20_INTO_SPACE;
+gint RFS_CONVERT_SPACE_INTO_UNDERSCORE;
+gint PFS_DONT_UPPER_SOME_WORDS;
+gint OVERWRITE_TAG_FIELD;
+gint SET_DEFAULT_COMMENT;
+gchar *DEFAULT_COMMENT;
+gint SET_CRC32_COMMENT;
+gint OPEN_SCANNER_WINDOW_ON_STARTUP;
+gint SCANNER_WINDOW_ON_TOP;
+gint SET_SCANNER_WINDOW_POSITION;
+gint SCANNER_WINDOW_X;
+gint SCANNER_WINDOW_Y;
+
+/* Confirmation */
+gint CONFIRM_BEFORE_EXIT;
+gint CONFIRM_WRITE_TAG;
+gint CONFIRM_RENAME_FILE;
+gint CONFIRM_WRITE_PLAYLIST;
+gint CONFIRM_DELETE_FILE;
+
+/* Scanner window */
+gint PROCESS_FILENAME_FIELD;
+gint PROCESS_TITLE_FIELD;
+gint PROCESS_ARTIST_FIELD;
+gint PROCESS_ALBUM_FIELD;
+gint PROCESS_GENRE_FIELD;
+gint PROCESS_COMMENT_FIELD;
+gint PROCESS_COMPOSER_FIELD;
+gint PROCESS_ORIG_ARTIST_FIELD;
+gint PROCESS_COPYRIGHT_FIELD;
+gint PROCESS_URL_FIELD;
+gint PROCESS_ENCODED_BY_FIELD;
+gint PF_CONVERT_INTO_SPACE;
+gint PF_CONVERT_SPACE;
+gint PF_CONVERT;
+gint PF_CONVERT_ALL_UPPERCASE;
+gint PF_CONVERT_ALL_DOWNCASE;
+gint PF_CONVERT_FIRST_LETTER_UPPERCASE;
+gint PF_CONVERT_FIRST_LETTERS_UPPERCASE;
+gint PF_REMOVE_SPACE;
+gint PF_INSERT_SPACE;
+gint PF_ONLY_ONE_SPACE;
+
+/* Playlist window */
+gchar *PLAYLIST_NAME;
+gint PLAYLIST_USE_MASK_NAME;
+gint PLAYLIST_USE_DIR_NAME;
+gint PLAYLIST_ONLY_SELECTED_FILES;
+gint PLAYLIST_FULL_PATH;
+gint PLAYLIST_RELATIVE_PATH;
+gint PLAYLIST_CREATE_IN_PARENT_DIR;
+gint PLAYLIST_USE_DOS_SEPARATOR;
+gint PLAYLIST_CONTENT_NONE;
+gint PLAYLIST_CONTENT_FILENAME;
+gint PLAYLIST_CONTENT_MASK;
+gchar *PLAYLIST_CONTENT_MASK_VALUE;
+
+gint PLAYLIST_WINDOW_X;
+gint PLAYLIST_WINDOW_Y;
+gint PLAYLIST_WINDOW_WIDTH;
+gint PLAYLIST_WINDOW_HEIGHT;
+
+/* "Load filenames from txt" window */
+gint LOAD_FILE_RUN_SCANNER;
+
+gint LOAD_FILE_WINDOW_X;
+gint LOAD_FILE_WINDOW_Y;
+gint LOAD_FILE_WINDOW_WIDTH;
+gint LOAD_FILE_WINDOW_HEIGHT;
+
+/* CDDB in preferences window */
+gchar *CDDB_SERVER_NAME_AUTOMATIC_SEARCH;
+gint CDDB_SERVER_PORT_AUTOMATIC_SEARCH;
+gchar *CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH;
+gchar *CDDB_SERVER_NAME_AUTOMATIC_SEARCH2;
+gint CDDB_SERVER_PORT_AUTOMATIC_SEARCH2;
+gchar *CDDB_SERVER_CGI_PATH_AUTOMATIC_SEARCH2;
+gchar *CDDB_SERVER_NAME_MANUAL_SEARCH;
+gint CDDB_SERVER_PORT_MANUAL_SEARCH;
+gchar *CDDB_SERVER_CGI_PATH_MANUAL_SEARCH;
+gchar *CDDB_LOCAL_PATH;
+gint CDDB_USE_PROXY;
+gchar *CDDB_PROXY_NAME;
+gint CDDB_PROXY_PORT;
+gchar *CDDB_PROXY_USER_NAME;
+gchar *CDDB_PROXY_USER_PASSWORD;
+
+gint SET_CDDB_WINDOW_POSITION;
+gint CDDB_WINDOW_X;
+gint CDDB_WINDOW_Y;
+gint CDDB_WINDOW_HEIGHT;
+gint CDDB_WINDOW_WIDTH;
+gint CDDB_PANE_HANDLE_POSITION;
+
+gint CDDB_FOLLOW_FILE;
+gint CDDB_USE_DLM;
+gint CDDB_USE_LOCAL_ACCESS;
+
+/* CDDB window */
+gint CDDB_SEARCH_IN_ALL_FIELDS;
+gint CDDB_SEARCH_IN_ARTIST_FIELD;
+gint CDDB_SEARCH_IN_TITLE_FIELD;
+gint CDDB_SEARCH_IN_TRACK_NAME_FIELD;
+gint CDDB_SEARCH_IN_OTHER_FIELD;
+
+gint CDDB_SHOW_CATEGORIES;
+
+gint CDDB_SEARCH_IN_ALL_CATEGORIES;
+gint CDDB_SEARCH_IN_BLUES_CATEGORY;
+gint CDDB_SEARCH_IN_CLASSICAL_CATEGORY;
+gint CDDB_SEARCH_IN_COUNTRY_CATEGORY;
+gint CDDB_SEARCH_IN_FOLK_CATEGORY;
+gint CDDB_SEARCH_IN_JAZZ_CATEGORY;
+gint CDDB_SEARCH_IN_MISC_CATEGORY;
+gint CDDB_SEARCH_IN_NEWAGE_CATEGORY;
+gint CDDB_SEARCH_IN_REGGAE_CATEGORY;
+gint CDDB_SEARCH_IN_ROCK_CATEGORY;
+gint CDDB_SEARCH_IN_SOUNDTRACK_CATEGORY;
+
+gint CDDB_SET_TO_ALL_FIELDS;
+gint CDDB_SET_TO_TITLE;
+gint CDDB_SET_TO_ARTIST;
+gint CDDB_SET_TO_ALBUM;
+gint CDDB_SET_TO_YEAR;
+gint CDDB_SET_TO_TRACK;
+gint CDDB_SET_TO_TRACK_TOTAL;
+gint CDDB_SET_TO_GENRE;
+gint CDDB_SET_TO_FILE_NAME;
+
+gint CDDB_RUN_SCANNER;
+
+/* Search Window */
+gint SET_SEARCH_WINDOW_POSITION;
+gint SEARCH_WINDOW_X;
+gint SEARCH_WINDOW_Y;
+gint SEARCH_WINDOW_HEIGHT;
+gint SEARCH_WINDOW_WIDTH;
+gint SEARCH_IN_FILENAME;
+gint SEARCH_IN_TAG;
+gint SEARCH_CASE_SENSITIVE;
+
+/* Default mask */
+gchar *SCAN_TAG_DEFAULT_MASK;
+gchar *RENAME_FILE_DEFAULT_MASK;
+gchar *RENAME_DIRECTORY_DEFAULT_MASK;
+gint RENAME_DIRECTORY_WITH_MASK;
+
+
+/* Other parameters */
+gint OPTIONS_NOTEBOOK_PAGE;
+gint OPTIONS_WINDOW_HEIGHT;
+gint OPTIONS_WINDOW_WIDTH;
+
+
+
+/**************
+ * Prototypes *
+ **************/
+
+void Init_Config_Variables (void);
+void Read_Config (void);
+void Display_Config (void);
+
+void Apply_Changes_Of_Preferences_Window (void);
+void Apply_Changes_Of_UI (void);
+void Save_Changes_Of_Preferences_Window (void);
+void Save_Changes_Of_UI (void);
+void Save_Config_To_File (void);
+
+gboolean Create_Easytag_Directory (void);
+gboolean Setting_Create_Files (void);
+
+
+/* MasksList */
+void Load_Scan_Tag_Masks_List (GtkListStore *liststore, gint colnum, gchar **fallback);
+void Save_Scan_Tag_Masks_List (GtkListStore *liststore, gint colnum);
+
+/* RenameFileMasksList */
+void Load_Rename_File_Masks_List (GtkListStore *liststore, gint colnum, gchar **fallback);
+void Save_Rename_File_Masks_List (GtkListStore *liststore, gint colnum);
+
+/* RenameDirectoryMasksList 'RenameDirectoryMaskCombo' combobox */
+void Load_Rename_Directory_Masks_List (GtkListStore *liststore, gint colnum, gchar **fallback);
+void Save_Rename_Directory_Masks_List (GtkListStore *liststore, gint colnum);
+
+/* 'DefaultPathToMp3' combobox */
+void Load_Default_Path_To_MP3_List (GtkListStore *liststore, gint colnum);
+void Save_Default_Path_To_MP3_List (GtkListStore *liststore, gint colnum);
+
+/* 'DefaultComment' combobox */
+void Load_Default_Tag_Comment_Text_List (GtkListStore *liststore, gint colnum);
+void Save_Default_Tag_Comment_Text_List (GtkListStore *liststore, gint colnum);
+
+/* 'BrowserEntry' combobox */
+void Load_Path_Entry_List (GtkListStore *liststore, gint colnum);
+void Save_Path_Entry_List (GtkListStore *liststore, gint colnum);
+
+/* 'PlayListNameEntry' combobox */
+void Load_Play_List_Name_List (GtkListStore *liststore, gint colnum);
+void Save_Play_List_Name_List (GtkListStore *liststore, gint colnum);
+
+/* Run Program combobox (tree browser) */
+void Load_Run_Program_With_Directory_List (GtkListStore *liststore, gint colnum);
+void Save_Run_Program_With_Directory_List (GtkListStore *liststore, gint colnum);
+
+/* Run Program combobox (file browser) */
+void Load_Run_Program_With_File_List (GtkListStore *liststore, gint colnum);
+void Save_Run_Program_With_File_List (GtkListStore *liststore, gint colnum);
+
+/* 'FilePlayerEntry' combobox */
+void Load_Audio_File_Player_List (GtkListStore *liststore, gint colnum);
+void Save_Audio_File_Player_List (GtkListStore *liststore, gint colnum);
+
+/* 'SearchStringEntry' combobox */
+void Load_Search_File_List (GtkListStore *liststore, gint colnum);
+void Save_Search_File_List (GtkListStore *liststore, gint colnum);
+
+/* 'FileToLoad' combobox */
+void Load_File_To_Load_List (GtkListStore *liststore, gint colnum);
+void Save_File_To_Load_List (GtkListStore *liststore, gint colnum);
+
+/* 'PlayListContentMaskEntry' combobox */
+void Load_Playlist_Content_Mask_List (GtkListStore *liststore, gint colnum);
+void Save_Playlist_Content_Mask_List (GtkListStore *liststore, gint colnum);
+
+/* 'CddbSearchStringEntry' combobox */
+void Load_Cddb_Search_String_List (GtkListStore *liststore, gint colnum);
+void Save_Cddb_Search_String_List (GtkListStore *liststore, gint colnum);
+
+/* 'CddbSearchStringInResultEntry' combobox */
+void Load_Cddb_Search_String_In_Result_List (GtkListStore *liststore, gint colnum);
+void Save_Cddb_Search_String_In_Result_List (GtkListStore *liststore, gint colnum);
+
+/* 'CddbLocalPath' combobox */
+void Load_Cddb_Local_Path_List (GtkListStore *liststore, gint colnum);
+void Save_Cddb_Local_Path_List (GtkListStore *liststore, gint colnum);
+
+
+
+#endif /* __CONFIG_H__ */
diff --git a/src/ui_manager.h b/src/ui_manager.h
new file mode 100755
index 0000000..8d34a94
--- /dev/null
+++ b/src/ui_manager.h
@@ -0,0 +1,325 @@
+/*
+ * - bar.h : defines constant associated to the action "<menuitem action="
+ * - bar.c : Create_UI() does the actions
+ */
+
+static const gchar *ui_xml =
+"<ui>"
+
+/*
+ * Menu bar
+ */
+" <menubar name='MenuBar'>"
+" <menu action='FileMenu'>"
+
+" <menu action='SortTagMenu'>"
+" <menuitem action='SortTrackNumAsc' />"
+" <menuitem action='SortTrackNumDesc' />"
+" <separator />"
+" <menuitem action='SortTitleAsc' />"
+" <menuitem action='SortTitleDesc' />"
+" <separator />"
+" <menuitem action='SortArtistAsc' />"
+" <menuitem action='SortArtistDesc' />"
+" <separator />"
+" <menuitem action='SortAlbumAsc' />"
+" <menuitem action='SortAlbumDesc' />"
+" <separator />"
+" <menuitem action='SortYearAsc' />"
+" <menuitem action='SortYearDesc' />"
+" <separator />"
+" <menuitem action='SortYearAsc' />"
+" <menuitem action='SortYearDesc' />"
+" <separator />"
+" <menuitem action='SortGenreAsc' />"
+" <menuitem action='SortGenreDesc' />"
+" <separator />"
+" <menuitem action='SortCommentAsc' />"
+" <menuitem action='SortCommentDesc' />"
+" <separator />"
+" <menuitem action='SortComposerAsc' />"
+" <menuitem action='SortComposerDesc' />"
+" <separator />"
+" <menuitem action='SortOrigArtistAsc' />"
+" <menuitem action='SortOrigArtistDesc' />"
+" <separator />"
+" <menuitem action='SortCopyrightAsc' />"
+" <menuitem action='SortCopyrightDesc' />"
+" <separator />"
+" <menuitem action='SortUrlAsc' />"
+" <menuitem action='SortUrlDesc' />"
+" <separator />"
+" <menuitem action='SortEncodedByAsc' />"
+" <menuitem action='SortEncodedByDesc' />"
+" <separator />"
+" </menu>"
+
+" <menu action='SortPropMenu'>"
+" <menuitem action='SortFilenameAsc' />"
+" <menuitem action='SortFilenameDesc' />"
+" <separator />"
+" <menuitem action='SortDateAsc' />"
+" <menuitem action='SortDateDesc' />"
+" <separator />"
+" <menuitem action='SortTypeAsc' />"
+" <menuitem action='SortTypeDesc' />"
+" <separator />"
+" <menuitem action='SortSizeAsc' />"
+" <menuitem action='SortSizeDesc' />"
+" <separator />"
+" <menuitem action='SortDurationAsc' />"
+" <menuitem action='SortDurationDesc' />"
+" <separator />"
+" <menuitem action='SortBitrateAsc' />"
+" <menuitem action='SortBitrateDesc' />"
+" <separator />"
+" <menuitem action='SortSamplerateAsc' />"
+" <menuitem action='SortSamplerateDesc' />"
+" </menu>"
+
+" <menuitem action='OpenFile' />"
+" <separator />"
+
+" <menuitem action='SelAll' />"
+" <menuitem action='UnselAll' />"
+" <menuitem action='SelInv' />"
+" <separator />"
+
+" <menuitem action='DeleteFile' />"
+" <separator />"
+
+" <menuitem action='FirstFile' />"
+" <menuitem action='PreviousFile' />"
+" <menuitem action='NextFile' />"
+" <menuitem action='LastFile' />"
+" <separator />"
+
+" <menuitem action='ScanFile' />"
+" <menuitem action='RemoveTag' />"
+" <menuitem action='UndoFile' />"
+" <menuitem action='RedoFile' />"
+" <menuitem action='SaveFile' />"
+" <menuitem action='SaveFileForced' />"
+" <separator />"
+
+" <menuitem action='Undo' />"
+" <menuitem action='Redo' />"
+" <separator />"
+
+" <menuitem action='Quit' />"
+" </menu>"
+
+
+" <menu action='BrowserMenu'>"
+" <menuitem action='GoToHome' />"
+" <menuitem action='GoToDefaultPath' />"
+" <menuitem action='SetDefaultPath' />"
+" <separator />"
+
+" <menuitem action='ViewMode' />"
+" <menuitem action='RenameDir' />"
+" <menuitem action='ReloadDir' />"
+" <menuitem action='BrowseDir' />"
+" <separator />"
+
+" <menuitem action='BrowseSubdir' />"
+#ifndef WIN32
+" <menuitem action='BrowseHiddenDir' />"
+#endif
+" <separator />"
+
+" <menuitem action='CollapseTree' />"
+" <menuitem action='RefreshTree' />"
+" </menu>"
+
+" <menu action='ScannerMenu'>"
+" <menuitem action='FillTag' />"
+" <menuitem action='RenameFile' />"
+" <menuitem action='ProcessFields' />"
+" </menu>"
+
+" <menu action='MiscMenu'>"
+" <menuitem action='SearchFile' />"
+" <menuitem action='CDDBSearch' />"
+" <separator />"
+
+" <menuitem action='LoadFilenames' />"
+" <menuitem action='WritePlaylist' />"
+" <menuitem action='RunAudio' />"
+" </menu>"
+
+" <menu action='SettingsMenu'>"
+" <menuitem action='Preferences' />"
+" </menu>"
+
+" <menu action='HelpMenu'>"
+" <menuitem action='About' />"
+" </menu>"
+
+" </menubar>"
+
+
+/*
+ * Tool bar
+ */
+" <toolbar name='ToolBar'>"
+" <toolitem action='FirstFile'/>"
+" <toolitem action='PreviousFile'/>"
+" <toolitem action='NextFile'/>"
+" <toolitem action='LastFile'/>"
+" <separator />"
+
+" <toolitem action='ScanFile'/>"
+" <toolitem action='RemoveTag'/>"
+" <toolitem action='UndoFile'/>"
+" <toolitem action='RedoFile'/>"
+" <toolitem action='SaveFile'/>"
+" <separator />"
+
+" <toolitem action='ViewModeToggle'/>"
+" <toolitem action='SelAll'/>"
+" <toolitem action='SelInv'/>"
+" <separator />"
+
+" <toolitem action='SearchFile' />"
+" <toolitem action='CDDBSearch' />"
+" <toolitem action='WritePlaylist' />"
+" <separator />"
+
+" <toolitem action='Stop'/>"
+" <separator />"
+
+" <toolitem action='Quit'/>"
+" </toolbar>"
+
+
+/*
+ * Popup menus
+ */
+// Popup in file list
+" <popup name='FilePopup'>"
+" <menuitem action='SelAll' />"
+" <menuitem action='UnselAll' />"
+" <menuitem action='SelInv' />"
+" <separator />"
+" <menuitem action='RunAudio' />"
+" <separator />"
+" <menu action='ScannerSubpopup'>"
+" <menuitem action='FillTag' />"
+" <menuitem action='RenameFile' />"
+" <menuitem action='ProcessFields' />"
+" </menu>"
+" <menuitem action='CDDBSearchFile' />"
+" <menuitem action='SearchFile' />"
+" <menuitem action='DeleteFile' />"
+" <menuitem action='ReloadDir' />"
+" <menuitem action='OpenFile' />"
+" <separator />"
+
+" <menu action='SortTagMenu'>"
+" <menuitem action='SortTrackNumAsc' />"
+" <menuitem action='SortTrackNumDesc' />"
+" <separator />"
+" <menuitem action='SortTitleAsc' />"
+" <menuitem action='SortTitleDesc' />"
+" <separator />"
+" <menuitem action='SortArtistAsc' />"
+" <menuitem action='SortArtistDesc' />"
+" <separator />"
+" <menuitem action='SortAlbumAsc' />"
+" <menuitem action='SortAlbumDesc' />"
+" <separator />"
+" <menuitem action='SortYearAsc' />"
+" <menuitem action='SortYearDesc' />"
+" <separator />"
+" <menuitem action='SortYearAsc' />"
+" <menuitem action='SortYearDesc' />"
+" <separator />"
+" <menuitem action='SortGenreAsc' />"
+" <menuitem action='SortGenreDesc' />"
+" <separator />"
+" <menuitem action='SortCommentAsc' />"
+" <menuitem action='SortCommentDesc' />"
+" <separator />"
+" <menuitem action='SortComposerAsc' />"
+" <menuitem action='SortComposerDesc' />"
+" <separator />"
+" <menuitem action='SortOrigArtistAsc' />"
+" <menuitem action='SortOrigArtistDesc' />"
+" <separator />"
+" <menuitem action='SortCopyrightAsc' />"
+" <menuitem action='SortCopyrightDesc' />"
+" <separator />"
+" <menuitem action='SortUrlAsc' />"
+" <menuitem action='SortUrlDesc' />"
+" <separator />"
+" <menuitem action='SortEncodedByAsc' />"
+" <menuitem action='SortEncodedByDesc' />"
+" <separator />"
+" </menu>"
+
+" <menu action='SortPropMenu'>"
+" <menuitem action='SortFilenameAsc' />"
+" <menuitem action='SortFilenameDesc' />"
+" <separator />"
+" <menuitem action='SortDateAsc' />"
+" <menuitem action='SortDateDesc' />"
+" <separator />"
+" <menuitem action='SortTypeAsc' />"
+" <menuitem action='SortTypeDesc' />"
+" <separator />"
+" <menuitem action='SortSizeAsc' />"
+" <menuitem action='SortSizeDesc' />"
+" <separator />"
+" <menuitem action='SortDurationAsc' />"
+" <menuitem action='SortDurationDesc' />"
+" <separator />"
+" <menuitem action='SortBitrateAsc' />"
+" <menuitem action='SortBitrateDesc' />"
+" <separator />"
+" <menuitem action='SortSamplerateAsc' />"
+" <menuitem action='SortSamplerateDesc' />"
+" </menu>"
+" </popup>"
+
+// Popup in browser tree
+" <popup name='DirPopup'>"
+" <menuitem action='DirPopupRunAudio' />"
+" <separator />"
+" <menuitem action='GoToHome' />"
+" <menuitem action='GoToDefaultPath' />"
+" <menuitem action='SetDefaultPath' />"
+" <separator />"
+" <menuitem action='RenameDir' />"
+" <menuitem action='ReloadDir' />"
+" <menuitem action='BrowseDir' />"
+" <separator />"
+" <menuitem action='BrowseSubdir' />"
+#ifndef WIN32
+" <menuitem action='BrowseHiddenDir' />"
+#endif
+" <separator />"
+" <menuitem action='CollapseTree' />"
+" <menuitem action='RefreshTree' />"
+" </popup>"
+
+// Popup in browser artist list
+" <popup name='DirArtistPopup'>"
+" <menuitem action='ArtistRunAudio' />"
+//" <separator />"
+//" <menuitem action='ArtistOpenFile' />"
+" </popup>"
+
+// Popup in browser album list
+" <popup name='DirAlbumPopup'>"
+" <menuitem action='AlbumRunAudio' />"
+//" <separator />"
+//" <menuitem action='AlbumOpenFile' />"
+" </popup>"
+
+// Popup in Log list
+" <popup name='LogPopup'>"
+" <menuitem action='CleanLog' />"
+" </popup>"
+
+"</ui>";
diff --git a/src/vcedit.c b/src/vcedit.c
new file mode 100755
index 0000000..3e583bd
--- /dev/null
+++ b/src/vcedit.c
@@ -0,0 +1,629 @@
+/* This program is licensed under the GNU Library General Public License, version 2,
+ * a copy of which is included with this program (LICENCE.LGPL).
+ *
+ * (c) 2000-2001 Michael Smith <msmith@xiph.org>
+ *
+ *
+ * Comment editing backend, suitable for use by nice frontend interfaces.
+ *
+ * last modified: $Id: vcedit.c,v 1.23 2003/09/03 07:58:05 calc Exp $
+ */
+
+#include <config.h> // For definition of ENABLE_OGG
+
+#ifdef ENABLE_OGG
+
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <ogg/ogg.h>
+#include <vorbis/codec.h>
+
+#include "vcedit.h"
+
+
+#define CHUNKSIZE 4096
+
+vcedit_state *vcedit_new_state(void)
+{
+ vcedit_state *state = malloc(sizeof(vcedit_state));
+ memset(state, 0, sizeof(vcedit_state));
+ state->oggtype = VCEDIT_IS_UNKNOWN;
+
+ return state;
+}
+
+char *vcedit_error(vcedit_state *state)
+{
+ return state->lasterror;
+}
+
+vorbis_comment *vcedit_comments(vcedit_state *state)
+{
+ return state->vc;
+}
+
+static void vcedit_clear_internals(vcedit_state *state)
+{
+ char *tmp;
+ if(state->vc)
+ {
+ vorbis_comment_clear(state->vc);
+ free(state->vc);
+ }
+ if(state->os)
+ {
+ ogg_stream_clear(state->os);
+ free(state->os);
+ }
+ if(state->oy)
+ {
+ ogg_sync_clear(state->oy);
+ free(state->oy);
+ }
+ if(state->vendor)
+ free(state->vendor);
+ if(state->mainbuf)
+ free(state->mainbuf);
+ if(state->bookbuf)
+ free(state->bookbuf);
+ if(state->vi) {
+ vorbis_info_clear(state->vi);
+ free(state->vi);
+ }
+
+ tmp = state->lasterror;
+ memset(state, 0, sizeof(*state));
+ state->lasterror = tmp;
+}
+
+void vcedit_clear(vcedit_state *state)
+{
+ if(state)
+ {
+ vcedit_clear_internals(state);
+ free(state);
+ }
+}
+
+/* Next two functions pulled straight from libvorbis, apart from one change
+ * - we don't want to overwrite the vendor string.
+ */
+static void _v_writestring(oggpack_buffer *o,char *s, int len)
+{
+ while(len--)
+ {
+ oggpack_write(o,*s++,8);
+ }
+}
+
+static int _commentheader_out(vcedit_state *state, ogg_packet *op)
+{
+ vorbis_comment *vc = state->vc;
+ char *vendor = state->vendor;
+ oggpack_buffer opb;
+
+ oggpack_writeinit(&opb);
+
+ if (state->oggtype == VCEDIT_IS_OGGVORBIS)
+ {
+ /* preamble */
+ oggpack_write(&opb,0x03,8);
+ _v_writestring(&opb,"vorbis", 6);
+ }
+
+ /* vendor */
+ oggpack_write(&opb,strlen(vendor),32);
+ _v_writestring(&opb,vendor, strlen(vendor));
+
+ /* comments */
+ oggpack_write(&opb,vc->comments,32);
+ if(vc->comments){
+ int i;
+ for(i=0;i<vc->comments;i++){
+ if(vc->user_comments[i]){
+ oggpack_write(&opb,vc->comment_lengths[i],32);
+ _v_writestring(&opb,vc->user_comments[i],
+ vc->comment_lengths[i]);
+ }else{
+ oggpack_write(&opb,0,32);
+ }
+ }
+ }
+ oggpack_write(&opb,1,1);
+
+ op->packet = _ogg_malloc(oggpack_bytes(&opb));
+ memcpy(op->packet, opb.buffer, oggpack_bytes(&opb));
+
+ op->bytes=oggpack_bytes(&opb);
+ op->b_o_s=0;
+ op->e_o_s=0;
+ op->granulepos=0;
+ if (state->oggtype == VCEDIT_IS_OGGVORBIS)
+ {
+ op->packetno = 1;
+ }
+
+ oggpack_writeclear(&opb);
+ return 0;
+}
+
+static int _blocksize(vcedit_state *s, ogg_packet *p)
+{
+ int this = vorbis_packet_blocksize(s->vi, p);
+ int ret = (this + s->prevW)/4;
+
+ if(!s->prevW)
+ {
+ s->prevW = this;
+ return 0;
+ }
+
+ s->prevW = this;
+ return ret;
+}
+
+static int _fetch_next_packet(vcedit_state *s, ogg_packet *p, ogg_page *page)
+{
+ int result;
+ char *buffer;
+ int bytes;
+
+ result = ogg_stream_packetout(s->os, p);
+
+ if(result > 0)
+ return 1;
+ else
+ {
+ if(s->eosin)
+ return 0;
+ while(ogg_sync_pageout(s->oy, page) <= 0)
+ {
+ buffer = ogg_sync_buffer(s->oy, CHUNKSIZE);
+ bytes = s->read(buffer,1, CHUNKSIZE, s->in);
+ ogg_sync_wrote(s->oy, bytes);
+ if(bytes == 0)
+ return 0;
+ }
+ if(ogg_page_eos(page))
+ s->eosin = 1;
+ else if(ogg_page_serialno(page) != s->serial)
+ {
+ s->eosin = 1;
+ s->extrapage = 1;
+ return 0;
+ }
+
+ ogg_stream_pagein(s->os, page);
+ return _fetch_next_packet(s, p, page);
+ }
+}
+
+/*
+ * Next functions pulled straight from libvorbis,
+ */
+static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){
+ while(bytes--){
+ *buf++=oggpack_read(o,8);
+ }
+}
+
+/*
+ * Next functions pulled straight from libvorbis, apart from one change
+ * - disabled the EOP check
+ */
+static int _speex_unpack_comment(vorbis_comment *vc,oggpack_buffer *opb)
+{
+ int i;
+ int vendorlen=oggpack_read(opb,32);
+ if (vendorlen<0)
+ goto err_out;
+
+ vc->vendor=_ogg_calloc(vendorlen+1,1);
+ _v_readstring(opb,vc->vendor,vendorlen);
+
+ vc->comments=oggpack_read(opb,32);
+ if (vc->comments<0)
+ goto err_out;
+ vc->user_comments=_ogg_calloc(vc->comments+1,sizeof(*vc->user_comments));
+ vc->comment_lengths=_ogg_calloc(vc->comments+1, sizeof(*vc->comment_lengths));
+ for (i=0;i<vc->comments;i++){
+ int len=oggpack_read(opb,32);
+ if (len<0)
+ goto err_out;
+ vc->comment_lengths[i]=len;
+ vc->user_comments[i]=_ogg_calloc(len+1,1);
+ _v_readstring(opb,vc->user_comments[i],len);
+ }
+ //if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
+ return(0);
+
+err_out:
+ vorbis_comment_clear(vc);
+ return(1);
+}
+
+int vcedit_open(vcedit_state *state, FILE *in)
+{
+ return vcedit_open_callbacks(state, (void *)in,
+ (vcedit_read_func)fread, (vcedit_write_func)fwrite);
+}
+
+int vcedit_open_callbacks(vcedit_state *state, void *in,
+ vcedit_read_func read_func, vcedit_write_func write_func)
+{
+
+ char *buffer;
+ int bytes,i;
+ int chunks = 0;
+ ogg_packet *header;
+ ogg_packet header_main;
+ ogg_packet header_comments;
+ ogg_packet header_codebooks;
+ ogg_page og;
+
+ state->in = in;
+ state->read = read_func;
+ state->write = write_func;
+
+ state->oy = malloc(sizeof(ogg_sync_state));
+ ogg_sync_init(state->oy);
+
+ while(1)
+ {
+ buffer = ogg_sync_buffer(state->oy, CHUNKSIZE);
+ bytes = state->read(buffer, 1, CHUNKSIZE, state->in);
+
+ ogg_sync_wrote(state->oy, bytes);
+
+ if(ogg_sync_pageout(state->oy, &og) == 1)
+ break;
+
+ if(chunks++ >= 10) /* Bail if we don't find data in the first 40 kB */
+ {
+ if(bytes<CHUNKSIZE)
+ state->lasterror = _("Input truncated or empty.");
+ else
+ state->lasterror = _("Input is not an Ogg bitstream.");
+ goto err;
+ }
+ }
+
+ state->serial = ogg_page_serialno(&og);
+
+ state->os = malloc(sizeof(ogg_stream_state));
+ ogg_stream_init(state->os, state->serial);
+
+ state->vi = malloc(sizeof(vorbis_info));
+ vorbis_info_init(state->vi);
+
+ state->vc = malloc(sizeof(vorbis_comment));
+ vorbis_comment_init(state->vc);
+
+ if(ogg_stream_pagein(state->os, &og) < 0)
+ {
+ state->lasterror = _("Error reading first page of Ogg bitstream.");
+ goto err;
+ }
+
+ if(ogg_stream_packetout(state->os, &header_main) != 1)
+ {
+ state->lasterror = _("Error reading initial header packet.");
+ goto err;
+ }
+
+ // We save the main header first, (it seems speex_packet_to_header munge's it??)
+ state->mainlen = header_main.bytes;
+ state->mainbuf = malloc(state->mainlen);
+ memcpy(state->mainbuf, header_main.packet, header_main.bytes);
+
+ state->oggtype = VCEDIT_IS_UNKNOWN;
+ int headerpackets = 0;
+ if(vorbis_synthesis_headerin(state->vi, state->vc, &header_main) == 0)
+ {
+ state->oggtype = VCEDIT_IS_OGGVORBIS;
+ }
+#ifdef ENABLE_SPEEX
+ else
+ {
+ // Done after "Ogg test" to avoid to display an error message in function
+ // speex_packet_to_header when the file is not Speex.
+ state->si = malloc(sizeof(SpeexHeader));
+ if((state->si = speex_packet_to_header((char*)(&header_main)->packet,(&header_main)->bytes)))
+ state->oggtype = VCEDIT_IS_SPEEX;
+ }
+#endif
+
+ if (state->oggtype == VCEDIT_IS_UNKNOWN)
+ {
+ state->lasterror = _("Ogg bitstream contains neither speex or vorbis data.");
+ goto err;
+ }
+
+ switch (state->oggtype)
+ {
+ case VCEDIT_IS_OGGVORBIS:
+ header = &header_comments;
+ headerpackets = 3;
+ break;
+#ifdef ENABLE_SPEEX
+ case VCEDIT_IS_SPEEX:
+ header = &header_comments;
+ headerpackets = 2 + state->si->extra_headers;
+ break;
+#endif
+ }
+ oggpack_buffer opb;
+ i = 1;
+ while(i<headerpackets)
+ {
+ while(i<headerpackets)
+ {
+ int result = ogg_sync_pageout(state->oy, &og);
+ if(result == 0) break; /* Too little data so far */
+ else if(result == 1)
+ {
+ ogg_stream_pagein(state->os, &og);
+ while(i< headerpackets)
+ {
+ result = ogg_stream_packetout(state->os, header);
+ if(result == 0) break;
+ if(result == -1)
+ {
+ state->lasterror = _("Corrupt secondary header.");
+ goto err;
+ }
+ switch (state->oggtype)
+ {
+ case VCEDIT_IS_OGGVORBIS:
+ vorbis_synthesis_headerin(state->vi, state->vc, header);
+ switch (i)
+ {
+ // 0 packet was the vorbis header
+ case 1:
+ header = &header_codebooks;
+ break;
+ case 2:
+ state->booklen = header->bytes;
+ state->bookbuf = malloc(state->booklen);
+ memcpy(state->bookbuf, header->packet,
+ header->bytes);
+ break;
+ }
+ break;
+ case VCEDIT_IS_SPEEX:
+ switch (i)
+ {
+ // 0 packet was the speex header
+ case 1:
+ oggpack_readinit(&opb,header->packet,header->bytes);
+ _speex_unpack_comment(state->vc,&opb);
+ break;
+ default:
+ state->lasterror = _("Need to save extra headers - TODO!!");
+ goto err;
+ break;
+ }
+ }
+ i++;
+ }
+ }
+ }
+
+ buffer = ogg_sync_buffer(state->oy, CHUNKSIZE);
+ bytes = state->read(buffer, 1, CHUNKSIZE, state->in);
+ if(bytes == 0 && i < 2)
+ {
+ state->lasterror = _("EOF before end of vorbis headers.");
+ goto err;
+ }
+ ogg_sync_wrote(state->oy, bytes);
+ }
+
+ /* Copy the vendor tag */
+ state->vendor = malloc(strlen(state->vc->vendor) +1);
+ strcpy(state->vendor, state->vc->vendor);
+
+ /* Headers are done! */
+ return 0;
+
+err:
+ vcedit_clear_internals(state);
+ return -1;
+}
+
+int vcedit_write(vcedit_state *state, void *out)
+{
+ ogg_stream_state streamout;
+ ogg_packet header_main;
+ ogg_packet header_comments;
+ ogg_packet header_codebooks;
+
+ ogg_page ogout, ogin;
+ ogg_packet op;
+ ogg_int64_t granpos = 0;
+ int result;
+ char *buffer;
+ int bytes;
+ int needflush=0, needout=0;
+
+ state->eosin = 0;
+ state->extrapage = 0;
+
+ header_main.bytes = state->mainlen;
+ header_main.packet = state->mainbuf;
+ header_main.b_o_s = 1;
+ header_main.e_o_s = 0;
+ header_main.granulepos = 0;
+
+ header_codebooks.bytes = state->booklen;
+ header_codebooks.packet = state->bookbuf;
+ header_codebooks.b_o_s = 0;
+ header_codebooks.e_o_s = 0;
+ header_codebooks.granulepos = 0;
+
+ ogg_stream_init(&streamout, state->serial);
+
+ _commentheader_out(state, &header_comments);
+
+ ogg_stream_packetin(&streamout, &header_main);
+ ogg_stream_packetin(&streamout, &header_comments);
+
+ if (state->oggtype != VCEDIT_IS_SPEEX)
+ ogg_stream_packetin(&streamout, &header_codebooks);
+
+ while((result = ogg_stream_flush(&streamout, &ogout)))
+ {
+ if(state->write(ogout.header,1,ogout.header_len, out) !=
+ (size_t) ogout.header_len)
+ goto cleanup;
+ if(state->write(ogout.body,1,ogout.body_len, out) !=
+ (size_t) ogout.body_len)
+ goto cleanup;
+ }
+
+ while(_fetch_next_packet(state, &op, &ogin))
+ {
+ if(needflush)
+ {
+ if(ogg_stream_flush(&streamout, &ogout))
+ {
+ if(state->write(ogout.header,1,ogout.header_len,
+ out) != (size_t) ogout.header_len)
+ goto cleanup;
+ if(state->write(ogout.body,1,ogout.body_len,
+ out) != (size_t) ogout.body_len)
+ goto cleanup;
+ }
+ }
+ else if(needout)
+ {
+ if(ogg_stream_pageout(&streamout, &ogout))
+ {
+ if(state->write(ogout.header,1,ogout.header_len,
+ out) != (size_t) ogout.header_len)
+ goto cleanup;
+ if(state->write(ogout.body,1,ogout.body_len,
+ out) != (size_t) ogout.body_len)
+ goto cleanup;
+ }
+ }
+
+ needflush=needout=0;
+
+ if (state->oggtype == VCEDIT_IS_OGGVORBIS)
+ {
+ int size;
+ size = _blocksize(state, &op);
+ granpos += size;
+
+ if(op.granulepos == -1)
+ {
+ op.granulepos = granpos;
+ ogg_stream_packetin(&streamout, &op);
+ }
+ else /* granulepos is set, validly. Use it, and force a flush to
+ account for shortened blocks (vcut) when appropriate */
+ {
+ if(granpos > op.granulepos)
+ {
+ granpos = op.granulepos;
+ ogg_stream_packetin(&streamout, &op);
+ needflush=1;
+ }
+ else
+ {
+ ogg_stream_packetin(&streamout, &op);
+ needout=1;
+ }
+ }
+ }
+ /* Don't know about granulepos for speex, will just assume the original
+ was appropriate. Not sure about the flushing?? */
+ else if (state->oggtype == VCEDIT_IS_SPEEX)
+ {
+ ogg_stream_packetin(&streamout, &op);
+ needout=1;
+ }
+ }
+
+ streamout.e_o_s = 1;
+ while(ogg_stream_flush(&streamout, &ogout))
+ {
+ if(state->write(ogout.header,1,ogout.header_len,
+ out) != (size_t) ogout.header_len)
+ goto cleanup;
+ if(state->write(ogout.body,1,ogout.body_len,
+ out) != (size_t) ogout.body_len)
+ goto cleanup;
+ }
+
+ if (state->extrapage)
+ {
+ if(state->write(ogin.header,1,ogin.header_len,
+ out) != (size_t) ogin.header_len)
+ goto cleanup;
+ if (state->write(ogin.body,1,ogin.body_len, out) !=
+ (size_t) ogin.body_len)
+ goto cleanup;
+ }
+
+ state->eosin=0; /* clear it, because not all paths to here do */
+ while(!state->eosin) /* We reached eos, not eof */
+ {
+ /* We copy the rest of the stream (other logical streams)
+ * through, a page at a time. */
+ while(1)
+ {
+ result = ogg_sync_pageout(state->oy, &ogout);
+ if(result==0)
+ break;
+ if(result<0)
+ state->lasterror = _("Corrupt or missing data, continuing...");
+ else
+ {
+ /* Don't bother going through the rest, we can just
+ * write the page out now */
+ if(state->write(ogout.header,1,ogout.header_len,
+ out) != (size_t) ogout.header_len) {
+ goto cleanup;
+ }
+ if(state->write(ogout.body,1,ogout.body_len, out) !=
+ (size_t) ogout.body_len) {
+ goto cleanup;
+ }
+ }
+ }
+ buffer = ogg_sync_buffer(state->oy, CHUNKSIZE);
+ bytes = state->read(buffer,1, CHUNKSIZE, state->in);
+ ogg_sync_wrote(state->oy, bytes);
+ if(bytes == 0)
+ {
+ state->eosin = 1;
+ break;
+ }
+ }
+
+
+cleanup:
+ ogg_stream_clear(&streamout);
+ ogg_packet_clear(&header_comments);
+
+ free(state->mainbuf);
+ free(state->bookbuf);
+ state->mainbuf = state->bookbuf = NULL;
+
+ if(!state->eosin)
+ {
+ state->lasterror =
+ _("Error writing stream to output. "
+ "Output stream may be corrupted or truncated.");
+ return -1;
+ }
+
+ return 0;
+}
+
+#endif /* ENABLE_OGG */
diff --git a/src/vcedit.h b/src/vcedit.h
new file mode 100755
index 0000000..5bc39dc
--- /dev/null
+++ b/src/vcedit.h
@@ -0,0 +1,75 @@
+/* This program is licensed under the GNU Library General Public License, version 2,
+ * a copy of which is included with this program (with filename LICENSE.LGPL).
+ *
+ * (c) 2000-2001 Michael Smith <msmith@xiph.org>
+ *
+ * VCEdit header.
+ *
+ * last modified: $ID:$
+ */
+
+#ifndef __VCEDIT_H
+#define __VCEDIT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <ogg/ogg.h>
+#include <vorbis/codec.h>
+
+#ifdef ENABLE_SPEEX
+#include <speex/speex.h>
+#include <speex/speex_header.h>
+#endif
+
+#define VCEDIT_IS_UNKNOWN 0
+#define VCEDIT_IS_SPEEX 1
+#define VCEDIT_IS_OGGVORBIS 2
+
+typedef size_t (*vcedit_read_func)(void *, size_t, size_t, void *);
+typedef size_t (*vcedit_write_func)(const void *, size_t, size_t, void *);
+
+typedef struct {
+ ogg_sync_state *oy;
+ ogg_stream_state *os;
+
+ int oggtype; // Stream is Vorbis or Speex?
+ vorbis_comment *vc;
+ vorbis_info *vi;
+#ifdef ENABLE_SPEEX
+ SpeexHeader *si;
+#endif
+
+ vcedit_read_func read;
+ vcedit_write_func write;
+
+ void *in;
+ long serial;
+ unsigned char *mainbuf;
+ unsigned char *bookbuf;
+ int mainlen;
+ int booklen;
+ char *lasterror;
+ char *vendor;
+ int prevW;
+ int extrapage;
+ int eosin;
+} vcedit_state;
+
+extern vcedit_state *vcedit_new_state(void);
+extern void vcedit_clear(vcedit_state *state);
+extern vorbis_comment *vcedit_comments(vcedit_state *state);
+extern int vcedit_open(vcedit_state *state, FILE *in);
+extern int vcedit_open_callbacks(vcedit_state *state, void *in,
+ vcedit_read_func read_func, vcedit_write_func write_func);
+extern int vcedit_write(vcedit_state *state, void *out);
+extern char *vcedit_error(vcedit_state *state);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __VCEDIT_H */
+
diff --git a/src/wavpack_header.c b/src/wavpack_header.c
new file mode 100755
index 0000000..c7067b8
--- /dev/null
+++ b/src/wavpack_header.c
@@ -0,0 +1,114 @@
+/* wavpack_header.c - 2007/02/15 */
+/*
+ * EasyTAG - Tag editor for many file types
+ * Copyright (C) 2007 Maarten Maathuis (madman2003@gmail.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#ifdef ENABLE_WAVPACK
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <wavpack/wavpack.h>
+
+#include "easytag.h"
+#include "et_core.h"
+#include "misc.h"
+#include "charset.h"
+#include "wavpack_header.h"
+
+
+gboolean Wavpack_Header_Read_File_Info(gchar *filename, ET_File_Info *ETFileInfo)
+{
+ WavpackContext *wpc;
+
+ wpc = WavpackOpenFileInput(filename, NULL, 0, 0);
+
+ if ( wpc == NULL ) {
+ return FALSE;
+ }
+
+ ETFileInfo->version = WavpackGetVersion(wpc);
+ /* .wvc correction file not counted */
+ ETFileInfo->bitrate = WavpackGetAverageBitrate(wpc, 0)/1000;
+ ETFileInfo->samplerate = WavpackGetSampleRate(wpc);
+ ETFileInfo->mode = WavpackGetNumChannels(wpc);
+ ETFileInfo->size = WavpackGetFileSize(wpc);
+ ETFileInfo->duration = WavpackGetNumSamples(wpc)/ETFileInfo->samplerate;
+
+ WavpackCloseFile(wpc);
+
+ return TRUE;
+}
+
+
+gboolean Wavpack_Header_Display_File_Info_To_UI(gchar *filename_utf8, ET_File_Info *ETFileInfo)
+{
+ gchar *text;
+ gchar *time = NULL;
+ gchar *time1 = NULL;
+ gchar *size = NULL;
+ gchar *size1 = NULL;
+
+ /* Encoder version */
+ gtk_label_set_text(GTK_LABEL(VersionLabel),_("Encoder:"));
+ text = g_strdup_printf("%d",ETFileInfo->version);
+ gtk_label_set_text(GTK_LABEL(VersionValueLabel),text);
+ g_free(text);
+
+ /* Bitrate */
+ text = g_strdup_printf(_("%d kb/s"),ETFileInfo->bitrate);
+ gtk_label_set_text(GTK_LABEL(BitrateValueLabel),text);
+ g_free(text);
+
+ /* Samplerate */
+ text = g_strdup_printf(_("%d Hz"),ETFileInfo->samplerate);
+ gtk_label_set_text(GTK_LABEL(SampleRateValueLabel),text);
+ g_free(text);
+
+ /* Mode */
+ gtk_label_set_text(GTK_LABEL(ModeLabel),_("Channels:"));
+ text = g_strdup_printf("%d",ETFileInfo->mode);
+ gtk_label_set_text(GTK_LABEL(ModeValueLabel),text);
+ g_free(text);
+
+ /* Size */
+ size = Convert_Size(ETFileInfo->size);
+ size1 = Convert_Size(ETCore->ETFileDisplayedList_TotalSize);
+ text = g_strdup_printf("%s (%s)",size,size1);
+ gtk_label_set_text(GTK_LABEL(SizeValueLabel),text);
+ g_free(size);
+ g_free(size1);
+ g_free(text);
+
+ /* Duration */
+ time = Convert_Duration(ETFileInfo->duration);
+ time1 = Convert_Duration(ETCore->ETFileDisplayedList_TotalDuration);
+ text = g_strdup_printf("%s (%s)",time,time1);
+ gtk_label_set_text(GTK_LABEL(DurationValueLabel),text);
+ g_free(time);
+ g_free(time1);
+ g_free(text);
+
+ return TRUE;
+}
+
+#endif /* ENABLE_FLAC */
diff --git a/src/wavpack_header.h b/src/wavpack_header.h
new file mode 100755
index 0000000..c61e006
--- /dev/null
+++ b/src/wavpack_header.h
@@ -0,0 +1,41 @@
+/* wavpack_tag.c - 2007/02/15 */
+/*
+ * EasyTAG - Tag editor for many file types
+ * Copyright (C) 2007 Maarten Maathuis (madman2003@gmail.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __WAVPACK_HEADER_H__
+#define __WAVPACK_HEADER_H__
+
+
+#include "et_core.h"
+
+/****************
+ * Declarations *
+ ****************/
+
+
+/**************
+ * Prototypes *
+ **************/
+
+gboolean Wavpack_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo);
+gboolean Wavpack_Header_Display_File_Info_To_UI (gchar *filename_utf8, ET_File_Info *ETFileInfo);
+
+
+#endif /* __WAVPACK_HEADER_H__ */
diff --git a/src/wavpack_tag.c b/src/wavpack_tag.c
new file mode 100755
index 0000000..e33f78e
--- /dev/null
+++ b/src/wavpack_tag.c
@@ -0,0 +1,400 @@
+/* wavpack_tag.c - 2007/02/15 */
+/*
+ * EasyTAG - Tag editor for many file types
+ * Copyright (C) 2007 Maarten Maathuis (madman2003@gmail.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#ifdef ENABLE_WAVPACK
+
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <wavpack/wavpack.h>
+
+#include "easytag.h"
+#include "vcedit.h"
+#include "et_core.h"
+#include "picture.h"
+//#include "setting.h"
+#include "charset.h"
+#include "wavpack_tag.h"
+
+
+/***************
+ * Declaration *
+ ***************/
+
+#define MULTIFIELD_SEPARATOR " - "
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Wavpack_Tag_Write_File (FILE *file_in, gchar *filename_in, vcedit_state *state);
+
+
+/*************
+ * Functions *
+ *************/
+
+/*
+ * For the APEv2 tags, the following field names are officially supported and
+ * recommended by WavPack (although there are no restrictions on what field names
+ * may be used):
+ *
+ * Artist
+ * Title
+ * Album
+ * Track
+ * Year
+ * Genre
+ * Comment
+ * Cuesheet (note: may include replay gain info as remarks)
+ * Replay_Track_Gain
+ * Replay_Track_Peak
+ * Replay_Album_Gain
+ * Replay_Album_Peak
+ * Cover Art (Front)
+ * Cover Art (Back)
+ */
+
+/*
+ * Read tag data from a Wavpack file.
+ */
+gboolean Wavpack_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
+{
+ if (!filename || !FileTag)
+ return FALSE;
+
+ WavpackContext *wpc;
+ gchar *field, *field2;
+ guint length;
+
+ int open_flags = OPEN_TAGS;
+
+ wpc = WavpackOpenFileInput(filename, NULL, open_flags, 0);
+
+ if ( wpc == NULL ) {
+ return FALSE;
+ }
+
+ /*
+ * Title
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "title", field, MAXLEN);
+
+ if ( length > 0 && FileTag->title == NULL ) {
+ FileTag->title = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Artist
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "artist", field, MAXLEN);
+
+ if ( length > 0 && FileTag->artist == NULL) {
+ FileTag->artist = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Album
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "album", field, MAXLEN);
+
+ if ( length > 0 && FileTag->album == NULL ) {
+ FileTag->album = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Discnumber
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "part", field, MAXLEN);
+
+ if ( length > 0 && FileTag->disc_number == NULL ) {
+ FileTag->disc_number = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Year
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "year", field, MAXLEN);
+
+ if ( length > 0 && FileTag->year == NULL ) {
+ FileTag->year = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Tracknumber + tracktotal
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "track", field, MAXLEN);
+ field2 = g_utf8_strchr(field, -1, '/');
+
+ /* Need to cut off the total tracks if present */
+ if (field2) {
+ *field2 = 0;
+ field2++;
+ }
+
+ if ( field2 && FileTag->track_total == NULL ) {
+ FileTag->track_total = Try_To_Validate_Utf8_String(field2);
+ }
+ if ( length > 0 && FileTag->track == NULL ) {
+ FileTag->track = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Genre
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "genre", field, MAXLEN);
+
+ if ( length > 0 && FileTag->genre == NULL ) {
+ FileTag->genre = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Comment
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "comment", field, MAXLEN);
+
+ if ( length > 0 && FileTag->comment == NULL ) {
+ FileTag->comment = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Composer
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "composer", field, MAXLEN);
+
+ if ( length > 0 && FileTag->composer == NULL ) {
+ FileTag->composer = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Original artist
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "original artist", field, MAXLEN);
+
+ if ( length > 0 && FileTag->orig_artist == NULL ) {
+ FileTag->orig_artist = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Copyright
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "copyright", field, MAXLEN);
+
+ if ( length > 0 && FileTag->copyright == NULL ) {
+ FileTag->copyright = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * URL
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "copyright url", field, MAXLEN);
+
+ if ( length > 0 && FileTag->url == NULL ) {
+ FileTag->url = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ /*
+ * Encoded by
+ */
+ field = g_malloc0(sizeof(char) * MAXLEN);
+ length = WavpackGetTagItem(wpc, "encoded by", field, MAXLEN);
+
+ if ( length > 0 && FileTag->encoded_by == NULL ) {
+ FileTag->encoded_by = Try_To_Validate_Utf8_String(field);
+ }
+
+ free(field);
+
+ WavpackCloseFile(wpc);
+
+ return TRUE;
+}
+
+
+gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
+{
+ if (!ETFile || !ETFile->FileTag)
+ return FALSE;
+
+ WavpackContext *wpc;
+
+ gchar *filename = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value;
+ File_Tag *FileTag = (File_Tag *)ETFile->FileTag->data;
+ gchar *buffer;
+
+ int open_flags = OPEN_EDIT_TAGS;
+
+ wpc = WavpackOpenFileInput(filename, NULL, open_flags, 0);
+
+ if ( wpc == NULL ) {
+ return FALSE;
+ }
+
+ /*
+ * Title
+ */
+ if (FileTag->title && WavpackAppendTagItem(wpc, "title", FileTag->title, strlen(FileTag->title)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Artist
+ */
+ if (FileTag->artist && WavpackAppendTagItem(wpc, "artist", FileTag->artist, strlen(FileTag->artist)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Album
+ */
+ if (FileTag->album && WavpackAppendTagItem(wpc, "album", FileTag->album, strlen(FileTag->album)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Discnumber
+ */
+ if (FileTag->disc_number && WavpackAppendTagItem(wpc, "part", FileTag->disc_number, strlen(FileTag->disc_number)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Year
+ */
+ if (FileTag->year && WavpackAppendTagItem(wpc, "year", FileTag->year, strlen(FileTag->year)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Tracknumber + tracktotal
+ */
+ if (FileTag->track_total) {
+ buffer = g_strdup_printf("%s/%s", FileTag->track, FileTag->track_total);
+ if (FileTag->track && WavpackAppendTagItem(wpc, "track", buffer, strlen(buffer)) == 0) {
+ g_free(buffer);
+ return FALSE;
+ } else {
+ g_free(buffer);
+ }
+ } else {
+ if (FileTag->track && WavpackAppendTagItem(wpc, "track", FileTag->track, strlen(FileTag->track)) == 0) {
+ return FALSE;
+ }
+ }
+
+ /*
+ * Genre
+ */
+ if (FileTag->genre && WavpackAppendTagItem(wpc, "genre", FileTag->genre, strlen(FileTag->genre)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Comment
+ */
+ if (FileTag->comment && WavpackAppendTagItem(wpc, "comment", FileTag->comment, strlen(FileTag->comment)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Composer
+ */
+ if (FileTag->composer && WavpackAppendTagItem(wpc, "composer", FileTag->composer, strlen(FileTag->composer)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Original artist
+ */
+ if (FileTag->orig_artist && WavpackAppendTagItem(wpc, "original artist", FileTag->orig_artist, strlen(FileTag->orig_artist)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Copyright
+ */
+ if (FileTag->copyright && WavpackAppendTagItem(wpc, "copyright", FileTag->copyright, strlen(FileTag->copyright)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * URL
+ */
+ if (FileTag->url && WavpackAppendTagItem(wpc, "copyright url", FileTag->url, strlen(FileTag->url)) == 0) {
+ return FALSE;
+ }
+
+ /*
+ * Encoded by
+ */
+ if (FileTag->encoded_by && WavpackAppendTagItem(wpc, "encoded by", FileTag->encoded_by, strlen(FileTag->encoded_by)) == 0) {
+ return FALSE;
+ }
+
+ WavpackWriteTag(wpc);
+
+ WavpackCloseFile(wpc);
+
+ return TRUE;
+}
+
+
+#endif /* ENABLE_WAVPACK */
diff --git a/src/wavpack_tag.h b/src/wavpack_tag.h
new file mode 100755
index 0000000..0ace45b
--- /dev/null
+++ b/src/wavpack_tag.h
@@ -0,0 +1,42 @@
+/* wavpack_tag.c - 2007/02/15 */
+/*
+ * EasyTAG - Tag editor for many file types
+ * Copyright (C) 2007 Maarten Maathuis (madman2003@gmail.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef __WAVPACK_TAG_H__
+#define __WAVPACK_TAG_H__
+
+
+#include <glib.h>
+#include "et_core.h"
+
+/***************
+ * Declaration *
+ ***************/
+
+#define MAXLEN 1024
+
+/**************
+ * Prototypes *
+ **************/
+gboolean Wavpack_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag);
+gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile);
+
+
+#endif /* __WAVPACK_TAG_H__ */
diff --git a/src/win32/easytag.rc b/src/win32/easytag.rc
new file mode 100755
index 0000000..cd8fd58
--- /dev/null
+++ b/src/win32/easytag.rc
@@ -0,0 +1,4 @@
+#include "resource.h"
+
+EASYTAG_ICON ICON "../pixmaps/easytag.ico"
+
diff --git a/src/win32/resource.h b/src/win32/resource.h
new file mode 100755
index 0000000..4cd30ad
--- /dev/null
+++ b/src/win32/resource.h
@@ -0,0 +1 @@
+#define EASYTAG_ICON 109
diff --git a/src/win32/win32dep.c b/src/win32/win32dep.c
new file mode 100755
index 0000000..a644adc
--- /dev/null
+++ b/src/win32/win32dep.c
@@ -0,0 +1,493 @@
+/*
+ * easytag
+ *
+ * File: win32dep.c
+ * Date: June, 2002
+ * Description: Windows dependant code for Easytag
+ * this code if largely taken from win32 gaim
+ *
+ * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+#include <windows.h>
+#include <io.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <winuser.h>
+#include <shlobj.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/timeb.h>
+
+#include <gtk/gtk.h>
+#include <glib.h>
+#if GLIB_CHECK_VERSION(2,6,0)
+# include <glib/gstdio.h>
+#else
+# define g_fopen fopen
+# define g_unlink unlink
+#endif
+#include <gdk/gdkwin32.h>
+
+#include "resource.h"
+//#include "../log.h"
+
+#include <libintl.h>
+
+#include "win32dep.h"
+
+/*
+ * DEFINES & MACROS
+ */
+#define _(x) gettext(x)
+
+
+/*
+ * DATA STRUCTS
+ */
+
+/* For shfolder.dll */
+typedef HRESULT (CALLBACK* LPFNSHGETFOLDERPATHA)(HWND, int, HANDLE, DWORD, LPSTR);
+typedef HRESULT (CALLBACK* LPFNSHGETFOLDERPATHW)(HWND, int, HANDLE, DWORD, LPWSTR);
+
+typedef enum
+{
+ SHGFP_TYPE_CURRENT = 0, // current value for user, verify it exists
+ SHGFP_TYPE_DEFAULT = 1, // default value, may not exist
+} SHGFP_TYPE;
+
+/*
+ * LOCALS
+ */
+static char app_data_dir[MAX_PATH + 1] = "C:";
+static char install_dir[MAXPATHLEN];
+static char locale_dir[MAXPATHLEN];
+
+static void str_replace_char (gchar *str, gchar in_char, gchar out_char);
+
+/*
+ * GLOBALS
+ */
+HINSTANCE ET_exe_hInstance = 0;
+HINSTANCE ET_dll_hInstance = 0;
+
+/*
+ * PROTOS
+ */
+LPFNSHGETFOLDERPATHA MySHGetFolderPathA = NULL;
+LPFNSHGETFOLDERPATHW MySHGetFolderPathW = NULL;
+
+FARPROC ET_Win32_Find_And_Loadproc (char*, char*);
+char* ET_Win32_Data_Dir (void);
+
+
+/*
+ * PUBLIC CODE
+ */
+
+HINSTANCE ET_Win32_Hinstance (void)
+{
+ return ET_exe_hInstance;
+}
+
+/* Escape windows dir separators. This is needed when paths are saved,
+ and on being read back have their '\' chars used as an escape char.
+ Returns an allocated string which needs to be freed.
+*/
+char* ET_Win32_Escape_Dirsep (char* filename )
+{
+ int sepcount=0;
+ char* ret=NULL;
+ int cnt=0;
+
+ ret = filename;
+ while(*ret)
+ {
+ if(*ret == '\\')
+ sepcount++;
+ ret++;
+ }
+ ret = g_malloc0(strlen(filename) + sepcount + 1);
+ while(*filename)
+ {
+ ret[cnt] = *filename;
+ if(*filename == '\\')
+ ret[++cnt] = '\\';
+ filename++;
+ cnt++;
+ }
+ ret[cnt] = '\0';
+ return ret;
+}
+
+/* this is used by libmp4v2 : what is it doing here you think ? well...search! */
+int gettimeofday (struct timeval *t, void *foo)
+{
+ struct _timeb temp;
+
+ if (t != 0) {
+ _ftime(&temp);
+ t->tv_sec = temp.time; /* seconds since 1-1-1970 */
+ t->tv_usec = temp.millitm * 1000; /* microseconds */
+ }
+ return (0);
+}
+
+
+/* emulate the unix function */
+int mkstemp (char *template)
+{
+ int fd = -1;
+
+ char *str = mktemp(template);
+ if(str != NULL)
+ {
+ fd = open(str, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
+ }
+
+ return fd;
+}
+
+/* Determine whether the specified dll contains the specified procedure.
+ If so, load it (if not already loaded). */
+FARPROC ET_Win32_Find_And_Loadproc ( char* dllname, char* procedure )
+{
+ HMODULE hmod;
+ int did_load=0;
+ FARPROC proc = 0;
+
+ if(!(hmod=GetModuleHandle(dllname)))
+ {
+ //Log_Print(_("DLL '%s' not found. Try loading it..."), dllname);
+ g_printf(_("DLL '%s' not found. Try loading it..."), dllname);
+ g_print("\n");
+ if(!(hmod = LoadLibrary(dllname)))
+ {
+ //Log_Print(_("DLL '%s' could not be loaded"), dllname);
+ g_print(_("DLL '%s' could not be loaded"), dllname);
+ g_print("\n");
+ return NULL;
+ }
+ else
+ did_load = TRUE;
+ }
+
+ if((proc=GetProcAddress(hmod, procedure)))
+ {
+ //Log_Print(_("This version of '%s' contains '%s'"), dllname, procedure);
+ g_print(_("This version of '%s' contains '%s'"), dllname, procedure);
+ g_print("\n");
+ return proc;
+ }
+ else
+ {
+ //Log_Print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+ g_print(_("Function '%s' not found in dll '%s'"), procedure, dllname);
+ g_print("\n");
+ if(did_load)
+ {
+ /* unload dll */
+ FreeLibrary(hmod);
+ }
+ return NULL;
+ }
+}
+
+/* Determine Easytag Paths during Runtime */
+
+char* ET_Win32_Install_Dir (void)
+{
+ HMODULE hmod;
+ char* buf;
+
+ hmod = GetModuleHandle(NULL);
+ if ( hmod == 0 )
+ {
+ buf = g_win32_error_message( GetLastError() );
+ //Log_Print("GetModuleHandle error: %s\n", buf);
+ g_print("GetModuleHandle error: %s\n", buf);
+ g_free(buf);
+ return NULL;
+ }
+ if (GetModuleFileName( hmod, (char*)&install_dir, MAXPATHLEN ) == 0)
+ {
+ buf = g_win32_error_message( GetLastError() );
+ //Log_Print("GetModuleFileName error: %s\n", buf);
+ g_print("GetModuleFileName error: %s\n", buf);
+ g_free(buf);
+ return NULL;
+ }
+ buf = g_path_get_dirname( install_dir );
+ strcpy( (char*)&install_dir, buf );
+ g_free( buf );
+
+ return (char*)&install_dir;
+}
+
+
+char* ET_Win32_Locale_Dir (void)
+{
+ strcpy(locale_dir, ET_Win32_Install_Dir());
+ g_strlcat(locale_dir, G_DIR_SEPARATOR_S "locale", sizeof(locale_dir));
+ return (char*)&locale_dir;
+}
+
+char* ET_Win32_Data_Dir (void)
+{
+ return (char*)&app_data_dir;
+}
+
+
+/* Miscellaneous */
+
+gboolean ET_Win32_Read_Reg_String (HKEY key, char* sub_key, char* val_name, LPBYTE data, LPDWORD data_len)
+{
+ HKEY hkey;
+ gboolean ret = FALSE;
+
+ if(ERROR_SUCCESS == RegOpenKeyEx(key, sub_key, 0, KEY_QUERY_VALUE, &hkey))
+ {
+ if (ERROR_SUCCESS == RegQueryValueEx(hkey, val_name, 0, NULL, data, data_len))
+ ret = TRUE;
+ RegCloseKey(key);
+ }
+ return ret;
+}
+
+/* find a default player executable */
+char* ET_Win32_Get_Audio_File_Player (void)
+{
+ DWORD len = 256;
+ char key_value[256];
+
+ char *player;
+
+ if(ET_Win32_Read_Reg_String(HKEY_CURRENT_USER, "Software\\foobar2000", "InstallDir", key_value, &len))
+ {
+ player = g_strconcat(key_value, "\\foobar2000.exe", NULL);
+ }
+ else if(ET_Win32_Read_Reg_String(HKEY_CURRENT_USER, "Software\\Winamp", "", key_value, &len))
+ {
+ player = g_strconcat(key_value, "\\winamp.exe", NULL);
+ }
+ else
+ {
+ player = g_strdup("");
+ }
+
+ //Log_Print(_("Audio player: '%s'"), player);
+ g_print(_("Audio player: '%s'"), player);
+ g_print("\n");
+
+ return player;
+}
+
+
+void ET_Win32_Notify_Uri (const char *uri)
+{
+ SHELLEXECUTEINFO sinfo;
+
+ memset(&sinfo, 0, sizeof(sinfo));
+ sinfo.cbSize = sizeof(sinfo);
+ sinfo.fMask = SEE_MASK_CLASSNAME;
+ sinfo.lpVerb = "open";
+ sinfo.lpFile = uri;
+ sinfo.nShow = SW_SHOWNORMAL;
+ sinfo.lpClass = "http";
+
+ /* We'll allow whatever URI schemes are supported by the
+ default http browser.
+ */
+ if(!ShellExecuteEx(&sinfo))
+ //Log_Print("Error opening URI: %s error: %d\n", uri, (int)sinfo.hInstApp);
+ g_print("Error opening URI: %s error: %d\n", uri, (int)sinfo.hInstApp);
+}
+
+
+
+void str_replace_char (gchar *str, gchar in_char, gchar out_char)
+{
+ while(*str)
+ {
+ if(*str == in_char)
+ *str = out_char;
+ str++;
+ }
+}
+
+
+
+/* Remove trailing '/' if any */
+void ET_Win32_Path_Remove_Trailing_Slash (gchar *path)
+{
+ int path_len = strlen(path);
+
+ if(path_len > 3 && path[path_len - 1] == '/')
+ {
+ path[path_len - 1] = '\0';
+ }
+}
+
+/* Remove trailing '\' if any, but not when 'C:\' */
+void ET_Win32_Path_Remove_Trailing_Backslash (gchar *path)
+{
+ int path_len = strlen(path);
+
+ if(path_len > 3 && path[path_len - 1] == '\\')
+ {
+ path[path_len - 1] = '\0';
+ }
+}
+
+void ET_Win32_Path_Replace_Backslashes (gchar *path)
+{
+ str_replace_char(path, '\\', '/');
+}
+
+void ET_Win32_Path_Replace_Slashes (gchar *path)
+{
+ str_replace_char(path, '/', '\\');
+}
+
+void ET_Win32_Init (HINSTANCE hint)
+{
+ WORD wVersionRequested;
+ WSADATA wsaData;
+ char *newenv;
+
+ ET_exe_hInstance = hint;
+
+ /* Winsock init */
+ wVersionRequested = MAKEWORD( 2, 2 );
+ WSAStartup( wVersionRequested, &wsaData );
+
+ /* Confirm that the winsock DLL supports 2.2 */
+ /* Note that if the DLL supports versions greater than
+ 2.2 in addition to 2.2, it will still return 2.2 in
+ wVersion since that is the version we requested. */
+ if ( LOBYTE( wsaData.wVersion ) != 2
+ || HIBYTE( wsaData.wVersion ) != 2 )
+ {
+ g_print("Could not find a usable WinSock DLL. Oh well.\n");
+ WSACleanup();
+ }
+
+ /* Set app data dir, used by easytag_home_dir */
+ newenv = (char*)g_getenv("EASYTAGHOME");
+ if(!newenv)
+ {
+#if GLIB_CHECK_VERSION(2,6,0)
+ if ((MySHGetFolderPathW = (LPFNSHGETFOLDERPATHW) ET_Win32_Find_And_Loadproc("shfolder.dll", "SHGetFolderPathW")))
+ {
+ wchar_t utf_16_dir[MAX_PATH +1];
+ char *temp;
+ MySHGetFolderPathW(NULL, CSIDL_APPDATA, NULL,
+ SHGFP_TYPE_CURRENT, utf_16_dir);
+ temp = g_utf16_to_utf8(utf_16_dir, -1, NULL, NULL, NULL);
+ g_strlcpy(app_data_dir, temp, sizeof(app_data_dir));
+ g_free(temp);
+ } else if ((MySHGetFolderPathA = (LPFNSHGETFOLDERPATHA) ET_Win32_Find_And_Loadproc("shfolder.dll", "SHGetFolderPathA")))
+ {
+ char locale_dir[MAX_PATH + 1];
+ char *temp;
+ MySHGetFolderPathA(NULL, CSIDL_APPDATA, NULL,
+ SHGFP_TYPE_CURRENT, locale_dir);
+ temp = g_locale_to_utf8(locale_dir, -1, NULL, NULL, NULL);
+ g_strlcpy(app_data_dir, temp, sizeof(app_data_dir));
+ g_free(temp);
+ }
+#else
+ if ((MySHGetFolderPathA = (LPFNSHGETFOLDERPATHA) ET_Win32_Find_And_Loadproc("shfolder.dll", "SHGetFolderPathA")))
+ {
+ MySHGetFolderPathA(NULL, CSIDL_APPDATA, NULL,
+ SHGFP_TYPE_CURRENT, app_data_dir);
+ }
+#endif
+ else
+ {
+ strcpy(app_data_dir, "C:");
+ }
+ }
+ else
+ {
+ g_strlcpy(app_data_dir, newenv, sizeof(app_data_dir));
+ }
+
+ //ET_Win32_Path_Replace_Backslashes(app_data_dir);
+
+ //Log_Print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+ g_print(_("EasyTAG settings dir: '%s'"), app_data_dir);
+ g_print("\n");
+
+ newenv = g_strdup_printf("HOME=%s", app_data_dir);
+
+ if (putenv(newenv)<0)
+ g_print("putenv failed\n");
+ g_free(newenv);
+
+}
+
+/* Windows Cleanup */
+
+void ET_Win32_Cleanup (void)
+{
+ /* winsock cleanup */
+ WSACleanup();
+}
+
+/* DLL initializer */
+BOOL WINAPI DllMain ( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
+{
+ ET_dll_hInstance = hinstDLL;
+ return TRUE;
+}
+
+
+/*
+ * Copyright (C) 2002 Manuel Novoa III
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#include <string.h>
+#include <ctype.h>
+
+char *strcasestr(const char *s1, const char *s2)
+{
+ register const char *s = s1;
+ register const char *p = s2;
+
+ do {
+ if (!*p) {
+ return (char *) s1;;
+ }
+ if ((*p == *s)
+ || (tolower(*((unsigned char *)p)) == tolower(*((unsigned char *)s)))
+ ) {
+ ++p;
+ ++s;
+ } else {
+ p = s2;
+ if (!*s) {
+ return NULL;
+ }
+ s = ++s1;
+ }
+ } while (1);
+} \ No newline at end of file
diff --git a/src/win32/win32dep.h b/src/win32/win32dep.h
new file mode 100755
index 0000000..7e5e1ae
--- /dev/null
+++ b/src/win32/win32dep.h
@@ -0,0 +1,84 @@
+/*
+ * easytag
+ *
+ * File: win32dep.h
+ *
+ * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+#ifndef _WIN32DEP_H_
+#define _WIN32DEP_H_
+
+
+#include <winsock2.h>
+#include <process.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkevents.h>
+
+#define lstat stat
+#define mkdir(a,b) mkdir(a)
+#define chown(a,b,c)
+#define chmod(a,b)
+
+//#define strcasestr(haystack, needle) strstr(haystack, needle)
+char *strcasestr(const char *s1, const char *s2);
+
+
+
+/*
+ * PROTOS
+ */
+
+/**
+ ** win32dep.c
+ **/
+/* Windows helper functions */
+extern int mkstemp(char *template);
+
+extern HINSTANCE ET_Win32_Hinstance (void);
+extern gboolean ET_Win32_Read_Reg_String (HKEY key, char* sub_key, char* val_name, LPBYTE data, LPDWORD data_len);
+extern char* ET_Win32_Escape_Dirsep (char*);
+
+/* Determine ET paths */
+extern char* ET_Win32_Install_Dir (void);
+extern char* ET_Win32_Locale_Dir (void);
+extern char* ET_Win32_Data_Dir (void);
+
+/* Misc */
+extern char * ET_Win32_Get_Audio_File_Player (void);
+extern void ET_Win32_Notify_Uri (const char *uri);
+
+/* init / cleanup */
+extern void ET_Win32_Init (HINSTANCE);
+extern void ET_Win32_Cleanup (void);
+
+extern void ET_Win32_Path_Remove_Trailing_Slash (gchar *path);
+extern void ET_Win32_Path_Remove_Trailing_Backslash (gchar *path);
+extern void ET_Win32_Path_Replace_Backslashes (gchar *path);
+extern void ET_Win32_Path_Replace_Slashes (gchar *path);
+
+/*
+ * MACROS
+ */
+
+/*
+ * ET specific
+ */
+#define DATADIR ET_Win32_Install_Dir()
+#define LOCALE ET_Win32_Locale_Dir()
+
+#endif /* _WIN32DEP_H_ */
diff --git a/src/win32/win_easytag.c b/src/win32/win_easytag.c
new file mode 100755
index 0000000..cd6628d
--- /dev/null
+++ b/src/win32/win_easytag.c
@@ -0,0 +1,557 @@
+/*
+ * Code taken from GAIM 2.0.0b5
+ *
+ */
+/*
+ * win_easytag.c
+ *
+ * Date: June, 2002
+ * Description: Entry point for win32 easytag, and various win32 dependant
+ * routines.
+ *
+ * EasyTAG is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x501
+#endif
+#include <windows.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#define WIN32_PROXY_REGKEY "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
+
+/* These will hopefully be in the win32api next time it is updated - at which point, we'll remove them */
+#ifndef LANG_PERSIAN
+#define LANG_PERSIAN 0x29
+#endif
+#ifndef LANG_BOSNIAN
+#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
+#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
+#endif
+#ifndef SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN
+#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
+#endif
+#ifndef LANG_XHOSA
+#define LANG_XHOSA 0x34
+#endif
+
+
+typedef int (CALLBACK* LPFNEASYTAGMAIN)(HINSTANCE, int, char**);
+typedef void (CALLBACK* LPFNSETDLLDIRECTORY)(LPCTSTR);
+typedef BOOL (CALLBACK* LPFNATTACHCONSOLE)(DWORD);
+
+/*
+ * PROTOTYPES
+ */
+static LPFNEASYTAGMAIN easytag_main = NULL;
+static LPFNSETDLLDIRECTORY MySetDllDirectory = NULL;
+
+
+static const char *get_win32_error_message(DWORD err) {
+ static char err_msg[512];
+
+ FormatMessage(
+ FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL, err,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &err_msg, sizeof(err_msg), NULL);
+
+ return err_msg;
+}
+
+static BOOL read_reg_string(HKEY key, char* sub_key, char* val_name, LPBYTE data, LPDWORD data_len) {
+ HKEY hkey;
+ BOOL ret = FALSE;
+ LONG retv;
+
+ if (ERROR_SUCCESS == (retv = RegOpenKeyEx(key, sub_key, 0,
+ KEY_QUERY_VALUE, &hkey))) {
+ if (ERROR_SUCCESS == (retv = RegQueryValueEx(hkey, val_name,
+ NULL, NULL, data, data_len)))
+ ret = TRUE;
+ else {
+ const char *err_msg = get_win32_error_message(retv);
+
+ printf("Could not read reg key '%s' subkey '%s' value: '%s'. Message: (%ld) %s\n",
+ ((key == HKEY_LOCAL_MACHINE) ? "HKLM" :
+ (key == HKEY_CURRENT_USER) ? "HKCU" :
+ "???"),
+ sub_key, val_name, retv, err_msg);
+ }
+ RegCloseKey(hkey);
+ }
+ else {
+ TCHAR szBuf[80];
+
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, retv, 0,
+ (LPTSTR) &szBuf, sizeof(szBuf), NULL);
+ printf("Could not open reg subkey: '%s'. Error: (%ld) %s\n",
+ sub_key, retv, szBuf);
+ }
+
+ return ret;
+}
+
+static void dll_prep() {
+ char path[MAX_PATH + 1];
+ HMODULE hmod;
+ HKEY hkey;
+ char gtkpath[MAX_PATH + 1];
+ DWORD plen;
+
+ plen = sizeof(gtkpath);
+ hkey = HKEY_CURRENT_USER;
+ if (!read_reg_string(hkey, "SOFTWARE\\GTK\\2.0", "Path",
+ (LPBYTE) &gtkpath, &plen)) {
+ hkey = HKEY_LOCAL_MACHINE;
+ if (!read_reg_string(hkey, "SOFTWARE\\GTK\\2.0", "Path",
+ (LPBYTE) &gtkpath, &plen)) {
+ printf("GTK+ Path Registry Key not found. "
+ "Assuming GTK+ is in the PATH.\n");
+ return;
+ }
+ }
+
+ /* this value is replaced during a successful RegQueryValueEx() */
+ plen = sizeof(path);
+ /* Determine GTK+ dll path .. */
+ if (!read_reg_string(hkey, "SOFTWARE\\GTK\\2.0", "DllPath",
+ (LPBYTE) &path, &plen)) {
+ strcpy(path, gtkpath);
+ strcat(path, "\\bin");
+ }
+
+ printf("GTK+ path found: %s\n", path);
+
+ if ((hmod = GetModuleHandle("kernel32.dll"))) {
+ MySetDllDirectory = (LPFNSETDLLDIRECTORY) GetProcAddress(
+ hmod, "SetDllDirectoryA");
+ if (!MySetDllDirectory)
+ printf("SetDllDirectory not supported\n");
+ } else
+ printf("Error getting kernel32.dll module handle\n");
+
+ /* For Windows XP SP1+ / Server 2003 we use SetDllDirectory to avoid dll hell */
+ if (MySetDllDirectory) {
+ printf("Using SetDllDirectory\n");
+ MySetDllDirectory(path);
+ }
+
+ /* For the rest, we set the current directory and make sure
+ * SafeDllSearch is set to 0 where needed. */
+ else {
+ OSVERSIONINFO osinfo;
+
+ printf("Setting current directory to GTK+ dll directory\n");
+ SetCurrentDirectory(path);
+ /* For Windows 2000 (SP3+) / WinXP (No SP):
+ * If SafeDllSearchMode is set to 1, Windows system directories are
+ * searched for dlls before the current directory. Therefore we set it
+ * to 0.
+ */
+ osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&osinfo);
+ if ((osinfo.dwMajorVersion == 5 &&
+ osinfo.dwMinorVersion == 0 &&
+ strcmp(osinfo.szCSDVersion, "Service Pack 3") >= 0) ||
+ (osinfo.dwMajorVersion == 5 &&
+ osinfo.dwMinorVersion == 1 &&
+ strcmp(osinfo.szCSDVersion, "") >= 0)
+ ) {
+ DWORD regval = 1;
+ DWORD reglen = sizeof(DWORD);
+
+ printf("Using Win2k (SP3+) / WinXP (No SP)... Checking SafeDllSearch\n");
+ read_reg_string(HKEY_LOCAL_MACHINE,
+ "System\\CurrentControlSet\\Control\\Session Manager",
+ "SafeDllSearchMode",
+ (LPBYTE) &regval,
+ &reglen);
+
+ if (regval != 0) {
+ printf("Trying to set SafeDllSearchMode to 0\n");
+ regval = 0;
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ "System\\CurrentControlSet\\Control\\Session Manager",
+ 0, KEY_SET_VALUE, &hkey
+ ) == ERROR_SUCCESS) {
+ if (RegSetValueEx(hkey,
+ "SafeDllSearchMode", 0,
+ REG_DWORD, (LPBYTE) &regval,
+ sizeof(DWORD)
+ ) != ERROR_SUCCESS)
+ printf("Error writing SafeDllSearchMode. Error: %u\n",
+ (UINT) GetLastError());
+ RegCloseKey(hkey);
+ } else
+ printf("Error opening Session Manager key for writing. Error: %u\n",
+ (UINT) GetLastError());
+ } else
+ printf("SafeDllSearchMode is set to 0\n");
+ }/*end else*/
+ }
+}
+
+static char* lcid_to_posix(LCID lcid) {
+ char *posix = NULL;
+ int lang_id = PRIMARYLANGID(lcid);
+ int sub_id = SUBLANGID(lcid);
+
+ switch (lang_id) {
+ case LANG_ARABIC: posix = "ar"; break;
+ case LANG_AZERI: posix = "az"; break;
+ case LANG_BENGALI: posix = "bn"; break;
+ case LANG_BULGARIAN: posix = "bg"; break;
+ case LANG_CATALAN: posix = "ca"; break;
+ case LANG_CHINESE:
+ switch (sub_id) {
+ case SUBLANG_CHINESE_SIMPLIFIED:
+ posix = "zh_CN"; break;
+ case SUBLANG_CHINESE_TRADITIONAL:
+ posix = "zh_TW"; break;
+ default:
+ posix = "zh"; break;
+ }
+ break;
+ case LANG_CZECH: posix = "cs"; break;
+ case LANG_DANISH: posix = "da"; break;
+ case LANG_ESTONIAN: posix = "et"; break;
+ case LANG_PERSIAN: posix = "fa"; break;
+ case LANG_GERMAN: posix = "de"; break;
+ case LANG_GREEK: posix = "el"; break;
+ case LANG_ENGLISH:
+ switch (sub_id) {
+ case SUBLANG_ENGLISH_UK:
+ posix = "en_GB"; break;
+ case SUBLANG_ENGLISH_AUS:
+ posix = "en_AU"; break;
+ case SUBLANG_ENGLISH_CAN:
+ posix = "en_CA"; break;
+ default:
+ posix = "en"; break;
+ }
+ break;
+ case LANG_SPANISH: posix = "es"; break;
+ case LANG_BASQUE: posix = "eu"; break;
+ case LANG_FINNISH: posix = "fi"; break;
+ case LANG_FRENCH: posix = "fr"; break;
+ case LANG_GALICIAN: posix = "gl"; break;
+ case LANG_GUJARATI: posix = "gu"; break;
+ case LANG_HEBREW: posix = "he"; break;
+ case LANG_HINDI: posix = "hi"; break;
+ case LANG_HUNGARIAN: posix = "hu"; break;
+ case LANG_ICELANDIC: break;
+ case LANG_ITALIAN: posix = "it"; break;
+ case LANG_JAPANESE: posix = "ja"; break;
+ case LANG_GEORGIAN: posix = "ka"; break;
+ case LANG_KOREAN: posix = "ko"; break;
+ case LANG_LITHUANIAN: posix = "lt"; break;
+ case LANG_MACEDONIAN: posix = "mk"; break;
+ case LANG_DUTCH: posix = "nl"; break;
+ case LANG_NEPALI: posix = "ne"; break;
+ case LANG_NORWEGIAN:
+ switch (sub_id) {
+ case SUBLANG_NORWEGIAN_BOKMAL:
+ posix = "nb"; break;
+ case SUBLANG_NORWEGIAN_NYNORSK:
+ posix = "nn"; break;
+ }
+ break;
+ case LANG_PUNJABI: posix = "pa"; break;
+ case LANG_POLISH: posix = "pl"; break;
+ case LANG_PORTUGUESE:
+ switch (sub_id) {
+ case SUBLANG_PORTUGUESE_BRAZILIAN:
+ posix = "pt_BR"; break;
+ default:
+ posix = "pt"; break;
+ }
+ break;
+ case LANG_ROMANIAN: posix = "ro"; break;
+ case LANG_RUSSIAN: posix = "ru"; break;
+ /* LANG_CROATIAN == LANG_SERBIAN == LANG_BOSNIAN */
+ case LANG_SERBIAN:
+ switch (sub_id) {
+ case SUBLANG_SERBIAN_LATIN:
+ posix = "sr@Latn"; break;
+ case SUBLANG_SERBIAN_CYRILLIC:
+ posix = "sr"; break;
+ case SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC:
+ case SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN:
+ posix = "bs"; break;
+ case SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN:
+ posix = "hr"; break;
+ }
+ break;
+ case LANG_SLOVAK: posix = "sk"; break;
+ case LANG_SLOVENIAN: posix = "sl"; break;
+ case LANG_ALBANIAN: posix = "sq"; break;
+ case LANG_SWEDISH: posix = "sv"; break;
+ case LANG_TAMIL: posix = "ta"; break;
+ case LANG_TELUGU: posix = "te"; break;
+ case LANG_THAI: posix = "th"; break;
+ case LANG_TURKISH: posix = "tr"; break;
+ case LANG_UKRAINIAN: posix = "uk"; break;
+ case LANG_VIETNAMESE: posix = "vi"; break;
+ case LANG_XHOSA: posix = "xh"; break;
+ case LANG_URDU: break;
+ case LANG_INDONESIAN: break;
+ case LANG_BELARUSIAN: break;
+ case LANG_LATVIAN: break;
+ case LANG_ARMENIAN: break;
+ case LANG_AFRIKAANS: break;
+ case LANG_FAEROESE: break;
+ case LANG_MALAY: break;
+ case LANG_KAZAK: break;
+ case LANG_KYRGYZ: break;
+ case LANG_SWAHILI: break;
+ case LANG_UZBEK: break;
+ case LANG_TATAR: break;
+ case LANG_ORIYA: break;
+ case LANG_KANNADA: break;
+ case LANG_MALAYALAM: break;
+ case LANG_ASSAMESE: break;
+ case LANG_MARATHI: break;
+ case LANG_SANSKRIT: break;
+ case LANG_MONGOLIAN: break;
+ case LANG_KONKANI: break;
+ case LANG_MANIPURI: break;
+ case LANG_SINDHI: break;
+ case LANG_SYRIAC: break;
+ case LANG_KASHMIRI: break;
+ case LANG_DIVEHI: break;
+ }
+
+ /* Deal with exceptions */
+ if (posix == NULL) {
+ switch (lcid) {
+ case 0x0455: posix = "my_MM"; break; /* Myanmar (Burmese) */
+ case 9999: posix = "ku"; break; /* Kurdish (from NSIS) */
+ }
+ }
+
+ return posix;
+}
+
+/* Determine and set Eastytag locale as follows (in order of priority):
+ - Check EASYTAGLANG env var
+ - Check NSIS Installer Language reg value
+ - Use default user locale
+*/
+static const char *get_locale() {
+ const char *locale = NULL;
+ LCID lcid;
+ char data[10];
+ DWORD datalen = 10;
+
+ /* Check if user set EASYTAGLANG env var */
+ if ((locale = getenv("EASYTAGLANG"))) {
+ printf("Variable EASYTAGLANG defined: '%s'\n",locale);
+ return locale;
+ }else
+ printf("Variable EASYTAGLANG not defined\n");
+
+ if (read_reg_string(HKEY_CURRENT_USER, "SOFTWARE\\easytag",
+ "Installer Language", (LPBYTE) &data, &datalen)) {
+ if ((locale = lcid_to_posix(atoi(data))))
+ return locale;
+ }
+
+ lcid = GetUserDefaultLCID();
+ if ((locale = lcid_to_posix(lcid)))
+ return locale;
+
+ return "en";
+}
+
+static void set_locale() {
+ const char *locale = NULL;
+ char envstr[25];
+
+ locale = get_locale();
+
+ snprintf(envstr, 25, "LANG=%s", locale);
+ printf("Setting locale: %s\n", envstr);
+ putenv(envstr);
+}
+
+#if 0
+#define WM_FOCUS_REQUEST (WM_APP + 13)
+
+static BOOL set_running() {
+ HANDLE h;
+
+ if ((h = CreateMutex(NULL, FALSE, "easytag_is_running"))) {
+ if (GetLastError() == ERROR_ALREADY_EXISTS) {
+ HWND msg_win;
+
+ if((msg_win = FindWindow(TEXT("WineasytagMsgWinCls"), NULL)))
+ if(SendMessage(msg_win, WM_FOCUS_REQUEST, (WPARAM) NULL, (LPARAM) NULL))
+ return FALSE;
+
+ /* If we get here, the focus request wasn't successful */
+
+ MessageBox(NULL,
+ "An instance of EasyTAG is already running",
+ NULL, MB_OK | MB_TOPMOST);
+
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+#endif
+
+static void set_proxy() {
+ DWORD regval = 1;
+ DWORD reglen = sizeof(DWORD);
+
+ /* If the proxy server environment variables are already set,
+ * we shouldn't override them */
+ if (getenv("HTTP_PROXY") || getenv("http_proxy") || getenv("HTTPPROXY"))
+ return;
+
+ if (read_reg_string(HKEY_CURRENT_USER, WIN32_PROXY_REGKEY,
+ "ProxyEnable",
+ (LPBYTE) &regval, &reglen) && (regval & 1)) {
+ char proxy_server[2048];
+ char *c = NULL;
+ reglen = sizeof(proxy_server);
+
+ if (!read_reg_string(HKEY_CURRENT_USER, WIN32_PROXY_REGKEY,
+ "ProxyServer", (LPBYTE) &proxy_server, &reglen))
+ return;
+
+ if ((reglen > strlen("http="))
+ && (c = strstr(proxy_server, "http="))) {
+ char *d;
+ c += strlen("http=");
+ d = strchr(c, ';');
+ if (d) {
+ *d = '\0';
+ }
+ /* c now points the proxy server (and port) */
+ }
+
+ if (c) {
+ const char envstr_prefix[] = "HTTP_PROXY=http://";
+ char envstr[sizeof(envstr_prefix) + strlen(c) + 1];
+ snprintf(envstr, sizeof(envstr), "%s%s",
+ envstr_prefix, c);
+ printf("Setting HTTP Proxy: %s\n", envstr);
+ putenv(envstr);
+ }
+ }
+
+}
+
+#ifdef __GNUC__
+# ifndef _stdcall
+# define _stdcall __attribute__((stdcall))
+# endif
+#endif
+
+int _stdcall
+WinMain (struct HINSTANCE__ *hInstance, struct HINSTANCE__ *hPrevInstance,
+ char *lpszCmdLine, int nCmdShow) {
+ char errbuf[512];
+ HMODULE hmod;
+
+ /* If debug or help or version flag used, create console for output */
+ if (strstr(lpszCmdLine, "-d") || strstr(lpszCmdLine, "-h") || strstr(lpszCmdLine, "-v")) {
+ /* If stdout hasn't been redirected to a file, alloc a console
+ * (_istty() doesn't work for stuff using the GUI subsystem) */
+ if (_fileno(stdout) == -1) {
+ LPFNATTACHCONSOLE MyAttachConsole = NULL;
+ if ((hmod = GetModuleHandle("kernel32.dll"))) {
+ MyAttachConsole =
+ (LPFNATTACHCONSOLE)
+ GetProcAddress(hmod, "AttachConsole");
+ }
+ if ((MyAttachConsole && MyAttachConsole(ATTACH_PARENT_PROCESS))
+ || AllocConsole()) {
+ freopen("CONOUT$", "w", stdout);
+ freopen("CONOUT$", "w", stderr);
+ }
+ }
+ }
+#if 0
+ /* Load exception handler if we have it */
+ if (GetModuleFileName(NULL, gaimdir, MAX_PATH) != 0) {
+ char *tmp = gaimdir;
+ char *prev = NULL;
+
+ while ((tmp = strchr(tmp, '\\'))) {
+ prev = tmp;
+ tmp++;
+ }
+
+ if (prev) {
+ prev[0] = '\0';
+ strcat(gaimdir, "\\exchndl.dll");
+ if (LoadLibrary(gaimdir))
+ printf("Loaded exchndl.dll\n");
+ }
+ } else {
+ DWORD dw = GetLastError();
+ const char *err_msg = get_win32_error_message(dw);
+ snprintf(errbuf, 512,
+ "Error getting module filename. Error: (%u) %s",
+ (UINT) dw, err_msg);
+ printf(errbuf);
+ MessageBox(NULL, errbuf, NULL, MB_OK | MB_TOPMOST);
+ }
+#endif
+
+ dll_prep();
+
+ set_locale();
+ /* If help or version flag used, do not check Mutex */
+ //if (!strstr(lpszCmdLine, "-h") && !strstr(lpszCmdLine, "-v"))
+ // if (!getenv("GAIM_MULTI_INST") && !wgaim_set_running())
+ // return 0;
+
+ set_proxy();
+
+ /* Now we are ready for EasyTag .. */
+ if ((hmod = LoadLibrary("easytag.dll"))) {
+ easytag_main = (LPFNEASYTAGMAIN) GetProcAddress(hmod, "easytag_main");
+ }
+
+ if (!easytag_main) {
+ DWORD dw = GetLastError();
+ BOOL mod_not_found = (dw == ERROR_MOD_NOT_FOUND || dw == ERROR_DLL_NOT_FOUND);
+ const char *err_msg = get_win32_error_message(dw);
+
+ snprintf(errbuf, 512, "Error loading 'easytag.dll'. Error: (%u) %s%s%s",
+ (UINT) dw, err_msg,
+ mod_not_found ? "\n" : "",
+ mod_not_found ? "This probably means that GTK+ can't be found." : "");
+ printf(errbuf);
+ MessageBox(NULL, errbuf, TEXT("Error"), MB_OK | MB_TOPMOST);
+
+ return 0;
+ }
+
+ return easytag_main (hInstance, __argc, __argv);
+}