Bugfix/c89 compile fixes (#327)

* Fix code to be able to compile with older C89 ANSI compilers

* Convert C++ comments to C89 comments.

* default to std=gnu89

* Fix to enable CMake 3.1 to build on Centos7

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
Steve Karg
2022-08-23 13:37:32 -05:00
committed by GitHub
parent 065d0334ee
commit 95b487ea6f
16 changed files with 85 additions and 56 deletions
+2 -1
View File
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5 FATAL_ERROR) cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project( project(
bacnet-stack bacnet-stack
@@ -475,6 +475,7 @@ if(ZEPHYR_BASE)
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
message(STATUS "BACNET: building for linux") message(STATUS "BACNET: building for linux")
set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/linux) set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/linux)
target_link_libraries(${PROJECT_NAME} PUBLIC m)
target_sources(${PROJECT_NAME} PRIVATE target_sources(${PROJECT_NAME} PRIVATE
ports/linux/bacport.h ports/linux/bacport.h
+2 -2
View File
@@ -96,9 +96,9 @@ BACNET_SRC_DIR = $(realpath ../src)
# Compiler flag to set the C Standard level. # Compiler flag to set the C Standard level.
# c89 - "ANSI" C # c89 - "ANSI" C
# gnu89 - c89 plus GCC extensions # gnu89 - c89 plus GCC extensions
# c99 - ISO C99 standard (not yet fully implemented) # c99 - ISO C99 standard
# gnu99 - c99 plus GCC extensions # gnu99 - c99 plus GCC extensions
CSTANDARD = -std=gnu99 CSTANDARD = -std=gnu89
#build for release (default) or debug #build for release (default) or debug
OPTIMIZATION ?= -Os OPTIMIZATION ?= -Os
+1 -1
View File
@@ -189,7 +189,7 @@ bool dl_ip_init(ROUTER_PORT *port, IP_DATA *ip_data)
/* bind the socket to the local port number */ /* bind the socket to the local port number */
sin.sin_family = AF_INET; sin.sin_family = AF_INET;
// sin.sin_addr.s_addr, ip_data->local_addr.s_addr;// = htonl(INADDR_ANY); /* sin.sin_addr.s_addr, ip_data->local_addr.s_addr;// = htonl(INADDR_ANY); */
sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = ip_data->port; sin.sin_port = ip_data->port;
+3 -3
View File
@@ -113,7 +113,7 @@ int main(int argc, char *argv[])
} }
} }
// blocking dequeue here /* blocking dequeue here */
bacmsg = recv_from_msgbox(head->main_id, &msg_storage, 0); bacmsg = recv_from_msgbox(head->main_id, &msg_storage, 0);
if (bacmsg) { if (bacmsg) {
switch (bacmsg->type) { switch (bacmsg->type) {
@@ -127,7 +127,7 @@ int main(int argc, char *argv[])
break; break;
} }
// print_msg(bacmsg); /* print_msg(bacmsg); */
if (is_network_msg(bacmsg)) { if (is_network_msg(bacmsg)) {
buff_len = buff_len =
@@ -153,7 +153,7 @@ int main(int argc, char *argv[])
msg_storage.type = DATA; msg_storage.type = DATA;
msg_storage.data = msg_data; msg_storage.data = msg_data;
// print_msg(bacmsg); /* print_msg(bacmsg); */
if (is_network_msg(bacmsg)) { if (is_network_msg(bacmsg)) {
msg_data->ref_count = 1; msg_data->ref_count = 1;
Executable
+25
View File
@@ -0,0 +1,25 @@
#!/bin/bash
# This script converts any C++ comments to C comments
# using the ccmtcnvt tool from the liwc package
CONVERTER=/usr/bin/ccmtcnvt
# silent fail if the tool is not installed
[ -x ${CONVERTER} ] || exit 0
directory=${1-`pwd`}
for filename in $( find ${directory} -name '*.c' )
do
echo Converting ${filename}
TEMPFILE="/tmp/ccmtcnvt.$RANDOM.txt"
${CONVERTER} ${filename} > ${TEMPFILE}
mv ${TEMPFILE} ${filename}
done
for filename in $( find ${directory} -name '*.h' )
do
echo Converting ${filename}
TEMPFILE="/tmp/ccmtcnvt.$RANDOM.txt"
${CONVERTER} ${filename} > ${TEMPFILE}
mv ${TEMPFILE} ${filename}
done
+5 -5
View File
@@ -1415,9 +1415,9 @@ static int bacapp_snprintf_date(char *str, size_t str_len, BACNET_DATE *bdate)
int ret_val = 0; int ret_val = 0;
int slen = 0; int slen = 0;
// false positive cppcheck - snprintf allows null pointers /* false positive cppcheck - snprintf allows null pointers */
// cppcheck-suppress nullPointer /* cppcheck-suppress nullPointer */
// cppcheck-suppress ctunullpointer /* cppcheck-suppress ctunullpointer */
slen = snprintf(str, str_len, "%s, %s", slen = snprintf(str, str_len, "%s, %s",
bactext_day_of_week_name(bdate->wday), bactext_day_of_week_name(bdate->wday),
bactext_month_name(bdate->month)); bactext_month_name(bdate->month));
@@ -1471,8 +1471,8 @@ static int bacapp_snprintf_time(char *str, size_t str_len, BACNET_TIME *btime)
if (btime->hour == 255) { if (btime->hour == 255) {
slen = snprintf(str, str_len, "**:"); slen = snprintf(str, str_len, "**:");
} else { } else {
// false positive cppcheck - snprintf allows null pointers /* false positive cppcheck - snprintf allows null pointers */
// cppcheck-suppress nullPointer /* cppcheck-suppress nullPointer */
slen = snprintf(str, str_len, "%02u:", slen = snprintf(str, str_len, "%02u:",
(unsigned)btime->hour); (unsigned)btime->hour);
} }
+1 -1
View File
@@ -50,4 +50,4 @@
# endif # endif
#endif #endif
#endif // BACNET_STACK_EXPORTS_H #endif /* BACNET_STACK_EXPORTS_H */
+2 -2
View File
@@ -302,7 +302,7 @@ bool address_mac_from_ascii(BACNET_MAC_ADDRESS *mac, const char *arg)
{ {
unsigned a[6] = { 0 }, p = 0; unsigned a[6] = { 0 }, p = 0;
uint16_t port = 0; uint16_t port = 0;
int c; int c, i;
bool status = false; bool status = false;
if (!(mac && arg)) { if (!(mac && arg)) {
@@ -327,7 +327,7 @@ bool address_mac_from_ascii(BACNET_MAC_ADDRESS *mac, const char *arg)
&a[4], &a[5]); &a[4], &a[5]);
if (c > 0) { if (c > 0) {
for (int i = 0; i < c; i++) { for (i = 0; i < c; i++) {
mac->adr[i] = a[i]; mac->adr[i] = a[i];
} }
mac->len = c; mac->len = c;
+5 -5
View File
@@ -1521,11 +1521,11 @@ bool Channel_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
} }
break; break;
case PROP_LIST_OF_OBJECT_PROPERTY_REFERENCES: case PROP_LIST_OF_OBJECT_PROPERTY_REFERENCES:
// FIXME: add property handling /* FIXME: add property handling */
// status = /* status = */
// Channel_List_Of_Object_Property_References_Set( /* Channel_List_Of_Object_Property_References_Set( */
// wp_data, /* wp_data, */
// &value); /* &value); */
wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = wp_data->error_code =
ERROR_CODE_OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED; ERROR_CODE_OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED;
+2 -2
View File
@@ -394,10 +394,10 @@ bool Lighting_Output_Lighting_Command_Set(
index = Lighting_Output_Instance_To_Index(object_instance); index = Lighting_Output_Instance_To_Index(object_instance);
if (index < MAX_LIGHTING_OUTPUTS) { if (index < MAX_LIGHTING_OUTPUTS) {
// FIXME: check lighting command member values /* FIXME: check lighting command member values */
status = lighting_command_copy( status = lighting_command_copy(
&Lighting_Output[index].Lighting_Command, value); &Lighting_Output[index].Lighting_Command, value);
// FIXME: set all the other values, and get the light levels moving /* FIXME: set all the other values, and get the light levels moving */
} }
return status; return status;
+2 -1
View File
@@ -86,6 +86,7 @@ void Notification_Class_Property_Lists(
void Notification_Class_Init(void) void Notification_Class_Init(void)
{ {
uint8_t NotifyIdx = 0; uint8_t NotifyIdx = 0;
unsigned i;
for (NotifyIdx = 0; NotifyIdx < MAX_NOTIFICATION_CLASSES; NotifyIdx++) { for (NotifyIdx = 0; NotifyIdx < MAX_NOTIFICATION_CLASSES; NotifyIdx++) {
/* init with zeros */ /* init with zeros */
@@ -99,7 +100,7 @@ void Notification_Class_Init(void)
NC_Info[NotifyIdx].Priority[TRANSITION_TO_NORMAL] = NC_Info[NotifyIdx].Priority[TRANSITION_TO_NORMAL] =
255; /* PRINTF lowest priority for Normal message. */ 255; /* PRINTF lowest priority for Normal message. */
/* configure for every day, all day long */ /* configure for every day, all day long */
for (unsigned i = 0; i < MAX_BACNET_DAYS_OF_WEEK; i++) { for (i = 0; i < MAX_BACNET_DAYS_OF_WEEK; i++) {
NC_Info[NotifyIdx].Recipient_List->ValidDays |= (1<<i); NC_Info[NotifyIdx].Recipient_List->ValidDays |= (1<<i);
} }
NC_Info[NotifyIdx].Recipient_List->FromTime.hour = 0; NC_Info[NotifyIdx].Recipient_List->FromTime.hour = 0;
+3 -3
View File
@@ -674,15 +674,15 @@ bool Trend_Log_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
len = bacapp_decode_device_obj_property_ref( len = bacapp_decode_device_obj_property_ref(
wp_data->application_data, &TempSource); wp_data->application_data, &TempSource);
if ((len < 0) || if ((len < 0) ||
(len > wp_data->application_data_len)) // Hmm, that didn't go (len > wp_data->application_data_len)) /* Hmm, that didn't go */
// as planned... /* as planned... */
{ {
wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_OTHER; wp_data->error_code = ERROR_CODE_OTHER;
break; break;
} }
// We only support references to objects in ourself for now /* We only support references to objects in ourself for now */
if ((TempSource.deviceIdentifier.type == OBJECT_DEVICE) && if ((TempSource.deviceIdentifier.type == OBJECT_DEVICE) &&
(TempSource.deviceIdentifier.instance != (TempSource.deviceIdentifier.instance !=
Device_Object_Instance_Number())) { Device_Object_Instance_Number())) {
+14 -14
View File
@@ -287,8 +287,8 @@ void handler_read_property_multiple(uint8_t *service_request,
#endif #endif
error = len; error = len;
berror = true; berror = true;
break; // The berror flag ensures that both loops will break; /* The berror flag ensures that both loops will */
// be broken! /* be broken! */
} }
decode_len += len; decode_len += len;
/* handle the special properties */ /* handle the special properties */
@@ -320,8 +320,8 @@ void handler_read_property_multiple(uint8_t *service_request,
ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED; ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED;
error = BACNET_STATUS_ABORT; error = BACNET_STATUS_ABORT;
berror = true; berror = true;
break; // The berror flag ensures that both break; /* The berror flag ensures that both */
// loops will be broken! /* loops will be broken! */
} }
apdu_len += len; apdu_len += len;
@@ -342,8 +342,8 @@ void handler_read_property_multiple(uint8_t *service_request,
ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED; ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED;
error = BACNET_STATUS_ABORT; error = BACNET_STATUS_ABORT;
berror = true; berror = true;
break; // The berror flag ensures that both break; /* The berror flag ensures that both */
// loops will be broken! /* loops will be broken! */
} }
apdu_len += len; apdu_len += len;
} else { } else {
@@ -379,8 +379,8 @@ void handler_read_property_multiple(uint8_t *service_request,
#endif #endif
error = len; error = len;
berror = true; berror = true;
break; // The berror flag ensures that break; /* The berror flag ensures that */
// both loops will be broken! /* both loops will be broken! */
} }
} }
} }
@@ -399,8 +399,8 @@ void handler_read_property_multiple(uint8_t *service_request,
#endif #endif
error = len; error = len;
berror = true; berror = true;
break; // The berror flag ensures that both loops break; /* The berror flag ensures that both loops */
// will be broken! /* will be broken! */
} }
} }
@@ -421,14 +421,14 @@ void handler_read_property_multiple(uint8_t *service_request,
ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED; ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED;
error = BACNET_STATUS_ABORT; error = BACNET_STATUS_ABORT;
berror = true; berror = true;
break; // The berror flag ensures that both loops break; /* The berror flag ensures that both loops */
// will be broken! /* will be broken! */
} else { } else {
apdu_len += copy_len; apdu_len += copy_len;
} }
break; /* finished with this property list */ break; /* finished with this property list */
} }
} // for(;;) } /* for(;;) */
if (berror) { if (berror) {
break; break;
} }
@@ -436,7 +436,7 @@ void handler_read_property_multiple(uint8_t *service_request,
/* Reached the end so finish up */ /* Reached the end so finish up */
break; break;
} }
} // for(;;) } /* for(;;) */
/* If not having an error so far, check the remaining space. */ /* If not having an error so far, check the remaining space. */
if (!berror) { if (!berror) {
+2 -2
View File
@@ -143,11 +143,11 @@ uint8_t Send_COV_Subscribe(
&Handler_Transmit_Buffer[0], &dest, &my_address, &npdu_data); &Handler_Transmit_Buffer[0], &dest, &my_address, &npdu_data);
/* encode the APDU portion of the packet */ /* encode the APDU portion of the packet */
if (cov_data->covSubscribeToProperty) { if (cov_data->covSubscribeToProperty) {
// subscribe to 1 property /* subscribe to 1 property */
len = cov_subscribe_property_encode_apdu(&Handler_Transmit_Buffer[pdu_len], len = cov_subscribe_property_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
sizeof(Handler_Transmit_Buffer) - pdu_len, invoke_id, cov_data); sizeof(Handler_Transmit_Buffer) - pdu_len, invoke_id, cov_data);
} else { } else {
// subscribe to object /* subscribe to object */
len = cov_subscribe_encode_apdu(&Handler_Transmit_Buffer[pdu_len], len = cov_subscribe_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
sizeof(Handler_Transmit_Buffer) - pdu_len, invoke_id, cov_data); sizeof(Handler_Transmit_Buffer) - pdu_len, invoke_id, cov_data);
} }
+2
View File
@@ -69,6 +69,7 @@ extern "C" {
/* tail */ /* tail */
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
volatile void *Ringbuf_Peek(RING_BUFFER const *b); volatile void *Ringbuf_Peek(RING_BUFFER const *b);
BACNET_STACK_EXPORT
bool Ringbuf_Pop(RING_BUFFER * b, bool Ringbuf_Pop(RING_BUFFER * b,
uint8_t * data_element); uint8_t * data_element);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
@@ -85,6 +86,7 @@ extern "C" {
/* pair of functions to use head memory directly */ /* pair of functions to use head memory directly */
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
volatile void *Ringbuf_Data_Peek(RING_BUFFER * b); volatile void *Ringbuf_Data_Peek(RING_BUFFER * b);
BACNET_STACK_EXPORT
volatile void *Ringbuf_Peek_Next(RING_BUFFER const *b, volatile void *Ringbuf_Peek_Next(RING_BUFFER const *b,
uint8_t * data_element); uint8_t * data_element);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
+14 -14
View File
@@ -219,11 +219,11 @@ extern "C" {
uint8_t * msg, uint8_t * msg,
uint32_t msg_len, uint32_t msg_len,
uint8_t * signature); uint8_t * signature);
// BACNET_STACK_EXPORT /* BACNET_STACK_EXPORT */
// bool key_verify_sign_msg(BACNET_KEY_ENTRY * key, /* bool key_verify_sign_msg(BACNET_KEY_ENTRY * key, */
// uint8_t * msg, /* uint8_t * msg, */
// uint32_t msg_len, /* uint32_t msg_len, */
// uint8_t * signature); /* uint8_t * signature); */
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
int key_encrypt_msg(BACNET_KEY_ENTRY * key, int key_encrypt_msg(BACNET_KEY_ENTRY * key,
uint8_t * msg, uint8_t * msg,
@@ -241,10 +241,10 @@ extern "C" {
uint8_t * padding); uint8_t * padding);
/* encoders */ /* encoders */
// BACNET_STACK_EXPORT /* BACNET_STACK_EXPORT */
// int encode_security_wrapper(int bytes_before, /* int encode_security_wrapper(int bytes_before, */
// uint8_t * apdu, /* uint8_t * apdu, */
// BACNET_SECURITY_WRAPPER * wrapper); /* BACNET_SECURITY_WRAPPER * wrapper); */
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
int encode_challenge_request(uint8_t * apdu, int encode_challenge_request(uint8_t * apdu,
BACNET_CHALLENGE_REQUEST * bc_req); BACNET_CHALLENGE_REQUEST * bc_req);
@@ -274,11 +274,11 @@ extern "C" {
BACNET_SET_MASTER_KEY * set_master_key); BACNET_SET_MASTER_KEY * set_master_key);
/* safe decoders */ /* safe decoders */
// BACNET_STACK_EXPORT /* BACNET_STACK_EXPORT */
// int decode_security_wrapper_safe(int bytes_before, /* int decode_security_wrapper_safe(int bytes_before, */
// uint8_t * apdu, /* uint8_t * apdu, */
// uint32_t apdu_len_remaining, /* uint32_t apdu_len_remaining, */
// BACNET_SECURITY_WRAPPER * wrapper); /* BACNET_SECURITY_WRAPPER * wrapper); */
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
int decode_challenge_request_safe(uint8_t * apdu, int decode_challenge_request_safe(uint8_t * apdu,
uint32_t apdu_len_remaining, uint32_t apdu_len_remaining,