1#!/bin/sh
2
3PROTOC_LEGACY=no
4
5if ! protoc-c --version | grep "protobuf-c 1." > /dev/null; then
6	PROTOC_VER=`protoc-c --version | grep protobuf-c | cut -d' ' -f 2`
7	if [ "$PROTOC_VER" = "" ]; then
8		echo
9		echo "########################################"
10		echo "# WARNING"
11		echo "########################################"
12		echo
13		echo "protoc-c < 1.0.0 found"
14		echo "The output will be fixed to match the new API, but it's better to update."
15		echo
16		PROTOC_LEGACY=yes
17	else
18		echo "Invalid protoc-c version. Required 1.x.y, but $PROTOC_VER found."
19		exit -2
20	fi
21fi
22
23protoc-c --c_out=. packets.proto
24
25if [ $? != 0 ] ; then
26	exit -1
27fi
28
29if [ "x$PROTOC_LEGACY" = "xyes" ]; then
30	sed -i 's/<google\/protobuf-c\/protobuf-c.h>/"protobuf.h"/g' packets.pb-c.h
31
32	# fix protoc-c < 0.14 output
33	if ! cat packets.pb-c.c | grep "PROTOBUF_C_NO_DEPRECATED" > /dev/null; then
34		sed -i 's| NULL,NULL \+/\* reserved1, reserved2 \*/| 0, 0, NULL, NULL|g' packets.pb-c.c
35	fi
36
37	# translate 0.15 output to 1.0.2
38	sed -i 's/PROTOBUF_C_BEGIN_DECLS/PROTOBUF_C__BEGIN_DECLS/g' packets.pb-c.h
39	sed -i 's/PROTOBUF_C_END_DECLS/PROTOBUF_C__END_DECLS/g' packets.pb-c.h
40	sed -i 's/PROTOBUF_C_ASSERT/assert /g' packets.pb-c.c
41	sed -i 's/PROTOBUF_C_OFFSETOF/offsetof/g' packets.pb-c.c
42	sed -i 's/PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC/PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC/g' packets.pb-c.c
43	sed -i 's/PROTOBUF_C_ENUM_DESCRIPTOR_MAGIC/PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC/g' packets.pb-c.c
44else
45	sed -i 's/<protobuf-c\/protobuf-c.h>/"protobuf.h"/g' packets.pb-c.h
46fi
47
48mv packets.pb-c.h include
49mv packets.pb-c.c src
50