ckustr.sed
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:2k
源码类别:

通讯/手机编程

开发平台:

Windows_Unix

  1. #! /bin/sh
  2. # Special cc preprocessor for using mkstr(1) to extract strings from the
  3. # kermit 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. STRINGS=cku195.sr
  9. # Get filename and arguments.
  10. initargs=$@
  11. while [ -n "$1" ]
  12. do
  13. if [ $1 = -o ]
  14. then
  15. exec cc $initargs
  16. exit 1
  17. fi
  18. if [ `expr substr $1 1 1` = - ]
  19. then
  20. if [ $1 != -c ]
  21. then
  22. args="$args $1"
  23. fi
  24. else
  25. csrc=$1
  26. fi
  27. shift
  28. done
  29. # Only process compilations, and then only for certain files.
  30. if [ $csrc = ckustr.c -o $csrc = ckwart.c ]
  31. then
  32. exec cc $initargs
  33. exit 1
  34. fi
  35. # String extractions
  36. echo Extracting strings from ${csrc}...
  37. cc -E $args $csrc > xxmk.c
  38. sed -e 's/ferror(/strferrorf(/'
  39.     -e 's/perror("/strperror("/'
  40.     -e 's/experror(/strexperrorf(/'
  41.     -e 's/sprintf(([^,][^,]*),[ ]*("[^"]*")([,)])/strsrerror(2, 13/' 
  42.     -e '/sprintf(([^,][^,]*),/{N
  43. s/sprintf(([^,][^,]*),n[ ]*("[^"]*")([,)])/strsrerror(2, 13/
  44. }'
  45.     -e 's/fprintf(([^,][^,]*),[ ]*("[^"]*")([,)])/strfrerror(2, 13/' 
  46.     -e '/fprintf(([^,][^,]*),/{N
  47. s/fprintf(([^,][^,]*),n[ ]*("[^"]*")([,)])/strfrerror(2, 13/
  48. }'
  49.     -e 's/printf[ ]*("/strprerror("/'
  50.     -e '/printf[ ]*(/{N
  51. s/printf[ ]*(n"/strprerror("/
  52. }' xxmk.c > mk.c
  53. mkstr - $STRINGS xx mk.c
  54. sed -e 's/^# ([0-9])/#line 1/' xxmk.c | xstr -c -
  55. echo Compiling...
  56. cc -Dstrferrorf=ferror -Dstrexperrorf=experror $args -c x.c
  57. mv x.o `basename $csrc .c`.o
  58. rm -f x.c mk.c xxmk.c