Copyright (C) 2016 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html#License

Copyright (c) 2002-2010, International Business Machines Corporation and others. All Rights Reserved.
udata: Low level ICU data

This sample demonstrates
    Using the low level ICU data handling interfaces (udata) to create 
 and later access user data.
         
Files:
    writer.c       C source for Writer application, will generate data file to be read by Reader.
    reader.c       C source for Reader application, will read file created by Writer
    udata.sln      Windows MSVC workspace.  Double-click this to get started.
    udata.vcproj   Windows MSVC project file

To Build udata on Windows
    1.  Install and build ICU
    2.  In MSVC, open the workspace file icu\samples\udata\udata.sln
    3.  Choose a Debug or Release build.
    4.  Build.

To Run on Windows
    1.  Start a command shell window
    2.  Add ICU's bin directory to the path, e.g.
            set PATH=c:\icu\bin;%PATH%
        (Use the path to where ever ICU is on your system.)
    3.  cd into the udata directory, e.g.
            cd c:\icu\source\samples\udata\debug
    4.  Run it
            writer
            reader
    IMPORTANT: On some systems, the reader and writer executables may not be in the same directory.  If this is the case, this will likely cause a problem with reader looking for the .dat file in the wrong directory).

To Build on Unixes
    1.  Build ICU.  
        Specify an ICU install directory when running configure,
        using the --prefix option.  The steps to build ICU will look something
        like this:
           cd <icu directory>/source
           runConfigureICU <platform-name> --prefix <icu install directory> [other options]
           gmake all
           
    2.  Install ICU, 
           gmake install
 
    3.  Compile
           You will need to set ICU_PATH to the location of your ICU source tree, for example ICU_PATH=/home/srl/icu   (containing source, etc.)
           cd <icu directory>/source/samples/udata
           gmake ICU_PATH=<icu source directory> ICU_PREFIX=<icu install directory)
           
 To Run on Unixes
           cd <icu directory>/source/samples/udata
           gmake ICU_PREFIX=<icu install directory>  check
               -or- 

           export LD_LIBRARY_PATH=<icu install directory>/lib:.:$LD_LIBRARY_PATH
           writer
           reader
           
 Note:  The name of the LD_LIBRARY_PATH variable is different on some systems.
        If in doubt, run the sample using "gmake check", and note the name of
        the variable that is used there.  LD_LIBRARY_PATH is the correct name
        for Linux and Solaris.

