Home | History | Annotate | Download | only in os400
      1 #!/usr/bin/qsh
      2 #   Copyright (C) 2000-2011, International Business Machines
      3 #   Corporation and others.  All Rights Reserved.
      4 #
      5 # Authors:
      6 # Ami Fixler
      7 # Barry Novinger
      8 # Steven R. Loomis
      9 # George Rhoten
     10 # Jason Spieth
     11 #
     12 # Shell script to unpax ICU and convert the files to an EBCDIC codepage.
     13 # After extracting to EBCDIC, binary files are re-extracted without the
     14 # EBCDIC conversion, thus restoring them to original codepage.
     15 
     16 if [ -z "$QSH_VERSION" ];
     17 then
     18 	QSH=0
     19     echo "QSH not detected (QSH_VERSION not set) - just testing."
     20 else
     21 	QSH=1
     22 	#echo "QSH version $QSH_VERSION"
     23 fi
     24 export QSH
     25 
     26 # Set the following variable to the list of binary file suffixes (extensions)
     27 
     28 
     29 #****************************************************************************
     30 #binary_suffixes='ico ICO bmp BMP jpg JPG gif GIF brk BRK'
     31 #ICU specific binary files
     32 #****************************************************************************
     33 binary_suffixes='brk BRK bin BIN res RES cnv CNV dat DAT icu ICU spp SPP xml XML nrm NRM'
     34 data_files='icu/source/data/brkitr/* icu/source/data/locales/* icu/source/data/coll/* icu/source/data/rbnf/* icu/source/data/mappings/* icu/source/data/misc/* icu/source/data/translit/* icu/source/data/unidata/* icu/source/test/testdata/*'
     35 
     36 #****************************************************************************
     37 # Function:     usage
     38 # Description:  Prints out text that describes how to call this script
     39 # Input:        None
     40 # Output:       None
     41 #****************************************************************************
     42 usage()
     43 {
     44   echo "Enter archive filename as a parameter: $0 icu-archive.tar"
     45 }
     46 
     47 #****************************************************************************
     48 # first make sure we at least one arg and it's a file we can read
     49 #****************************************************************************
     50 
     51 # check for no arguments
     52 if [ $# -eq 0 ]; then
     53   usage
     54   exit
     55 fi
     56 
     57 # tar file is argument 1
     58 tar_file=$1
     59 
     60 # check that the file is valid
     61 if [ ! -r $tar_file ]; then
     62   echo "$tar_file does not exist or cannot be read."
     63   usage
     64   exit
     65 fi
     66 
     67 # treat all data files as ebcdic
     68 ebcdic_data=$data_files
     69 
     70 #****************************************************************************
     71 # Extract files.  We do this in two passes.  One pass for 819 files and a
     72 # second pass for 37 files
     73 #****************************************************************************
     74 echo ""
     75 echo "Extracting from $tar_file ..."
     76 echo ""
     77 
     78 # extract everything as iso-8859-1 except these directories
     79 pax -C 819 -rcvf $tar_file $ebcdic_data
     80 
     81 # extract files while converting them to EBCDIC
     82 echo ""
     83 echo "Extracting files which must be in ibm-37 ..."
     84 echo ""
     85 pax -C 37 -rvf $tar_file $ebcdic_data
     86 
     87 #****************************************************************************
     88 # For files we have restored as CCSID 37, check the BOM to see if they    
     89 # should be processed as 819.  Also handle files with special paths. Files
     90 # that match will be added to binary files lists.  The lists will in turn
     91 # be processed to restore files as 819.
     92 #****************************************************************************
     93 echo ""
     94 echo "Determining binary files by BOM ..."
     95 echo ""
     96 bin_count=0
     97 # Process BOMs
     98 if [ -f icu/as_is/bomlist.txt ];
     99 then
    100     echo "Using icu/as_is/bomlist.txt"
    101     pax -C 819 -rvf $tar_file `cat icu/as_is/bomlist.txt`
    102 else 
    103    for file in `find ./icu \( -name \*.txt -print \)`; do
    104     bom8=`head -n 1 $file|\
    105           od -t x1|\
    106           head -n 1|\
    107           sed 's/  */ /g'|\
    108           cut -f2-4 -d ' '|\
    109           tr 'A-Z' 'a-z'`;
    110     #Find a converted UTF-8 BOM
    111     if [ "$bom8" = "057 08b 0ab" -o "$bom8" = "57 8b ab" ]
    112     then
    113         file="`echo $file | cut -d / -f2-`"
    114 
    115         if [ `echo $binary_files | wc -w` -lt 200 ]
    116         then
    117             bin_count=`expr $bin_count + 1`
    118             binary_files="$binary_files $file";
    119         else
    120             echo "Restoring binary files by BOM ($bin_count)..."
    121             rm $binary_files;
    122             pax -C 819 -rvf $tar_file $binary_files;
    123             echo "Determining binary files by BOM ($bin_count)..."
    124             binary_files="$file";
    125             bin_count=`expr $bin_count + 1`
    126         fi
    127     fi
    128   done
    129   # now see if a re-extract of binary files is necessary
    130   if [ `echo $binary_files | wc -w` -gt 0 ]
    131   then
    132       echo "Restoring binary files ($bin_count) ..."
    133       rm $binary_files
    134       pax -C 819 -rvf $tar_file $binary_files
    135   fi
    136 fi
    137 
    138 echo "# Processing special paths."
    139 # Process special paths
    140 more_bin_files=$(find icu -type f \( -name '*.zzz' `echo $binary_suffixes | sed -e 's%[a-zA-Z]*%-o -name \*.&%g'` \)  -print)
    141 echo "Restoring binary files by special paths ($bin_count) ..."
    142 rm $more_bin_files
    143 pax -C 819 -rvf $tar_file $more_bin_files
    144 
    145 #****************************************************************************
    146 # Generate and run the configure script
    147 #****************************************************************************
    148 
    149 echo ""
    150 echo "Generating qsh compatible configure ..."
    151 echo ""
    152 
    153 sed -f icu/as_is/os400/convertConfigure.sed icu/source/configure > icu/source/configureTemp
    154 del -f icu/source/configure
    155 mv icu/source/configureTemp icu/source/configure
    156 chmod 755 icu/source/configure
    157 
    158 echo ""
    159 echo "$0 has completed extracting ICU from $tar_file - $bin_count binary files extracted."
    160 
    161