Linux - Convert C++ style comments to standard C

Egyik C-ben írt progimat át akarom konvertálni ISO C90-es formába, amely GCC-nél a -pedantic kapcsolóval értelmezhető. Írtam rá egy szkript-et a // jellel kezdődő kommentek átkonvertálására.

Kicsi szivatós volt a dolog, mert pl. a \ jeleket és a tab-okat teljesen kikapta a progim, ezért azt ki kellett trükköznöm.

Esetleg megírhattam volna még python-ban, de mivel úgy néz ki csak egyszer kell nekem, most több időt nem ér.

----
[code]
#!/bin/bash

NUM=$( echo hello | md5sum | grep -ioE "^[^ ]*" )
NUM2=$( echo hello2 | md5sum | grep -ioE "^[^ ]*" )

if [ -z $1 ]; then echo error: file name missing; exit 1; fi

cat $1 | sed -r s/"^"/"$NUM"/ | sed -r s/"\\\\"/"$NUM2"/ | while read LINE; do

if echo -e "$LINE" | sed -r s/"^$NUM"/""/ \
| sed -r s/"$NUM2"/"\\\\"/ | grep -q -iP "^[\t ]*[^:]*//"; then
echo -e "$LINE" | sed -r s/"^$NUM"/""/ | sed -r s/"$NUM2"/"\\\\"/ \
| sed -r s/"\/\/"/"\/\*"/ | sed -r s/"$"/" \*\/"/
else
echo -e "$LINE" | sed -r s/"^$NUM"/""/ | sed -r s/"$NUM2"/"\\\\"/
fi

done

# print wrong comments when it is within another comment block
# cat file.c | tr "\n" " " | grep --color -ioE "\/\*[^*]*\/\* *[^ ]*"
[/code]

Hozzászólások

hat, ha nincs a programodban valami nagyon beteg dolog (kommentben komment, vagy -- najo, az nem annyira beteg, de -- "..."-ben egy //), akkor egy


sed 's|//\(.*\)$|/\*\1\*/|g'

is megteszi szerintem... vagy?

Par eszrevetel a tobbitol fuggetlenul:

- script belso valtozoihoz kisbetus irasmod javasolt
- en a kiechozott dolgokat is "idezojelen belul" teszem, biztos, ami biztos
- sed egy sorban is kepes tobb utasitast vegrehajtani pl. igy:

 echo foo | sed 's/f/b/;s/$/k/'

- cat $valtozo | sed helyett lehet sed 'muvelet' $valtozo' format hasznalni