home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / ckc190.zip / ckustr.sed < prev    next >
Text File  |  1993-06-30  |  1KB  |  55 lines

  1. #! /bin/sh
  2. # Special cc preprocessor for using mkstr(1) to extract strings from the
  3. # kermit5 source.  Change the "CC=cc" line to "CC=./ckustr.sed" to use
  4. # string extraction.  NOTE: the file ckustr.c might need the StringFile
  5. # declaration modified to suit local system requirements.  When installing
  6. # the kermit executable be sure to install kermit.sr and make it readable
  7. # by the public (mode 444).
  8.  
  9. STRINGS=kermit5.sr
  10.  
  11. # Get filename and arguments.
  12. initargs=$@
  13. while [ -n "$1" ]
  14. do
  15.     if [ $1 = -o ]
  16.     then
  17.         exec cc $initargs
  18.         exit 1
  19.     fi
  20.     if [ `expr substr $1 1 1` = - ]
  21.     then
  22.         if [ $1 != -c ]
  23.         then
  24.             args="$args $1"
  25.         fi
  26.     else
  27.         csrc=$1
  28.     fi
  29.     shift
  30. done
  31.  
  32. # Only process compilations, and then only for certain files.
  33. if [ $csrc = ckustr.c -o $csrc = ckwart.c ]
  34. then
  35.     exec cc $initargs
  36.     exit 1
  37. fi
  38.  
  39. # String extractions
  40. echo Extracting strings from ${csrc}...
  41. cc -E $args $csrc > xxmk.c
  42. sed -e 's/ferror(/strferrorf(/'                \
  43.     -e 's/perror("/strperror("/'            \
  44.     -e 's/experror(/strexperrorf(/'            \
  45.     -e 's/sprintf(\([^,][^,]*\),[ ]*\("[^"]*"\)\([,)]\)/strsrerror(\2, \1\3/' \
  46.     -e 's/fprintf(\([^,][^,]*\),[ ]*\("[^"]*"\)\([,)]\)/strfrerror(\2, \1\3/' \
  47.     -e 's/printf("/strprerror("/'                \
  48.     xxmk.c > mk.c
  49. mkstr - $STRINGS xx mk.c
  50. sed -e 's/^# \([0-9]\)/#line \1/' xxmk.c | xstr -c -
  51. echo Compiling...
  52. cc -Dstrferrorf=ferror -Dstrexperrorf=experror $args -c x.c
  53. mv x.o `basename $csrc .c`.o
  54. rm -f x.c mk.c xxmk.c
  55.