KnowHow

1
Mrz
2005

viewcvs 1.0-dev-r6 on windows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DESCRIPTION

This file contains special instructions for setting up ViewCVS on Windows. It
will take you through a basic installation and tell you how to set up optional
features like code colorizing and the MySQL commit database.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
REQUIREMENTS

ViewCVS requires the Python interpreter which you can download from

  http://python.org/

and the Python for Windows Extensions which are at

  http://starship.python.net/crew/mhammond/win32/

ViewCVS also requires that the CVSNT client (cvs.exe) OR the RCS tools
(rlog.exe, rcsdiff.exe, and co.exe) be installed on your computer. CVSNT is
available from

  http://www.cvsnt.org/

and RCS can be obtained from:

  http://www.cs.purdue.edu/homes/trinkle/RCS/

Once you've got Python and CVSNT or RCS installed, you can test out ViewCVS
before you install it by running:

  python standalone.py -r <PATH_TO_REPOSITORY>

The standalone server has a number of features (including a GUI interface)
which you can find out about by running

  python standalone.py --help

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BASIC INSTALLATION

Run the ViewCVS install script with

  python viewcvs-install

The script will copy the source files into an installation directory that you
specify, store some path information, and compile the ViewCVS library files
into Python bytecode.

After the installation is finished you will need to edit the viewcvs.conf file
in the folder you installed to. The comments in that file tell you exactly what
to do.

With the config file set up you should be able to double-click standalone.py
and access your repository with a web browser.

See the sections below for information on setting up optional features and
troubleshooting. From here on <PYTHON_DIR> will stand for the Python root
directory (usually something like C:\Python22) and <VIEWCVS_INSTALL_DIR> will
represent the directory where ViewCVS has been installed to (default is
C:\Program Files\viewcvs-1.0-dev).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SERVER CONFIGURATION

If you want to make ViewCVS available to a network (rather than using it on a
standalone machine), you will need to configure a web server to host it. This
section includes instructions for setting up ViewCVS on two commonly used
Windows web servers, IIS and Apache.

With IIS, you can run ViewCVS in CGI mode or ASP mode (or both modes). ASP mode
gives better performance (faster page loads), but is harder to set up and may
be less stable. CGI mode is stable and easy to set up but slower.

On Apache, you can use CGI mode or Mod_Python mode or both modes at once.
Mod_Python mode is faster than CGI mode.

CGI Mode On IIS

  1) Copy viewcvs.cgi and query.cgi from <VIEWCVS_INSTALL_DIR>\www\cgi to a
  folder that is accessible through your web server.

  2) Start up the IIS "Internet Services Manager" and right click a virtual
  server or virtual directory that contains the files you just copied. Choose
  "Properties" from the context menu that appears.

  3) On the properties dialog that appears, navigate to [Home | Virtual]
  Directory -> Application Settings -> Configuration. This will bring up
  another dialog box called "Application Configuration".

  4) On the "App Mappings" tab choose "Add". Fill in the following information

                 Executable:  <PYTHON_DIR>\python.exe "%s"
                  Extension:  cgi
              Script Engine:  checked
     Check that file exists:  unchecked

  That is all. Assuming you've set up viewcvs.conf to point to your
  repositories, the CGI pages should run. See the Troubleshooting section below
  if there are any problems.

ASP Mode On IIS

  In order to run ViewCVS with ASP, you will need to enable Python ActiveX
  scripting and to install the included Aspfool ISAPI filter on whatever
  virtual server is being used to serve the viewcvs pages. Step by step
  instructions follow below. Aspfool is located in the windows\aspfool folder.

  To set up ASP mode, follow these steps:

  1) Run <PYTHON_DIR>\Lib\site-packages\win32comext\axscript\client\pyscript.py
  to register Python as an ASP scripting language. (More documentation on this
  is at http://www.python.org/windows/win32com/ActiveXScripting.html)

  2) Copy the viewcvs.asp and query.asp files from
  <VIEWCVS_INSTALL_DIR>\www\asp to a folder that is accessible through your web
  server.

  3) Start up the IIS "Internet Services Manager" and right click on the
  virtual server that contains the files you just copied. Choose "Properties"
  from the context menu that appears.

  4) On the properties dialog that appears, click the "ISAPI Filters" tab.
  Click the "add" button and enter the following information:

     Filter Name:  aspfool
      Executable:  aspfool.dll

  After you save these changes, the ViewCVS ASP pages should begin to work.

CGI Mode on Apache

  Follow the instructions under "Apache Configuration" in the ViewCVS INSTALL
  file.

Mod_Python Mode on Apache

  There are probably ten thousand different ways to set up Apache, mod_python,
  and ViewCVS together. Here are some instructions that work for me using
  Mod_Python 3.0.3 and Apache 2.0.46. If any Apache gurus want to contribute
  better instructions, I'd be happy to include them here.

  1) Run the win32 mod_python installer from www.modpython.org.

  2) Add the following line to the "Global Environment" section of httpd.conf

     LoadModule python_module modules/mod_python.so

  3) Copy viewcvs.py, query.py, and .htaccess from
  <VIEWCVS_INSTALL_DIR>\www\mod_python to a folder being served by apache. Make
  sure overrides are allowed in this folder. The relevant parent directory in
  httpd.conf should have "AllowOverride All" set, or at least "AllowOverride
  FileInfo Options".

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ENSCRIPT HIGHLIGHTING

To use enscript, you'll have to install the enscript, libintl, libiconv, and
sed packages from the gnuwin32 project (http://gnuwin32.sourceforge.net/).
Detailed instructions are on their site, but here is the basic procedure.

1) Extract all packages to a folder on your hard drive, for example c:\gnuwin32

2) Add "c:\gnuwin32\bin" to the system "PATH" environment variable. If ViewCVS
is running as part of a system service like IIS you will need to reboot the
computer so it is able to see the value. See the "Troubleshooting" section
below for specific information on when a reboot is neccessary.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BONSAI-LIKE CHECKIN DATABASE

To use the checkin database, you'll need to install MySQL and the MySQL-Python
interface. MySQL can be downloaded from www.mysql.com. The MySql-Python adapter
is available from http://sf.net/projects/mysql-python/. Make sure to grab the
the latest version from the "Files" section. (The "Home Page" link takes you to
an outdated page that only links to very old versions.) Both packages come with
GUI installers. Once you have MySQL running and set up with a username and
password, follow these instructions to set up ViewCVS.

1) Open a command prompt and type these commands:

   cd /d <VIEWCVS_INSTALL_DIR>
   python make-database

The script that comes up will prompt you for the MySQL username and password
(you should have created these during the MySQL installation), and the name of
the database to create. The default database name "ViewCVS" should be fine
unless for some reason a database with that name already exists.

2) Enter the username, password, and database name into the [cvsdb] section of
the <VIEWCVS_INSTALL_DIR>\viewcvs.conf file.

3) At the command prompt run

   python cvsdbadmin rebuild <repository>

where <repository> is the path to your CVS repository.

4) If you want the checkin database to be dynamically updated with every
checkin, add the following line to your CVSROOT/loginfo file:

   ALL python "<VIEWCVS_INSTALL_DIR>\loginfo-handler" %{sVv}

If you decide not to enable dynamic updates, you can periodically refresh the
database with "python cvsdbadmin update <repository>"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CVSGRAPH

To use CvsGraph with ViewCVS, just put cvsgraph.exe in a directory on your
system PATH and set the use_cvsgraph option to 1 in your viewcvs.conf file.

The CvsGraph home page is http://www.akhphd.au.dk/~bertho/cvsgraph/.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SUBVERSION SUPPORT

To use ViewCVS with Subversion, you'll need to have the Subversion Python
bindings installed. Binaries are available from the Subversion website at:

  http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91

Or to build from source you can use the instructions here:

  http://svn.collab.net/repos/svn/trunk/subversion/bindings/swig/INSTALL

You'll also need to have diff.exe installed in a directory on your system PATH.
diff.exe is available as part of the GnuWin32 project's DiffUtils package at
http://gnuwin32.sf.net/.

Once the Python bindings and diff are installed, you just need to set the
svn_roots option in viewcvs.conf to point to your repositories.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ICONS FOR IIS

The default templates supplied with ViewCVS rely on icons that come with
apache. As a replacement for them on IIS, you can use the ones in the
windows/icons folder. Just copy the folder to your web server's root directory
to use them.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TROUBLESHOOTING

- By far the most common cause of errors in ViewCVS is failure to successfully
  execute the programs it depends on (cvs, rlog, rcsdiff, co, enscript, sed,
  and cvsgraph). To help deal with this problem, ViewCVS includes a special
  debugging mode that displays output from the programs it executes on every
  web page. This allows you to see error messages and other information that
  isn't normally visible. To enable the debugging mode, change line 23 of
  <VIEWCVS_INSTALL_DIR>\lib\debug.py from:

    SHOW_CHILD_PROCESSES = 0

  to:

    SHOW_CHILD_PROCESSES = 1

  Important: You may need to restart your web server before this change takes
  effect. See "Changes made to..." later in this section.

- A common cause of server errors under IIS is permissions problems. You need
  to make sure that the virtual directory containing the CGI or ASP files has
  script execution enabled. You also need to make sure that the web server user
  accounts (IUSR_machine_name and IWAM_machine_name, where machine_name is your
  computer name) have read and execute access to the .asp or .cgi stub scripts,
  the ViewCVS lib/ folder, the paths where external tools like cvs, rcs,
  enscript, sed, and cvsgraph live, and the CVS repositories. NTFS auditing
  makes it very easy to track down permissions problems. Also look for IIS
  messages in the event log.

- Certain Apache configurations may hide some environment variables from the
  ViewCVS CGI scripts and the programs they launch. You can see whether an
  environment variable is visible from the CGI environment by enabling the
  SHOW_CHILD_PROCESSES debug mode described above. You can force Apache to let
  variables through with the PassEnv directive
  (http://httpd.apache.org/docs/mod/mod_env.html#passenv).

- Changes made to environment variables, ViewCVS source files and the ViewCVS
  configuration file do not always take effect immediately. The table below
  shows what actions you need to take after changing any of these things before
  they will have an effect.

+----------------+----------------+----------------+-------------------------+
|                | Environment    | ViewCVS        | ViewCVS                 |
|                | Variables      | Source         | Configuration           |
+----------------+----------------+----------------+-------------------------+
| Standalone     | restart        | restart        | restart                 |
| Server         | standalone.py* | standalone.py  | standalone.py           |
+----------------+----------------+----------------+-------------------------+
| CGI mode under | reboot         | nothing        | nothing                 |
| apache or IIS  | computer       |                |                         |
+----------------+----------------+----------------+-------------------------+
| mod_python or  | reboot         | restart Apache | restart Apache          |
| under apache   | computer       |                | OR                      |
|                |                |                | reload(viewcvs) in stub |
+----------------+----------------+----------------+-------------------------+
| asp mode under | reboot         | restart IIS    | restart IIS             |
| IIS            | computer       | OR             | OR                      |
|                |                | Unload ASP App | Unload ASP App          |
|                |                |                | OR                      |
|                |                |                | reload(viewcvs) in stub |
+----------------+----------------+----------------+-------------------------+
  * If standalone.py was launched from a command prompt and you set the
  environment variable through the control panel, you'll need to open a new
  command prompt.

  Notes:

  Under mod_python and ASP, changes made to the stub scripts inside the web
  root do take effect immediately, you only need to take additional action when
  you make changes to the main source files in <VIEWCVS_INSTALL_DIR>\lib

  To "Unload ASP App", go to the IIS properties dialog for the application
  directory containing the ViewCVS .asp files (in Internet Services Manager).
  Switch to the [Home] | [Virtual] Directory tab and click the "Unload" button
  under "Application Settings".

  To "reload(viewcvs) in stub", put these lines in one of the ASP or Mod_Python
  stub scripts:

    import viewcvs
    reload (viewcvs)

  then load the page one or more times in a web browser.

- If you have problems getting ViewCVS to work with mod_python, you can first
  make sure mod_python works standalone with the testing instructions at
  http://www.modpython.org/live/current/doc-html/inst-testing.html.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KNOWN ISSUES

- If you see ViewCVS errors like

    Error parsing rlog output. Expected RCS file "c:\cvsroot\dir\file,v", found
    "c:\cvsroot\dir\RCS/file,v"

  it's because your RCS utilities don't recognize the RCS file suffix and are
  treating all files specified on the command line like working copies even
  when they end in ",v". You can fix this by including the following string in
  your RCSINIT environment variable:

    -x,v

  Important: You may need to reboot your computer before the environment
  variable has an effect. See "Changes made to..." in the TROUBLESHOOTING
  section.

- The GNU RCS utilities won't work with repository files that use CVSNT's
  unicode expansion mode (-ku). Files that use this mode will show up with the
  "CVS information is unreadable" error message in ViewCVS directory listings.
  To work around this, you can set up ViewCVS to use the CVSNT executable
  (cvs.exe) or CVSNT RCS tools (co.exe, rlog.exe, and rcsdiff.exe) instead of
  the GNU tools.

- The standalone server will not run under Cygwin Python because it does not
  support threads. ASP pages can't be run with Cygwin Python because it does
  not support ActiveX. To use either of these features you should install a
  native Python interpreter.

- On Windows XP and Windows 2003 Server under IIS, enscript might give an error
  like:

    enscript: couldn't open input filter "states -f
    "K:/gnuwin32/share/enscript/hl/enscript.st" -p
    "C://.enscript;K:/gnuwin32/share/enscript/hl" -shtml -Dcolor=1
    -Dstyle=emacs -Dlanguage=html -Dnum_input_files=1
    -Ddocument_title="Enscript Output" -Dtoc=0 -" for file "": No error
    no output generated

  The solution is to give read & execute permissions on cmd.exe to the
  IUSR_computername and IWAM_computername user accounts. (Enscript uses cmd.exe
  internally to launch its little helper program, states.exe).

- By default, ASP will set session cookies at each page load. ViewCVS does not
  use these cookies and they can be safely disabled. You can do this by opening
  the IIS properties dialog for the application directory containing the
  ViewCVS .asp files. Go to the [Home] | [Virtual] Directory tab and click the
  "Configuration" button under "Application Settings". On the dialog that comes
  up, uncheck "Enable Session State" under "App Options" -> "Application
  Configuration".

- Python support for ASP can be a little flaky. If you get strange errors, it
  can sometimes help to uninstall and reinstall it with pyscript.py. A number
  of people have also encountered a problem in ActivePython 2.2 where the first
  loads of any Python ASP page would work, but subsequent loads of the same
  page would always return nothing (leaving the screen blank). There were a
  number of workarounds for this problem, but the fix is to download and
  install the latest python win32 extensions from
  http://starship.python.net/crew/mhammond/win32/Downloads.html

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
THANKS

- Bryan T. Vold for improving the original ViewCVS patch by adding support for
  enscript and tarball generation.
- David Resnick for tracking down the cause of re_search failures in
  repositories with non-rcs files and for bringing a bug in
  sapi.AspFile.header() to my attention
- Matt Bunch for finding a better way to address the ASP blank page problem,
  and Keith D. Zimmerman for finding another workaround.
- Rüdiger Koch for reporting a bug in viewcvs PATH_INFO parsing code with
  Apache for Windows as well as Jelle Ouwerkerk and Steffen Yount for providing
  fixes.
- Nick Minutello and Rüdiger Koch for providing workarounds for setting
  enscript_library environment variable with apache. David Duminy for providing
  the first bug report on this.
- Gyula Faller and Tony Cook for independently coming up with CVSNT loginfo
  handlers that accept spaces and don't rely on unix-style echo commands. Tony
  Cook's patch also eliminated the dependency on cat.exe.
- Mathieu Mazerolle for making the unix loginfo handler handle spaces in
  filenames
- Paul Russell for analyzing problems with new fields in CVSNT RCS files.
  Terry.Ninnis@pgen.com for coming up with a partial solution
- Bo Berglund for tracking down the cause of a case-sensitivity issue that
  could lead to problems in the commit database and for patiently working with
  me to finally fix the CVSNT RCS fields problem and another problem with
  enscript.
- Ivo Roessling for finding and fixing a bug in the query page's commit
  grouping code.
- Keith D. Zimmerman for experimenting with enscript and finding some new ways
  to make it work.
original link

17
Feb
2005

List of Locale ID (LCID) Values as Assigned by Microsoft

The following table lists the locales/languages with an assigned LCID. The purpose of the document is to help developers who are defining NLS services (sorting, time/date formatting, and keyboards/IMEs) for locales that do not yet have native support in Windows to avoid conflict.
Note: The appearance of a language/locale on this list does not indicate Microsoft will offer support for it in the future.

For a list of LCIDs and keyboard combinations for locales that are already supported in Windows XP/Server 2003, see Windows XP/Server 2003 - List of Locale IDs, Input Locale, and Language Collection.
Language - Country/Region 	LCIDHex 	LCIDDec
Afrikaans - South Africa 	0436 	1078
Albanian - Albania 	041c 	1052
Amharic - Ethiopia 	045e 	1118
Arabic - Saudi Arabia 	0401 	1025
Arabic - Algeria 	1401 	5121
Arabic - Bahrain 	3c01 	15361
Arabic - Egypt 	0c01 	3073
Arabic - Iraq 	0801 	2049
Arabic - Jordan 	2c01 	11265
Arabic - Kuwait 	3401 	13313
Arabic - Lebanon 	3001 	12289
Arabic - Libya 	1001 	4097
Arabic - Morocco 	1801 	6145
Arabic - Oman 	2001 	8193
Arabic - Qatar 	4001 	16385
Arabic - Syria 	2801 	10241
Arabic - Tunisia 	1c01 	7169
Arabic - U.A.E. 	3801 	14337
Arabic - Yemen 	2401 	9217
Armenian - Armenia 	042b 	1067
Assamese 	044d 	1101
Azeri (Cyrillic) 	082c 	2092
Azeri (Latin) 	042c 	1068
Basque 	042d 	1069
Belarusian 	0423 	1059
Bengali 	0445 	1093
Bengali (Bangladesh) 	0845 	2117
Bosnian (Bosnia/Herzegovina) 	141A 	5146
Bulgarian 	0402 	1026
Burmese 	0455 	1109
Catalan 	0403 	1027
Cherokee - United States 	045c 	1116
Chinese - People's Republic of China 	0804 	2052
Chinese - Singapore 	1004 	4100
Chinese - Taiwan 	0404 	1028
Chinese - Hong Kong SAR 	0c04 	3076
Chinese - Macao SAR 	1404 	5124
Croatian 	041a 	1050
Croatian (Bosnia/Herzegovina) 	101a 	4122
Czech 	0405 	1029
Danish 	0406 	1030
Divehi 	0465 	1125
Dutch - Netherlands 	0413 	1043
Dutch - Belgium 	0813 	2067
Edo 	0466 	1126
English - United States 	0409 	1033
English - United Kingdom 	0809 	2057
English - Australia 	0c09 	3081
English - Belize 	2809 	10249
English - Canada 	1009 	4105
English - Caribbean 	2409 	9225
English - Hong Kong SAR 	3c09 	15369
English - India 	4009 	16393
English - Indonesia 	3809 	14345
English - Ireland 	1809 	6153
English - Jamaica 	2009 	8201
English - Malaysia 	4409 	17417
English - New Zealand 	1409 	5129
English - Philippines 	3409 	13321
English - Singapore 	4809 	18441
English - South Africa 	1c09 	7177
English - Trinidad 	2c09 	11273
English - Zimbabwe 	3009 	12297
Estonian 	0425 	1061
Faroese 	0438 	1080
Farsi 	0429 	1065
Filipino 	0464 	1124
Finnish 	040b 	1035
French - France 	040c 	1036
French - Belgium 	080c 	2060
French - Cameroon 	2c0c 	11276
French - Canada 	0c0c 	3084
French - Democratic Rep. of Congo 	240c 	9228
French - Cote d'Ivoire 	300c 	12300
French - Haiti 	3c0c 	15372
French - Luxembourg 	140c 	5132
French - Mali 	340c 	13324
French - Monaco 	180c 	6156
French - Morocco 	380c 	14348
French - North Africa 	e40c 	58380
French - Reunion 	200c 	8204
French - Senegal 	280c 	10252
French - Switzerland 	100c 	4108
French - West Indies 	1c0c 	7180
Frisian - Netherlands 	0462 	1122
Fulfulde - Nigeria 	0467 	1127
FYRO Macedonian 	042f 	1071
Gaelic (Ireland) 	083c 	2108
Gaelic (Scotland) 	043c 	1084
Galician 	0456 	1110
Georgian 	0437 	1079
German - Germany 	0407 	1031
German - Austria 	0c07 	3079
German - Liechtenstein 	1407 	5127
German - Luxembourg 	1007 	4103
German - Switzerland 	0807 	2055
Greek 	0408 	1032
Guarani - Paraguay 	0474 	1140
Gujarati 	0447 	1095
Hausa - Nigeria 	0468 	1128
Hawaiian - United States 	0475 	1141
Hebrew 	040d 	1037
Hindi 	0439 	1081
Hungarian 	040e 	1038
Ibibio - Nigeria 	0469 	1129
Icelandic 	040f 	1039
Igbo - Nigeria 	0470 	1136
Indonesian 	0421 	1057
Inuktitut 	045d 	1117
Italian - Italy 	0410 	1040
Italian - Switzerland 	0810 	2064
Japanese 	0411 	1041
Kannada 	044b 	1099
Kanuri - Nigeria 	0471 	1137
Kashmiri 	0860 	2144
Kashmiri (Arabic) 	0460 	1120
Kazakh 	043f 	1087
Khmer 	0453 	1107
Konkani 	0457 	1111
Korean 	0412 	1042
Kyrgyz (Cyrillic) 	0440 	1088
Lao 	0454 	1108
Latin 	0476 	1142
Latvian 	0426 	1062
Lithuanian 	0427 	1063
Malay - Malaysia 	043e 	1086
Malay - Brunei Darussalam 	083e 	2110
Malayalam 	044c 	1100
Maltese 	043a 	1082
Manipuri 	0458 	1112
Maori - New Zealand 	0481 	1153
Marathi 	044e 	1102
Mongolian (Cyrillic) 	0450 	1104
Mongolian (Mongolian) 	0850 	2128
Nepali 	0461 	1121
Nepali - India 	0861 	2145
Norwegian (Bokmål) 	0414 	1044
Norwegian (Nynorsk) 	0814 	2068
Oriya 	0448 	1096
Oromo 	0472 	1138
Papiamentu 	0479 	1145
Pashto 	0463 	1123
Polish 	0415 	1045
Portuguese - Brazil 	0416 	1046
Portuguese - Portugal 	0816 	2070
Punjabi 	0446 	1094
Punjabi (Pakistan) 	0846 	2118
Quecha - Bolivia 	046B 	1131
Quecha - Ecuador 	086B 	2155
Quecha - Peru 	0C6B 	3179
Rhaeto-Romanic 	0417 	1047
Romanian 	0418 	1048
Romanian - Moldava 	0818 	2072
Russian 	0419 	1049
Russian - Moldava 	0819 	2073
Sami (Lappish) 	043b 	1083
Sanskrit 	044f 	1103
Sepedi 	046c 	1132
Serbian (Cyrillic) 	0c1a 	3098
Serbian (Latin) 	081a 	2074
Sindhi - India 	0459 	1113
Sindhi - Pakistan 	0859 	2137
Sinhalese - Sri Lanka 	045b 	1115
Slovak 	041b 	1051
Slovenian 	0424 	1060
Somali 	0477 	1143
Sorbian 	042e 	1070
Spanish - Spain (Modern Sort) 	0c0a 	3082
Spanish - Spain (Traditional Sort) 	040a 	1034
Spanish - Argentina 	2c0a 	11274
Spanish - Bolivia 	400a 	16394
Spanish - Chile 	340a 	13322
Spanish - Colombia 	240a 	9226
Spanish - Costa Rica 	140a 	5130
Spanish - Dominican Republic 	1c0a 	7178
Spanish - Ecuador 	300a 	12298
Spanish - El Salvador 	440a 	17418
Spanish - Guatemala 	100a 	4106
Spanish - Honduras 	480a 	18442
Spanish - Latin America 	e40a 	58378
Spanish - Mexico 	080a 	2058
Spanish - Nicaragua 	4c0a 	19466
Spanish - Panama 	180a 	6154
Spanish - Paraguay 	3c0a 	15370
Spanish - Peru 	280a 	10250
Spanish - Puerto Rico 	500a 	20490
Spanish - United States 	540a 	21514
Spanish - Uruguay 	380a 	14346
Spanish - Venezuela 	200a 	8202
Sutu 	0430 	1072
Swahili 	0441 	1089
Swedish 	041d 	1053
Swedish - Finland 	081d 	2077
Syriac 	045a 	1114
Tajik 	0428 	1064
Tamazight (Arabic) 	045f 	0414
Tamazight (Latin) 	085f 	1119
Tamil 	0449 	1097
Tatar 	0444 	1092
Telugu 	044a 	1098
Thai 	041e 	1054
Tibetan - Bhutan 	0851 	2129
Tibetan - People's Republic of China 	0451 	1105
Tigrigna - Eritrea 	0873 	2163
Tigrigna - Ethiopia 	0473 	1139
Tsonga 	0431 	1073
Tswana 	0432 	1074
Turkish 	041f 	1055
Turkmen 	0442 	1090
Uighur - China 	0480 	1152
Ukrainian 	0422 	1058
Urdu 	0420 	1056
Urdu - India 	0820 	2080
Uzbek (Cyrillic) 	0843 	2115
Uzbek (Latin) 	0443 	1091
Venda 	0433 	1075
Vietnamese 	042a 	1066
Welsh 	0452 	1106
Xhosa 	0434 	1076
Yi 	0478 	1144
Yiddish 	043d 	1085
Yoruba 	046a 	1130
Zulu 	0435 	1077
HID (Human Interface Device) 	04ff 	1279
original link

English country names and code elements

This list states the country names (official
short names in English) in alphabetical order as given in
ISO 3166-1 and the corresponding ISO 3166-1-alpha-2 code
elements

This list is updated whenever a change to the
official code list in ISO 3166-1 is effected by the ISO 3166/MA.

It lists 240 official short names and code
elements.

A-F   G-K   L-R   S-Z

AFGHANISTAN

AF

ÅLAND ISLANDS

AX

ALBANIA

AL

ALGERIA

DZ

AMERICAN SAMOA

AS

ANDORRA

AD

ANGOLA

AO

ANGUILLA

AI

ANTARCTICA

AQ

ANTIGUA AND BARBUDA

AG

ARGENTINA

AR

ARMENIA

AM

ARUBA

AW

AUSTRALIA

AU

AUSTRIA

AT

AZERBAIJAN

AZ

BAHAMAS

BS

BAHRAIN

BH

BANGLADESH

BD

BARBADOS

BB

BELARUS

BY

BELGIUM

BE

BELIZE

BZ

BENIN

BJ

BERMUDA

BM

BHUTAN

BT

BOLIVIA

BO

BOSNIA AND HERZEGOVINA

BA

BOTSWANA

BW

BOUVET ISLAND

BV

BRAZIL

BR

BRITISH INDIAN OCEAN TERRITORY

IO

BRUNEI DARUSSALAM

BN

BULGARIA

BG

BURKINA FASO

BF

BURUNDI

BI

CAMBODIA

KH

CAMEROON

CM

CANADA

CA

CAPE VERDE

CV

CAYMAN ISLANDS

KY

CENTRAL AFRICAN REPUBLIC

CF

CHAD

TD

CHILE

CL

CHINA

CN

CHRISTMAS ISLAND

CX

COCOS (KEELING) ISLANDS

CC

COLOMBIA

CO

COMOROS

KM

CONGO

CG

CONGO, THE DEMOCRATIC REPUBLIC OF THE

CD

COOK ISLANDS

CK

COSTA RICA

CR

CÔTE D'IVOIRE

CI

CROATIA

HR

CUBA

CU

CYPRUS

CY

CZECH REPUBLIC

CZ

DENMARK

DK

DJIBOUTI

DJ

DOMINICA

DM

DOMINICAN REPUBLIC

DO

ECUADOR

EC

EGYPT

EG

EL SALVADOR

SV

EQUATORIAL GUINEA

GQ

ERITREA

ER

ESTONIA

EE

ETHIOPIA

ET

FALKLAND ISLANDS (MALVINAS)

FK

FAROE ISLANDS

FO

FIJI

FJ

FINLAND

FI

FRANCE

FR

FRENCH GUIANA

GF

FRENCH POLYNESIA

PF

FRENCH SOUTHERN TERRITORIES

TF

GABON

GA

GAMBIA

GM

GEORGIA

GE

GERMANY

DE

GHANA

GH

GIBRALTAR

GI

GREECE

GR

GREENLAND

GL

GRENADA

GD

GUADELOUPE

GP

GUAM

GU

GUATEMALA

GT

GUINEA

GN

GUINEA-BISSAU

GW

GUYANA

GY

HAITI

HT

HEARD ISLAND AND MCDONALD ISLANDS

HM

HOLY SEE (VATICAN CITY STATE)

VA

HONDURAS

HN

HONG KONG

HK

HUNGARY

HU

ICELAND

IS

INDIA

IN

INDONESIA

ID

IRAN, ISLAMIC REPUBLIC OF

IR

IRAQ

IQ

IRELAND

IE

ISRAEL

IL

ITALY

IT

JAMAICA

JM

JAPAN

JP

JORDAN

JO

KAZAKHSTAN

KZ

KENYA

KE

KIRIBATI

KI

KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF

KP

KOREA, REPUBLIC OF

KR

KUWAIT

KW

KYRGYZSTAN

KG

LAO PEOPLE'S DEMOCRATIC REPUBLIC

LA

LATVIA

LV

LEBANON

LB

LESOTHO

LS

LIBERIA

LR

LIBYAN ARAB JAMAHIRIYA

LY

LIECHTENSTEIN

LI

LITHUANIA

LT

LUXEMBOURG

LU

MACAO

MO

MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF

MK

MADAGASCAR

MG

MALAWI

MW

MALAYSIA

MY

MALDIVES

MV

MALI

ML

MALTA

MT

MARSHALL ISLANDS

MH

MARTINIQUE

MQ

MAURITANIA

MR

MAURITIUS

MU

MAYOTTE

YT

MEXICO

MX

MICRONESIA, FEDERATED STATES OF

FM

MOLDOVA, REPUBLIC OF

MD

MONACO

MC

MONGOLIA

MN

MONTSERRAT

MS

MOROCCO

MA

MOZAMBIQUE

MZ

MYANMAR

MM

NAMIBIA

NA

NAURU

NR

NEPAL

NP

NETHERLANDS

NL

NETHERLANDS ANTILLES

AN

NEW CALEDONIA

NC

NEW ZEALAND

NZ

NICARAGUA

NI

NIGER

NE

NIGERIA

NG

NIUE

NU

NORFOLK ISLAND

NF

NORTHERN MARIANA ISLANDS

MP

NORWAY

NO

OMAN

OM

PAKISTAN

PK

PALAU

PW

PALESTINIAN TERRITORY, OCCUPIED

PS

PANAMA

PA

PAPUA NEW GUINEA

PG

PARAGUAY

PY

PERU

PE

PHILIPPINES

PH

PITCAIRN

PN

POLAND

PL

PORTUGAL

PT

PUERTO RICO

PR

QATAR

QA

RÉUNION

RE

ROMANIA

RO

RUSSIAN FEDERATION

RU

RWANDA

RW

SAINT HELENA

SH

SAINT KITTS AND NEVIS

KN

SAINT LUCIA

LC

SAINT PIERRE AND MIQUELON

PM

SAINT VINCENT AND THE GRENADINES

VC

SAMOA

WS

SAN MARINO

SM

SAO TOME AND PRINCIPE

ST

SAUDI ARABIA

SA

SENEGAL

SN

SERBIA AND MONTENEGRO

CS

SEYCHELLES

SC

SIERRA LEONE

SL

SINGAPORE

SG

SLOVAKIA

SK

SLOVENIA

SI

SOLOMON ISLANDS

SB

SOMALIA

SO

SOUTH AFRICA

ZA

SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS

GS

SPAIN

ES

SRI LANKA

LK

SUDAN

SD

SURINAME

SR

SVALBARD AND JAN MAYEN

SJ

SWAZILAND

SZ

SWEDEN

SE

SWITZERLAND

CH

SYRIAN ARAB REPUBLIC

SY

TAIWAN, PROVINCE OF CHINA

TW

TAJIKISTAN

TJ

TANZANIA, UNITED REPUBLIC OF

TZ

THAILAND

TH

TIMOR-LESTE

TL

TOGO

TG

TOKELAU

TK

TONGA

TO

TRINIDAD AND TOBAGO

TT

TUNISIA

TN

TURKEY

TR

TURKMENISTAN

TM

TURKS AND CAICOS ISLANDS

TC

TUVALU

TV

UGANDA

UG

UKRAINE

UA

UNITED ARAB EMIRATES

AE

UNITED KINGDOM

GB

UNITED STATES

US

UNITED STATES MINOR OUTLYING ISLANDS

UM

URUGUAY

UY

UZBEKISTAN

UZ

VANUATU

VU

Vatican City State see HOLY SEE

VENEZUELA

VE

VIET NAM

VN

VIRGIN ISLANDS, BRITISH

VG

VIRGIN ISLANDS, U.S.

VI

WALLIS AND FUTUNA

WF

WESTERN SAHARA

EH

YEMEN

YE

Zaire see CONGO, THE DEMOCRATIC REPUBLIC OF THE

ZAMBIA

ZM

ZIMBABWE

ZW

top


original link

Codes for the Representation of Names of Languages

Codes arranged alphabetically by Alpha-3 Code


Table of Contents

A-B-- aar to byn M-N -- mac to nzi
C-D -- cad to dzo O-P -- oci to pus
E-F -- efi to fur Q-R -- qaa to rus
G-H -- gaa to hup S-T -- sad to tyv
I-J -- iba to jrb U-Z -- udm to zun
K-L -- kaa to lus  

ISO 639-2 is the alpha-3 code. Where two codes are
provided (22 languages total) the bibliographic code is given first and
the terminology code is given second.

ISO 639-1 is the alpha-2 code. Multiple codes for the same language
are to be considered synonyms.

A-B

639-2 639-1 Language Name
(English)
Language Name
(French)
aar aa Afar afar
abk ab Abkhazian abkhaze
ace   Achinese aceh
ach   Acoli acoli
ada   Adangme adangme
ady   Adyghe; Adygei adyghé
afa   Afro-Asiatic (Other) afro-asiatiques, autres langues
afh   Afrihili afrihili
afr af Afrikaans afrikaans
aka ak Akan akan
akk   Akkadian akkadien
alb/sqi* sq Albanian albanais
ale   Aleut aléoute
alg   Algonquian languages algonquines, langues
amh am Amharic amharique
ang   English, Old (ca.450-1100) anglo-saxon (ca.450-1100)
apa   Apache languages apache
ara ar Arabic arabe
arc   Aramaic araméen
arg an Aragonese aragonais
arm/hye* hy Armenian arménien
arn   Araucanian araucan
arp   Arapaho arapaho
art   Artificial (Other) artificielles, autres langues
arw   Arawak arawak
asm as Assamese assamais
ast   Asturian; Bable asturien; bable
ath   Athapascan languages athapascanes, langues
aus   Australian languages australiennes, langues
ava av Avaric avar
ave ae Avestan avestique
awa   Awadhi awadhi
aym ay Aymara aymara
aze az Azerbaijani azéri
bad   Banda banda
bai   Bamileke languages bamilékés, langues
bak ba Bashkir bachkir
bal   Baluchi baloutchi
bam bm Bambara bambara
ban   Balinese balinais
baq/eus* eu Basque basque
bas   Basa basa
bat   Baltic (Other) baltiques, autres langues
bej   Beja bedja
bel be Belarusian biélorusse
bem   Bemba bemba
ben bn Bengali bengali
ber   Berber (Other) berbères, autres langues
bho   Bhojpuri bhojpuri
bih bh Bihari bihari
bik   Bikol bikol
bin   Bini bini
bis bi Bislama bichlamar
bla   Siksika blackfoot
bnt   Bantu (Other) bantoues, autres langues
tib/bod* bo Tibetan tibétain
bos bs Bosnian bosniaque
bra   Braj braj
bre br Breton breton
btk   Batak (Indonesia) batak (Indonésie)
bua   Buriat bouriate
bug   Buginese bugi
bul bg Bulgarian bulgare
bur/mya* my Burmese birman
byn   Blin; Bilin blin; bilen

Go to the top

C-D

639-2 639-1 Language Name
(English)
Language Name
(French)
cad   Caddo caddo
cai   Central American Indian (Other) indiennes d'Amérique centrale,
autres langues
car   Carib caribe
cat ca Catalan; Valencian catalan; valencien
cau   Caucasian (Other) caucasiennes, autres langues
ceb   Cebuano cebuano
cel   Celtic (Other) celtiques, autres langues
cze/ces* cs Czech tchèque
cha ch Chamorro chamorro
chb   Chibcha chibcha
che ce Chechen tchétchène
chg   Chagatai djaghataï
chi/zho* zh Chinese chinois
chk   Chuukese chuuk
chm   Mari mari
chn   Chinook jargon chinook, jargon
cho   Choctaw choctaw
chp   Chipewyan chipewyan
chr   Cherokee cherokee
chu
cu
Church Slavic; Old Slavonic; Church Slavonic;
Old Bulgarian; Old Church Slavonic
slavon d'église;
vieux slave; slavon liturgique; vieux bulgare
chv cv Chuvash tchouvache
chy   Cheyenne cheyenne
cmc   Chamic languages chames, langues
cop   Coptic copte
cor kw Cornish cornique
cos co Corsican corse
cpe
  Creoles and pidgins, English based (Other)
créoles et
pidgins anglais, autres
cpf
  Creoles and pidgins, French-based (Other)
créoles et pidgins français,
autres
cpp   Creoles and pidgins,
Portuguese-based (Other)
créoles et pidgins portugais, autres
cre cr Cree cree
crh   Crimean Tatar; Crimean Turkish tatar de Crimé
crp   Creoles and pidgins (Other) créoles et pidgins divers
csb   Kashubian kachoube
cus   Cushitic (Other) couchitiques, autres langues
wel/cym* cy Welsh gallois
cze/ces* cs Czech tchèque
dak   Dakota dakota
dan da Danish danois
dar   Dargwa dargwa
day   Dayak dayak
del   Delaware delaware
den   Slave (Athapascan) esclave (athapascan)
ger/deu* de German allemand
dgr   Dogrib dogrib
din   Dinka dinka
div dv Divehi maldivien
doi   Dogri dogri
dra   Dravidian (Other) dravidiennes, autres langues
dsb   Lower Sorbian bas-sorabe
dua   Duala douala
dum   Dutch, Middle (ca.1050-1350) néerlandais moyen (ca. 1050-1350)
dut/nld* nl Dutch; Flemish néerlandais; flamand
dyu   Dyula dioula
dzo dz Dzongkha dzongkha

Go to the top

E-F

639-2 639-1 Language Name
(English)
Language Name
(French)
efi   Efik efik
egy   Egyptian (Ancient) égyptien
eka   Ekajuk ekajuk
gre/ell* el Greek, Modern (1453-) grec moderne (après 1453)
elx   Elamite élamite
eng en English anglais
enm   English, Middle (1100-1500) anglais moyen (1100-1500)
epo eo Esperanto espéranto
est et Estonian estonien
baq/eus* eu Basque basque
ewe ee Ewe éwé
ewo   Ewondo éwondo
fan   Fang fang
fao fo Faroese féroïen
per/fas* fa Persian persan
fat   Fanti fanti
fij fj Fijian fidjien
fil   Filipino; Pilipino filipino; pilipino
fin fi Finnish finnois
fiu   Finno-Ugrian (Other) finno-ougriennes, autres langues
fon   Fon fon
fre/fra* fr French français
frm   French, Middle (ca.1400-1800) français moyen (1400-1800)
fro   French, Old (842-ca.1400) français ancien (842-ca.1400)
fry fy Frisian frison
ful ff Fulah peul
fur
 
Friulian
frioulan

Go to the top

G-H

639-2 639-1 Language Name
(English)
Language Name
(French)
gaa   Ga ga
gay   Gayo gayo
gba   Gbaya gbaya
gem   Germanic (Other) germaniques, autres langues
geo/kat* ka Georgian géorgien
ger/deu* de German allemand
gez   Geez guèze
gil   Gilbertese kiribati
gla gd Gaelic; Scottish Gaelic gaélique; gaélique
écossais
gle ga Irish irlandais
glg gl Gallegan galicien
glv gv Manx manx; mannois
gmh   German, Middle High (ca.1050-1500) allemand, moyen haut (ca. 1050-1500)
goh   German, Old High (ca.750-1050) allemand, vieux haut (ca. 750-1050)
gon   Gondi gond
gor   Gorontalo gorontalo
got   Gothic gothique
grb   Grebo grebo
grc   Greek, Ancient (to 1453) grec ancien (jusqu'à 1453)
gre/ell* el Greek, Modern (1453-) grec moderne (après 1453)
grn gn Guarani guarani
guj gu Gujarati goudjrati
gwi   Gwich´in gwich´in
hai   Haida haida
hat ht Haitian; Haitian Creole haïtien; créole haïtien
hau ha Hausa haoussa
haw   Hawaiian hawaïen
heb he Hebrew hébreu
her hz Herero herero
hil   Hiligaynon hiligaynon
him   Himachali himachali
hin hi Hindi hindi
hit   Hittite hittite
hmn   Hmong hmong
hmo ho Hiri Motu hiri motu
scr/hrv* hr Croatian croate
hsb   Upper Sorbian haut-sorabe
hun hu Hungarian hongrois
hup   Hupa hupa
arm/hye* hy Armenian arménien

Go to the top

I-J

639-2 639-1 Language Name
(English)
Language Name
(French)
iba   Iban iban
ibo ig Igbo igbo
ice/isl* is Icelandic islandais
ido io Ido ido
iii ii Sichuan Yi yi de Sichuan
ijo   Ijo ijo
iku iu Inuktitut inuktitut
ile ie Interlingue interlingue
ilo   Iloko ilocano
ina ia Interlingua (International Auxiliary
Language Association)
interlingua (langue
auxiliaire internationale)
inc   Indic (Other) indo-aryennes, autres langues
ind id Indonesian indonésien
ine   Indo-European (Other) indo-européennes, autres langues
inh   Ingush ingouche
ipk ik Inupiaq inupiaq
ira   Iranian (Other) iraniennes, autres langues
iro   Iroquoian languages iroquoises, langues (famille)
ice/isl* is Icelandic islandais
ita it Italian italien
jav jv Javanese javanais
jbo   Lojban lojban
jpn ja Japanese japonais
jpr   Judeo-Persian judéo-persan
jrb   Judeo-Arabic judéo-arabe

Go to the top

K-L

639-2 639-1 Language Name
(English)
Language Name
(French)
kaa   Kara-Kalpak karakalpak
kab   Kabyle kabyle
kac   Kachin kachin
kal kl Kalaallisut; Greenlandic groenlandais
kam   Kamba kamba
kan kn Kannada kannada
kar   Karen karen
kas ks Kashmiri kashmiri
geo/kat* ka Georgian géorgien
kau kr Kanuri kanouri
kaw   Kawi kawi
kaz kk Kazakh kazakh
kbd   Kabardian kabardien
kha   Khasi khasi
khi   Khoisan (Other) khoisan, autres langues
khm km Khmer khmer
kho   Khotanese khotanais
kik ki Kikuyu; Gikuyu kikuyu
kin rw Kinyarwanda rwanda
kir ky Kirghiz kirghize
kmb   Kimbundu kimbundu
kok   Konkani konkani
kom kv Komi kom
kon kg Kongo kongo
kor ko Korean coréen
kos   Kosraean kosrae
kpe   Kpelle kpellé
krc   Karachay-Balkar karatchaï balkar
kro   Kru krou
kru   Kurukh kurukh
kua kj Kuanyama; Kwanyama kuanyama; kwanyama
kum   Kumyk koumyk
kur ku Kurdish kurde
kut   Kutenai kutenai
lad   Ladino judéo-espagnol
lah   Lahnda lahnda
lam   Lamba lamba
lao lo Lao lao
lat la Latin latin
lav lv Latvian letton
lez   Lezghian lezghien
lim li Limburgan; Limburger; Limburgish limbourgeois
lin ln Lingala lingala
lit lt Lithuanian lituanien
lol   Mongo mongo
loz   Lozi lozi
ltz lb Luxembourgish; Letzeburgesch luxembourgeois
lua   Luba-Lulua luba-lulua
lub lu Luba-Katanga luba-katanga
lug lg Ganda ganda
lui   Luiseno luiseno
lun   Lunda lunda
luo   Luo (Kenya and Tanzania) luo (Kenya et Tanzanie)
lus   lushai Lushai

Go to the top

M-N

639-2 639-1 Language Name
(English)
Language Name
(French)
mac/mkd* mk Macedonian macédonien
mad   Madurese madourais
mag   Magahi magahi
mah mh Marshallese marshall
mai   Maithili maithili
mak   Makasar makassar
mal ml Malayalam malayalam
man   Mandingo mandingue
mao/mri* mi Maori maori
map   Austronesian (Other) malayo-polynésiennes,
autres langues
mar mr Marathi marathe
mas   Masai massaï
may/msa* ms Malay malais
mdf   Moksha moksa
mdr   Mandar mandar
men   Mende mendé
mga   Irish, Middle (900-1200) irlandais moyen (900-1200)
mic   Mi'kmaq; Micmac mi'kmaq; micmac
min   Minangkabau minangkabau
mis   Miscellaneous languages diverses, langues
mac/mkd* mk Macedonian macédonien
mkh   Mon-Khmer (Other) môn-khmer, autres langues
mlg mg Malagasy malgache
mlt mt Maltese maltais
mnc   Manchu mandchou
mni   Manipuri manipuri
mno   Manobo languages manobo, langues
moh   Mohawk mohawk
mol mo Moldavian moldave
mon mn Mongolian mongol
mos   Mossi moré
mao/mri* mi Maori maori
may/msa* ms Malay malais
mul   Multiple languages multilingue
mun   Munda languages mounda, langues
mus   Creek muskogee
mwl   Mirandese mirandais
mwr   Marwari marvari
bur/mya* my Burmese birman
myn   Mayan languages maya, langues
myv   Erzya erza
nah   Nahuatl nahuatl
nai   North American Indian indiennes d'Amérique du Nord,
autres langues
nap   Neapolitan napolitain
nau na Nauru nauruan
nav nv Navajo; Navaho navaho
nbl nr Ndebele, South; South Ndebele ndébélé du Sud
nde nd Ndebele, North; North Ndebele ndébélé du Nord
ndo ng Ndonga ndonga
nds   Low German; Low Saxon; German, Low; Saxon, Low bas allemand; bas saxon; allemand, bas; saxon, bas
nep ne Nepali népalais
new   Newari; Nepal Bhasa newari; nepal bhasa
nia   Nias nias
nic   Niger-Kordofanian (Other) nigéro-congolaises, autres langues
niu   Niuean niué
dut/nld* nl Dutch; Flemish néerlandais; flamand
nno nn Norwegian Nynorsk; Nynorsk, Norwegian norvégien nynorsk; nynorsk, norvégien
nob nb Norwegian Bokmål; Bokmål, Norwegian norvégien bokmål; bokmål, norvégien
nog   Nogai nogaï; nogay
non   Norse, Old norrois, vieux
nor no Norwegian norvégien
nso   Northern Sotho, Pedi; Sepedi sotho du Nord; pedi; sepedi
nub   Nubian languages nubiennes, langues
nwc   Classical Newari; Old Newari; Classical Nepal Bhasa newari classique
nya ny Chichewa; Chewa; Nyanja chichewa; chewa; nyanja
nym   Nyamwezi nyamwezi
nyn   Nyankole nyankolé
nyo   Nyoro nyoro
nzi   Nzima nzema

Go to the top

O-P

639-2 639-1 Language Name
(English)
Language Name
(French)
oci oc Occitan (post 1500); Provençal occitan (après 1500); provençal
oji oj Ojibwa ojibwa
ori or Oriya oriya
orm om Oromo galla
osa   Osage osage
oss os Ossetian; Ossetic ossète
ota   Turkish, Ottoman (1500-1928) turc ottoman (1500-1928)
oto   Otomian languages otomangue, langues
paa   Papuan (Other) papoues, autres langues
pag   Pangasinan pangasinan
pal   Pahlavi pahlavi
pam   Pampanga pampangan
pan pa Panjabi; Punjabi pendjabi
pap   Papiamento papiamento
pau   Palauan palau
peo   Persian, Old (ca.600-400 B.C.) perse, vieux (ca. 600-400 av. J.-C.)
per/fas* fa Persian persan
phi   Philippine (Other) philippines, autres langues
phn   Phoenician phénicien
pli pi Pali pali
pol pl Polish polonais
pon   Pohnpeian pohnpei
por pt Portuguese portugais
pra   Prakrit languages prâkrit
pro   Provençal, Old (to 1500) provençal ancien (jusqu'à 1500)
pus ps Pushto pachto

Go to the top

Q-R

639-2 639-1 Language Name
(English)
Language Name
(French)
qaa-qtz   Reserved for local use réservée à l'usage local
que qu Quechua quechua
raj   Rajasthani rajasthani
rap   Rapanui rapanui
rar   Rarotongan rarotonga
roa
Romance (Other)
romanes, autres langues
roh rm Raeto-Romance rhéto-roman
rom   Romany tsigane
rum/ron* ro Romanian roumain
run rn Rundi rundi
rus ru Russian russe

Go to the top

S-T

639-2 639-1 Language Name
(English)
Language Name
(French)
sad   Sandawe sandawe
sag sg Sango sango
sah   Yakut iakoute
sai   South American Indian (Other) indiennes d'Amérique du Sud,
autres langues
sal   Salishan languages salish, langues
sam   Samaritan Aramaic samaritain
san sa Sanskrit sanskrit
sas   Sasak sasak
sat   Santali santal
scc/srp* sr Serbian serbe
scn   Sicilian sicilien
sco   Scots écossais
scr/hrv* hr Croatian croate
sel   Selkup selkoupe
sem   Semitic (Other) sémitiques, autres langues
sga   Irish, Old (to 900) irlandais ancien (jusqu'à 900)
sgn   Sign Languages langues des signes
shn   Shan chan
sid   Sidamo sidamo
sin si Sinhala; Sinhalese singhalais
sio   Siouan languages sioux, langues
sit   Sino-Tibetan (Other) sino-tibétaines, autres langues
sla   Slavic (Other) slaves, autres langues
slo/slk* sk Slovak slovaque
slv sl Slovenian slovène
sma   Southern Sami sami du Sud
sme se Northern Sami sami du Nord
smi   Sami languages (Other) sami, autres langues
smj   Lule Sami sami de Lule
smn   Inari Sami sami d'Inari
smo sm Samoan samoan
sms   Skolt Sami sami skolt
sna sn Shona shona
snd sd Sindhi sindhi
snk   Soninke soninké
sog   Sogdian sogdien
som so Somali somali
son   Songhai songhai
sot st Sotho, Southern sotho du Sud
spa es Spanish; Castilian espagnol; castillan
alb/sqi*
sq
Albanian
albanais
srd sc Sardinian sarde
scc/srp* sr Serbian serbe
srr   Serer sérère
ssa   Nilo-Saharan (Other) nilo-sahariennes, autres langues
ssw ss Swati swati
suk   Sukuma sukuma
sun su Sundanese soundanais
sus   Susu soussou
sux   Sumerian sumérien
swa sw Swahili swahili
swe sv Swedish suédois
syr   Syriac syriaque
tah ty Tahitian tahitien
tai   Tai (Other) thaïes, autres langues
tam ta Tamil tamoul
tat tt Tatar tatar
tel te Telugu télougou
tem   Timne temne
ter   Tereno tereno
tet   Tetum tetum
tgk tg Tajik tadjik
tgl tl Tagalog tagalog
tha th Thai thaï
tib/bod* bo Tibetan tibétain
tig   Tigre tigré
tir ti Tigrinya tigrigna
tiv   Tiv tiv
tkl   Tokelau tokelau
tlh   Klingon; tlhIngan-Hol klingon
tli   Tlingit tlingit
tmh   Tamashek tamacheq
tog   Tonga (Nyasa) tonga (Nyasa)
ton to Tonga (Tonga Islands) tongan (Îles Tonga)
tpi   Tok Pisin tok pisin
tsi   Tsimshian tsimshian
tsn tn Tswana tswana
tso ts Tsonga tsonga
tuk tk Turkmen turkmène
tum   Tumbuka tumbuka
tup   Tupi languages tupi, langues
tur tr Turkish turc
tut   Altaic (Other) altaïques, autres langues
tvl   Tuvalu tuvalu
twi tw Twi twi
tyv   Tuvinian touva

Go to the top

U-Z

639-2 639-1 Language Name
(English)
Language Name
(French)
udm   Udmurt oudmourte
uga   Ugaritic ougaritique
uig ug Uighur; Uyghur ouïgour
ukr uk Ukrainian ukrainien
umb   Umbundu umbundu
und   Undetermined indéterminée
urd ur Urdu ourdou
uzb uz Uzbek ouszbek
vai   Vai vaï
ven ve Venda venda
vie vi Vietnamese vietnamien
vol vo Volapük volapük
vot   Votic vote
wak   Wakashan languages wakashennes, langues
wal   Walamo walamo
war   Waray waray
was   Washo washo
wel/cym* cy Welsh gallois
wen   Sorbian languages sorabes, langues
wln wa Walloon wallon
wol wo Wolof wolof
xal   Kalmyk kalmouk
xho xh Xhosa xhosa
yao   Yao yao
yap   Yapese yapois
yid yi Yiddish yiddish
yor yo Yoruba yoruba
ypk   Yupik languages yupik, langues
zap   Zapotec zapotèque
zen   Zenaga zenaga
zha za Zhuang; Chuang zhuang; chuang
chi/zho* zh Chinese chinois
znd   Zande zandé
zul zu Zulu zoulou
zun   Zuni zuni

Top of Document

original link

16
Feb
2005

NTBACKUP

NTBACKUP

Backup drives / folders to tape.
This page is for Windows 2000 and XP only - the syntax for Windows NT 4 is here

Syntax Windows 2000:

    NTBACKUP backup [systemstate] "bks file name"  /J {"job name"} [options]
       [/um]

Syntax Windows XP:

    NTBACKUP backup [systemstate] "@bks file name" /J {"job name"} [options]
       [/SNAP:{on|off}]


options:

systemstate
  Back up the System State data. 
  This will also force the backup type to normal or copy.

@bks file name
  The name of the backup selection file (.bks file).
  In WinXP the at (@) character must precede this name.
  A backup selection file contains information on the files and folders 
  to be backed up. 
  You have to create the file using the GUI version of NT Backup.

/J {"job name"}
  The job name to be used in the log file 
  Describe the files and folders and the backup date-time.

/P {"pool name"}
  The media pool from which you want to use media. 
  Usually a subpool of the Backup media pool, such as 4mm DDS.
  If you select this you cannot use /A, /G, /F, or /T

/G {"guid name"}
  Overwrite or append to this tape. 
  Don't use with a media Pool (/P).

/T {"tape name"}
  Overwrite or append to this tape.
  Don't use with a media Pool (/P).

/A
  Perform an append operation. 
  Either "guid name" (/G) or "tape name" (/T) must be specified with this switch. 
  Don't use with a media Pool (/P).

/N {"media name"}
  The new tape name. Don't use with Append (/A).

/F {"file name"}
  Backup to a file - logical disk path and file name.
  Do not use with the switches: /P /G /T.

/D {"set description"}
  Label for each backup set

/DS {"server name"}
  Back up the directory service file for MS Exchange 5.5 server. 
  This is not needed/does not work with Exchange 2000 since Exchange 2000
  uses Active Directory.

/IS {"server name"}
  Back up the Information Store file for an MS Exchange 5.5 Server.

/V:{yes|no}
  Verify the data after the backup is complete.

/R:{yes|no}
  Restrict access to this tape to the Owner/AdministratorS

/L:{f|s|n}
  The type of log file: f=full, s=summary, n=none

/M {backup type}
  The backup type. One of: normal, copy, differential, incremental, or daily

/RS:{yes|no}
  Backs up the migrated data files located in Remote Storage. 
  The /RS command-line option is not required to back up the local Removable 
  Storage database (that contains the Remote Storage placeholder files). 
  When you backup the %systemroot% folder, Backup automatically backs up the 
  Removable Storage database as well.

/HC:{on|off}
  Use hardware compression, if available, on the tape drive.

/SNAP:{on|off}
  Is the backup is a volume shadow copy. Windows XP only.

/um
  Find the first available media, format it, and use for the current backup.
  Use with the /p switch to scan for available media pools. 
   This option is documented for Windows 2000 only. 
  This command is only for standalone tape devices (not tape loaders.)
  The /UM switch must be at the end of the command line.

Bugs

Backups made using Windows Server 2003's NT Backup program can't be restored
with any previous WinNT Backup Program - (expect a patch for this soon.)

Mick Jagger sang backup vocals for "You're
so Vain"
by Carly
Simon


Related Commands:

Q821730 - Backup does
not run as expected (Server 2003)
Q814583 - NT Backup
in Windows Server 2003
Q300439 - Online help
is incomplete (Win2000)
Q300135 - Using the
Windows 2000 Backup Wizard.
Q237310 - Manually Edit
Ntbackup.exe Selection Script Files
Q260327 - NT Backup
error codes. (Win2000)

CIPHER - Encrypt or Decrypt files/folders
RSM - Remote Storage Management - Eject tapes (Win2000)
Undocumented Registry
keys for NT Backup
(Win2000)
AT - Schedule a command to run at a later time
XCOPY - Copy files and folders

Equivalent Linux BASH command:

tar - Tape ARchiver


original link

14
Feb
2005

basic perl file handling

Here is the basic perl program which does the same as the UNIX
cat command on a certain file.

#!/usr/local/bin/perl
#
# Program to open the password file, read it in,
# print it, and close it again.

$file = '/etc/passwd';		# Name the file
open(INFO, $file);		# Open the file
@lines = <INFO>;		# Read it into an array
close(INFO);			# Close the file
print @lines;			# Print the array

The open function opens a file for input (i.e. for
reading). The first parameter is the filehandle which allows Perl
to refer to the file in future. The second parameter is an expression
denoting the filename. If the filename was given in quotes then it is taken
literally without shell expansion. So the expression
'~/notes/todolist' will not be interpreted successfully. If
you want to force shell expansion then use angled brackets: that is, use

<~/notes/todolist> instead.

The close function tells Perl to finish with that file.

There are a few useful points to add to this discussion on filehandling.
First, the open statement can also specify a file for output
and for appending as well as for input. To do this, prefix the filename
with a > for output and a >> for
appending:

open(INFO, $file);	# Open for input
open(INFO, ">$file");	# Open for output
open(INFO, ">>$file");	# Open for appending
open(INFO, "<$file");	# Also open for input

Second, if you want to print something to a file you've already
opened for output then you can use the print statement with an
extra parameter. To print a string to the file with the INFO filehandle use

print INFO "This line goes to the file.\n";

Third, you can use the following to open
the standard input (usually the keyboard) and standard output
(usually the screen) respectively:

open(INFO, '-');	# Open standard input
open(INFO, '>-');	# Open standard output
In the above
program the information is read from a file. The
file is the INFO file and to read from it Perl uses angled brackets.
So the statement
@lines = <INFO>;
reads the file denoted by the filehandle into the array @lines. Note that
the <INFO> expression reads in the file entirely in one go. This
because the reading takes place in the context of an array variable. If
@lines is replaced by the scalar $lines then only the next one line would
be read in. In either case each line is stored complete with its newline
character at the end.


original link

CVS: Using loginfo to send mail with diffs on Win32/CVSNT

Like presumably so many other CVS administrators, I was faced with the task of making my CVS server send mail every time somebody commits something. The additional spice in the soup was the platform, Win32. Just sending the CVS log message and the files modified is trivial, but it all gets a bit more complicated when you want to include a unidiff of the changes.

In this article, I will present some of the problems involved and a Perl-based solution. If you wish to understand the specifics, some basic knowledge of Perl is necessary. If you just want to get the source, it is available for download - but please note that the code is not luxuriously documented! Much of your ability to understand the implementation (and modify its behaviour) probably depends on reading and understanding this text. You will also probably at least need the Installation Instructions.

The solution I present here is designed to work on Win32 servers with ActiveState">http://www.activestate.com/Products/ASPN_Perl/">ActiveState ActivePerl and CVSNT. It is probably fairly easy to make this use another Perl distribution or the standard-class CVS server, but you don't want to try to port this to another OS. If you're running on unix, there are solutions available for you already.

A quick revision: How does loginfo work?

Each time a commit is made, CVS searches through an administrative file called loginfo. It is a text file whose each line contains a regexp and a command line, separated by a space. The lines are searched in order, and the regexp matching the directory being handled is executed. The special regexp "ALL" is always executed, and the command line with regexp "DEFAULT" when no other expression matches.

The command line is executed, and the log message (the stuff that usually pops up in a editor when committing) is piped to the executing process' stdin. Information to the logging task can also be transmitted through command-line parameters. There are two different approaches to this, actually.

First, CVS has several variables which are prefixed by $ - a list of them is available. Second, a special format string can be used as a parameter. For example, a format string of %{sVv} produces a string that contains file names (s), old revisions (V) and new revisions (v) for the changes. Missing revisions are marked as NONE. Information about each file is separated by commas, file specifications are separated by spaces. The first file specification is always the directory being accessed relative to the cvsroot. So, for example the string myproject/code a.c,1.4,1.5 b.c,NONE,1.1 c.c,1.8,NONE means that in directory myproject/code, the file a.c is updated from revision 1.4 to 1.5, file b.c is created (its old revision being NONE) and file c.c is deleted (its new revision is NONE).

So what are the problems?

It's fairly trivial to create a program that reads from stdin, parses some parameters and outputs the stuff into a log file or even sends the mail. However, it gets way more complicated when you want the diffs in. The problem starts with the fact that you don't get the diff information piped from cvs (like you get the log message) or through parameters (like you get the file modification list). Therefore, you will have to run cvs diff to get the diff and then attach it to your mail.

Running diff isn't problematic, but the cvs locking scheme is. If you run diff directly from the task you spawned off using loginfo, it will note that "oops, the repository is locked because of a commit, I'd better wait". Yes, you guessed right - it's the commit process that we're supposed to mail about right now! So, we end up locking the cvs task forever, since the commit won't certainly finish until the loginfo process is done, and it won't be done until the commit lock preventing diffing has vanished...

So let's just fork?

For those of you who don't know what fork means, it's a unixish concept of creating a nigh-exact duplicate of the current running process, which can then run totally separately from its parent. So effectively, the execution of the code forks, hence the name.

This is where the multitasking model of unix-based systems is cool. Most scripts running on unix simply fork, so that the original task can exit and let the child do the job. That's nice, but since the multitasking model of Windows is based on threads rather than forks, we're out of luck.

ActiveState Perl emulates fork, but as of version 5.6.1, the emulation is based on threaded implementation of the interpreter. Essentially, that means that the Perl script is run just fine, but in the same process context as the original parent. The process that contains both the threads terminates when both of the forks have called exit(). Thus, the parent doesn't exit and the commit lock is never released. So, forking doesn't help us here - at least until ActiveState implements a split-process fork() model.

But the problem can be solved, it's just ugly...

So essentially what you need to do is get the stuff running in two processes instead of two threads. Doing this is relatively easy, but doesn't look good. In this example, we do it by having two Perl scripts: the other is mail.pl which is called from loginfo, and the other is mailbe.pl (where be stands for backend), which is in turn called by mail.pl.

Mail.pl calls mailbe.pl by running the command interpreter, with a command line of "start perl somepathhere\mailbe.pl parameters". This makes Windows start a new process, a Perl interpreter, which then runs the backend. Since the backend is a separate process, it's free to do whatever it wishes with cvs - if it can't make diffs because of a lock in the repository, it will wait. The important thing here is that waiting will not permanently block the execution of anything else - mail.pl exited already, and thus the cvs commit process continues.

mailbe.pl contains a "sleep 5" to wait for five seconds before doing anything. This is not strictly necessary, but it's an optimization. If we don't add it, it almost always bumps to a lock when trying to do the diff, since the cvs commit hasn't finished yet. It would work even without the delay, but then cvs would end up in the "Waiting for somebody's lock on ..." loop, and then it takes at least 15 seconds before it tries again.

There is one more issue here. When mail.pl spawns the new backend task, the content waiting in stdin is not conveyed (if we did a fork(), it would - but this is not possible as already stated). Thus, mail.pl writes out the data in stdin to a temporary files and passes its name as a parameter to mailbe.pl, which then in turn reads the file, processes it and finally deletes the temporary file. Ugly, but it works.

Call syntax and installation

I warmly recommend that you put the perl files into your CVSROOT directory and add their names into the checkoutlist file. Also, you should have perl.exe in your path and .pl files associated to it. You can do otherwise, but these instructions are based on these presumptions. Improvise if necessary.

mail.pl takes three parameters: the CVS loginfo string with the format specifier %{sVv}, the name of the user committing the changes (whatever you want to show up in the mail) and the address the message should be sent to. mailbe.pl takes the name of the file containing the CVS log information (see above) followed by all the params mail.pl takes. Examine mail.pl to understand this better.

Basically, you can just add the following line to your loginfo file:

DEFAULT perl d:\cvsnt\repository\cvsroot\mail.pl %{sVv} $USER cvsnotifications@mydomain.com

But before you commit, edit mailbe.pl, particularly the end of it. The version downloadable from this page uses a Perl module called NTsendmail. I recommend you use it. That way you can only change your mail server address and the from name near the end of the Perl script and off you go. If you want to use another mailing system, replace the NTsendmail specific part of mailbe.pl with your own implementation.



original link


11
Feb
2005

HowTo: Crypted Partitions In Linux

-- to see disks and partitions
cat /proc/partitions
-- partition-util
parted /dev/hdd
--help
(parted) help
-- create partition with fs-type-reservation (without fs)
(parted) mkpart primary ext3 0 120000
-- double-check
(parted) print
-- label the new partition
e2label /dev/hdd1 /secretdisk
-- make filesystem on the new partition
/sbin/mkfs -t ext3 /dev/hdd1
-- create the new mountpoint
mkdir /secretdisk
-- create the new mapper
/usr/bin/cryptsetup -y create secretdisk /dev/hdd1
-> password for secretdisk

-- make the conversion
dd if=/dev/hdd1 of=/dev/mapper/secretdisk bs=4k
-- mount it
/bin/mount /dev/mapper/secretdisk /secretdisk
---> use it !!!

Apache::ASP

Apache::ASP provides an Active Server Pages port to the Apache Web Server with Perl scripting only, and enables developing of dynamic web applications with session management and embedded Perl code. There are also many powerful extensions, including XML taglibs, XSLT rendering, and new events not originally part of the ASP API!
...
...
original link

Browser ID (User-Agent) Strings (Part II)

Life on the edge

Yeah well. Most of us use MS Windows or Linux on pretty normal Intel or PPC architectures but there are some people who like to live on the edge. Here is the modest (like one, man) beginning of our "exotic strings" list.

Mozilla/1.10 [en] (Compatible; RISC OS 3.70; Oregano 1.10)
Explanation: Browser Oregano (and these guys have got a choice of browsers!) running on the ACORN RISC PC. From Stanislas Renan.

Crawlers and Robots

This list is being discontinued since there are already a number of locations where you can get much better information than is maintained here. One of the best is also the home of the robots.txt site which describes how to stop (politely behaved) robots from looking at parts of your site using the robots.txt file. The current entries may now be seriously out of date.

FAST-WebCrawler/2.2.6 (crawler@fast.no; http://www.fast.no/faq/faqfastwebsearch/faqfastwebcrawler.html)
Explanation: ??
Googlebot/2.1 (+http://www.googlebot.com/bot.html)
Explanation: Google search robot.
ia_archiver
Explanation:Indexing engine from www.alexa.com - not known if currently active.
Mozilla/4.0 compatible ZyBorg/1.0 (ZyBorg@WISEnutbot.com; http://www.WISEnutbot.com)
Explanation: ZyBorg search engine good web page spelling out clearly the search conditions.
Sqworm/2.9.85-BETA (beta_release; 20011115-775; i686-pc-linux
Explanation: Sqworm.com search engine. No obvious place to go on the site to get information on its search robot.

Browser Help Objects

This section shows strings from a number of plug-ins or proxy services whose job in life (they have decided) is to help (maybe) the user as they meander throughout the 'net. We are going to try and build a list with links to the plug-in site and - with your help - categorise them both as to how they get installed - e.g. willing user or stealth and wheter they are benign or nasty. In may cases we just show the additional string that will result rather than a full browser string - we're not gonna install nasty things just for your information now are we - well not willingly we're not!

..FunWebSearch...

Explanation: MyWebSearch (or FunWebProducts enhanced browser - not classified as sypware or adware. To remove it - go here. Info from Chris Gulutz - thanks.

Mozilla/4.0 (compatible; Powermarks/3.5; Windows 95/98/2000/NT)

Explanation: PowerMarks seems to be a benign Bookmark enhancement for most of the popular browsers - not classified as sypware or adware. Info from David Ross - thanks.

Mozilla/5.0 (compatible; IDZap)

Explanation: IDZap enhanced browser. OK its done a good job and just defeated every browser detection string - now what.

Mozilla/3.01Gold (Macintosh; I; 68K)

Explanation: Life behind a junkbuster proxy. This is MSIE 5.0 on a Windows'95 PC - pretty obvious really! String from Phil Hibbs - thanks.

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ESB{A8417D9D-5087-4807-9D73-9E09290256CD})

String from Remco de Vijlder. Axel Kollmorgen and Eugene Sadhu suggest that it is most likely EasySearchBar (ESB - geddit). Jim Rofkar and Eugene Sadhu both add another possibility - Easy Start Bar for laptops. Thanks guys.




Page Validation Services

Page validation services are great until you try 'em with dynamically generated pages based on the browser - then you gotta know what they send.

Bobby/4.0.1 RPT-HTTPClient/0.3-3E

Explanation: A tool that checks web pages for Accessibility - Section 508 and W3C WCAC. String from Erik Bolsø

W3C_Validator/1.183 libwww-perl/5.64

Explanation: The W3C validation service string supplied when you request page validation by URI.

Jigsaw/2.2.0 W3C_CSS_Validator_JFouffa/2.0

Explanation: The W3C CSS validation service string.

Potentially Unpleasant Things

These strings or partial strings may have unknown side effects or be downright malicious depending on who is using them. You may want to know about 'em when they are visiting.

vobsub

Explanation: Contributed by Jan Praestkjaer. A CD ripping plug-in. More information may obtained here.

DigExt

Explanation: Contributed by John Bridges. 'DigExt' can appear in a MSIE browser string and is potentially pretty nasty. If you ask for content to be available off-line in certain versions of MSIE (we saw it on 5.0 and 4.x) then MSIE will grab a lot of stuff from the sites you visit and slave it in its temporary internet files. Pretty unpleasant stuff since it chews up your and the sites bandwidth. Sounds like a nice option but MS don't tell you the consequences. Now if I just knew where the option was I'd disable it but since I just upgraded to MSIE 6.0 (cos my 5.0 kept crashing after I refused an automatic update - any connection!! Oh and by the way in case you think we are prejudiced we also upgraded to NS6) I can't find any of this stuff and my browser string doesn't show 'DigExt' anymore - is this another mystery! If you are interested to get more info on the pernicious 'DigExt' John provided this link.

This may have morphed in the first string shown under the MSIE list - it contains 'MSIECrawler' - thanks to Adam Hauner.

Mystery Strings and Questions

  1. Anyone recognize the CS 2000 in this string:
    Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4.2) Gecko/20021112 CS 2000 7.0/7.0
    

    String from Willem van Nunen. Answer from Richard Aspden it is "the CompuServe 2000 application, which had Gecko built-in. AOL was going to do the same with it's own native software (AOL owning CS), but decided to use IE in the end anyway.". Many thanks.

  2. Anyone recognize the ESB stuff in this string:
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ESB{A8417D9D-5087-4807-9D73-9E09290256CD})
    

    String from Remco de Vijlder. Axel Kollmorgen, Eugene Sadhu and Jim Rofkar all made suggestions - we moved this one to the BHO section with the best links we can find.

  3. Anyone recognize the DIL0001021 in this string:
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DIL0001021)
    

    String from John Dobson.

  4. Anyone recognize the H010818 in this string:
    Mozilla/4.0+(compatible;+MSIE+5.5;+Windows+NT+4.0;+H010818)
    

    String from Jim Rofkar. Possible Answer: From Eugene Sadhu "Interestingly this string "H010818" is found in the registry of WinME machines and may have some correlation to the WindowsUpdate App. Perhaps a browser used after visiting the WindowsUpdate site will send this string to other machines on the same session.
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform\H010818" Many thanks.

  5. Anyone recognize this CLSID like string in a browser:
    Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0;+{4E449FBB-3E07-4F3B-AF93-9F441086A756};+.NET+CLR+1.1.4322)
    Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0;+{8E13D179-78A2-4C06-9BFC-EA5BF2EE1750})
    

    String from Jim Rofkar - followed by the answer from Jim also. These may indicate the browser has a BHO (Browser Helper Object) software installed (perhaps unwittingly) from either LOP foistware (site link appears broken) or WurlMedia. This site seems to keep a reasonably up-to-date list of nasty things. If you think you have got some nasty stuff on your browser just type 'hijack' into a google search and follow the most promising links.

  6. ...SURF...

    Anyone know what application the word SURF in a browser string comes from? String from Erik Nelson. Tyler Bannister writes" One of our students is having a problem with her browser pre-fetching every page she reads in Internet Explorer. The problem doesn't occur in Netscape, thus it seems likely that "SURF" is some type of browser help object for IE and probably malware" - thanks - anyone got more on this one?

  7. Mozilla/4.01 (Compatible; Acorn Phoenix 2.08 [intermediate]; RISC OS 4.39) Acorn-HTTP/0.84

    Anyone know what the browser being used is? String from Erik ?. Answer from Jim Rofkar. An early port of Phoenix (remember the pre firebird pre firefox mozilla browser!) onto the ACORN RISC OS. For all you ACORN fans current port is called Rozilla.

  8. Anyone recognize this one:

    mozilla/4.0 (compatible; msie 6.0; windows 98; ypc 3.0.2; yplus 4.4.01d)

    Anyone know what the ypc and yplus is? String from Bruce Preston.

    Answer: It's Yahoo Parental Controls which seems to be available to you if you sign-up with Yahoo. Answer from John Pye - thanks.

  9. Anyone recognize this one:

    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FREE; .NET CLR 1.1.4322)

    Anyone know what the FREE is? String from Jean Christophe Olivain. Axel Kollmorgen writes "seems to be a customized version of IE made by free.fr or a related company. all the "FREE" agents in my logs are from france and their ip's related somehow with free.fr". Thanks Axel. Confirmation from Symon Rottem who says that the isp free provides an installation CD with a customised version of MSIE. This one is now dead - maybe we should move to the MSIE strings.

  10. Anyone recognize this one:

    Mozilla/4.5 RPT-HTTPClient/0.3-2

    We suspect this may be an e-mail extractor program, but we could be wrong. Anyone got a definitive answer? String from Michael Wilcox.

    Answer: It's an HTTP client library. Answer from Eugene Sadhu - thanks.

  11. Anyone recognize the KTXN part of this string:

    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; KTXN)

    Anyone got any idea? String from Chug Yang.

  12. Anyone recognize this one:

    SUNPlex 4.1 (Trusted Solaris 8 Operating Environment; Solaris 8 OE; Sun Fire 15K)

    Seems to be from a SUN Secure cluster - benign application or something more sinister? String from Erik's ? logs.

    We got this in response: "SUNPlex Manager is a web-based administration tool for the SunCluster 3 clustering software. Trusted Solaris is a secured version of the Solaris operating system (I believe it at one point was rated C2 in the Orange Book but I don't know for sure what it is now). Sun Fire 15K is the Godzilla of servers, one of my favorite machines to work on, and makes one awesomungus web browser." Thanks to Joe George.

  13. Anyone recognize this one:

    Mozilla/3.0 (compatible; HP Web PrintSmart 04b0 1.0.1.34)

    String from Dan Johnson's logs.

    Answer: Eugene Sadhu writes "HP Web PrintSmart software is a tool for creating custom printed documents from Web pages that you retrieve from anywhere on the Web." His view is its probably not available now (we checked and could only a historic reference n HP's pages). Thanks Eugene.

  14. Anyone recognize this one:

    Mozilla/4.0 (compatible; MSIE 5.0; Win3.1; ATHMWWW1.1;)

    String from Dan Johnsons logs. MSIE 5.0 does not run on windows 3.1 so its something else. Just someone playing with browsers ids?

    Answer: This is the browser string from Excite@home's custom browser so we suspect is version 3.1 runing on a Windows platform - anyone know the base technology e.g. custom MSIE or what. Answer from Eugene Sadhu - thanks.

  15. Anyone recognize this one:

    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)

    Answer: Neal Blomfield writes "The following user agent string listed as a mystery string on your website looks like IE6 on Win2k running both verion 1 (.NET CLR 1.0.3705) and version 1.1 (.NET CLR
    1.1.4322) of the .NET framework". Sounds plausible to us. Thanks Neal. Bobby Mcgee also provided this link http://www.httprevealer.com/usage_dotnet.htm to help identify folks using the .NET infrastructure. Thanks Bobby.

  16. What does 'DigExt' mean (solved - credit to John Bridges see here).
  17. Anyone recognize the browser or OS:

    'Mozilla/4.0 (compatible; ICS 1.2.105)'

    Answer: Marc Schneider suggests it's probably from Novell's Internet Caching system. We also got confirmation of this from Eugene Sadhu "It is most probably from the Compaq TaskSmart C-Series server, in fact, one that had the upgrade patch to build 1.2.105 installed (released 15 Sep 2000)" Mystery solved - thanks guys.

  18. Anyone know what the 'U' is in many Linux browser strings.
    Answer: From Rickard Anglerud - thanks: It defines security level and may have one of the following values:
    • N for no security
    • U for strong security
    • I for weak security
  19. Anyone recognise this baby?
    Sqworm/2.9.85-BETA (beta_release; 20011115-775; i686-pc-linux
    Submitted by: Mike van Riel

    Answer: From Evan Walters - thanks: Its a new crawler from Sqworm.com a search site - a most unfortunate name don't you think (maybe they thought it was funny or something).

Our Browser rants

Maybe you got here by mistake or just scrolled off the bottom, however now that we got your attention here are some of our rants:

  • Browser strings II: There is no standard for browser strings. There is a passing reference and a single example in the RFC 1945 and 2096 (The HTTP specs). In the meantime chaos reigns. Folks have concerns about privacy, some about security and buggy software so the operational solution is to allow the user to set whatever string they want which defeats the whole objective. We think the W3C (or maybe IETF) should standardize. We have written to the W3C since we think its more in their domain. We don't care what the standard is - but we'd like one!

  • Browser strings: We gotta support the main browsers. We use 5 tests in our Apache server to tell us what Javascript/HTML/CSS to deliver for the DOM and CSS variations. We don't plan to add a 6th test (our objective in life is not to have the longest browser detection script in the world). We check the Mozilla equivalence level, MSIE number, and now for 'Gecko'. If any browser provides this information correctly we'll generate good results and the new browser gets to piggy-back to fame and stardom .. if not well..... Terribly sorry about that - don't know what came over us!

  • Unsupported Browsers: Well we finally decided to give in and we now place the following notice on our pages for folks whose browser we don't support 'If you are happy it's OK - but your browser is giving a less than optimal experience on our site. You could, at no charge, upgrade to a W3C STANDARDS COMPLIANT browser such as Mozilla'. Yes it messes up the page layout but is probably messed up anyway.

  • Netscape 4.x: We regard this browser as dead. Its quirks - which were ground breaking at the time - are now just a pain. We have stopped adding new capability for this browser. We still check pages load correctly but that's it. End of an era. But the beginning of another - long live Gecko.

  • W3C DOM Support: Seems to us we are making a mistake by doing all this cross-browser work. With the advent of the W3C DOM why should we site owners reward a non-compliant browser by putting effort and code into supporting something quirky. OK we have no choice with MSIE - whatever its quirks the majority of site visitors by far will be using it. And from v6 it's NOT BAD. But other browsers - we will increasing treat them as if they did not support Javascript and we are considering putting a note on the page to the effect that their browser is not W3C compliant. Comments?!

  • Our Opinion - read with care. Was a time when there was only Netscape, then MSIE destroyed Netscape and took over - because it had a better browser. But today MSIE 6.0+ is a very ordinary browser - fat and feature poor. Now we have multiple very high quality Mozilla versions (Mozilla, Phoenix/Firebird, Camino, NS 7.x), the Gecko clones (K-Meleon is our current browser of choice) and now Opera 7+ which looks great (love that Aqua menu bar) is very small, has great CSS2 support and reasonable DOM support and is feature packed. Why does MSIE still have that 80+% market share? We don't understand it. End of opinion!



Browser ID (User-Agent) Strings (Part I)
logo

vireas

Suche

 

Aktuelle Beiträge

C i s c o  V...
can get always the latest version of C i s c o  V...
vireas - 12. Jul, 11:07
WM5: Custom text on today...
You can set a small custom text message on the bottom...
vireas - 15. Mai, 21:44
WM5: Increase Performance...
Boost Windows Mobile 5 performance up to 20 percent [HKLM\System\Stor ageManager\FATFS]...
vireas - 15. Mai, 21:42
WM5: Speed Up your Pocket...
This tweak might help improving visual performance...
vireas - 15. Mai, 21:41
Windows Ordner
-Es ist nicht möglich unter Windows einen Ordner anzulegen...
vireas - 22. Feb, 13:37

Archiv

April 2025
Mo
Di
Mi
Do
Fr
Sa
So
 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
 
 
 
 
 
 

Status

Online seit 7702 Tagen
Zuletzt aktualisiert: 12. Jul, 11:07
vireas-plug

KnowHow
KnowHow - Mobiles
Tools
Profil
Abmelden
Weblog abonnieren