Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > b611ea73723a8287cce23d3124a6eeea > files > 314

howto-sgml-ko-2006-5mdv2010.0.noarch.rpm

#!/bin/bash
# strip-comment.sh: C ¼Ò½º¿¡¼­ ÁÖ¼®(/* ÁÖ¼® */)À» Á¦°ÅÇØ ÁÝ´Ï´Ù.

E_NOARGS=65
E_ARGERROR=66
E_WRONG_FILE_TYPE=67

if [ $# -eq "$E_NOARGS" ]
then
  echo "»ç¿ë¹ý: `basename $0` C-program-file" >&2 # ¿¡·¯ ¸Þ¼¼Áö´Â Ç¥ÁØÃâ·ÂÀ¸·Î.
  exit $E_ARGERROR
fi  

# ÆÄÀÏ Å¸ÀÔÀÌ ¸Â´ÂÁö È®ÀÎ.
type=`eval file $1 | awk '{ print $2, $3, $4, $5 }'`
# "file $1" ÀÌ ÆÄÀÏ Å¸ÀÔÀ» ¿¡ÄÚÇØ ÁØ ´ÙÀ½...
# awk °¡ ù ¹ø° ÇʵåÀÎ ÆÄÀÏÀ̸§À» Áö¿öÁÖ°í...
# ±× °á°ú°¡ "type" º¯¼ö·Î µé¾î°©´Ï´Ù.
correct_type="ASCII C program text"

if [ "$type" != "$correct_type" ]
then
  echo
  echo "ÀÌ ½ºÅ©¸³Æ®´Â ¿ÀÁ÷ C ¼Ò½º ÆÄÀÏ¿¡ ´ëÇؼ­¸¸ µ¿ÀÛÇÕ´Ï´Ù."
  echo
  exit $E_WRONG_FILE_TYPE
fi  


# ¾à°£Àº ½Åºñ½º·¯¿ö º¸ÀÌ´Â sed ½ºÅ©¸³Æ®:
#--------
sed '
/^\/\*/d
/.*\/\*/d
' $1
#--------
# sed ÀÇ ±âº»¿¡ ´ëÇؼ­ ¸î ½Ã°£¸¸ ÅõÀÚ¸¦ Çϸé ÀÌÇØÇϱ⠽±½À´Ï´Ù.


# ÁÖ¼®ÀÌ ÄÚµå¿Í °°Àº ÁÙ¿¡ ÀÖ´Â °æ¿ì¸¦ ó¸®Çϱâ À§Çؼ­´Â 
# Ãß°¡ÀûÀÎ sed ½ºÅ©¸³Æ®°¡ ÇÊ¿äÇÕ´Ï´Ù.
# ¾à°£Àº ¾î·Á¿ï ¼öµµ ÀÖÁö¸¸ µ¶ÀÚµéÀ» À§Çؼ­ ¿¬½À¹®Á¦·Î ³²°Ü ³õ½À´Ï´Ù.

# ¶Ç, À§ ÄÚµå´Â ¿ì¸®°¡ ¹Ù¶óÁö ¾Ê´ø °á°ú·Î¼­
# "*/" À̳ª "/*" ÀÎ ÁÙµµ Áö¿ö¹ö¸³´Ï´Ù.

exit 0


# --------------------------------------------------------------------
# ´ÙÀ½ÀÇ ÄÚµåµéÀº À§¿¡¼­ 'exit 0'À̶ó°í Ç߱⠶§¹®¿¡ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.

# Stephane Chazelas °¡ Á¦¾ÈÇÑ ´Ù¸¥ ¹æ¹ý:

usage() {
  echo "»ç¿ë¹ý: `basename $0` C-program-file" >&2
  exit 1
}

WEIRD=`echo -n -e '\377'`   # ȤÀº WEIRD=$'\377'
[[ $# -eq 1 ]] || usage
case `file "$1"` in
  *"C program text"*) sed -e "s%/\*%${WEIRD}%g;s%\*/%${WEIRD}%g" "$1" \
     | tr '\377\n' '\n\377' \
     | sed -ne 'p;n' \
     | tr -d '\n' | tr '\377' '\n';;
  *) usage;;
esac

# ÀÌ°Í ¿ª½Ã ´ÙÀ½°ú °°Àº °æ¿ì¿¡´Â ¿Àµ¿ÀÛÀ» ÇÕ´Ï´Ù:
# printf("/*");
# ³ª
# /*  /* ÁÖ¼®¿¡ ÁÖ¼®ÀÌ µé¾î°¨ */
#
# Ưº°ÇÑ °æ¿ìµé(¹®ÀÚ¿­¿¡ µé¾î ÀÖ´Â ÁÖ¼®, 
# \"³ª \\" ¸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿­¿¡ µé¾î ÀÖ´Â ÁÖ¼®...)À» ¸ðµÎ ó¸®ÇÒ ¼ö ÀÖ´Â
# À¯ÀÏÇÑ ¹æ¹ýÀº C Æļ­(¾Æ¸¶µµ lex ³ª yacc?)¸¦ ÀÛ¼ºÇÏ´Â °ÍÀÔ´Ï´Ù.

exit 0