Current context
We fixed compilation errors, but there is still one warning:
$ make cc -O2 -pipe -Wall -fPIC -I/usr/local/include/mysql -I/usr/local/include/mysql/mysql -I/usr/local/include/tcl8.6 -c fbsql.c -o fbsql.o fbsql.c:556:19: warning: cast to smaller integer type 'int' from 'ClientData' (aka 'void *') [-Wvoid-pointer-to-int-cast] 556 | int sql_number = (int)sql_word; | ^~~~~~~~~~~~~ fbsql.c:599:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype] 599 | WaitVariableProc(clientData, interp, name1, name2, flags) | ^ fbsql.c:610:5: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype] 610 | int fbWaitCmd(clientData, interp, argc, argv) | ^ fbsql.c:680:53: warning: cast to 'ClientData' (aka 'void *') from smaller integer type 'int' [-Wint-to-void-pointer-cast] 680 | Tcl_CreateCommand (interp, command_name, SqlCmd, (ClientData) i, (Tcl_CmdDeleteProc*) NULL); | ^~~~~~~~~~~~~~ 4 warnings generated.
See T2213#34389 for suggestions to fix it.
Historical context
When we opened the task, before D3910 fix, the compiler error was:
$ gmake cc -Wall -fPIC -I/home/local/include -I/usr/local/include/mysql -I/usr/local/include/tcl8.6 -c -o fbsql.o fbsql.c fbsql.c:556:19: warning: cast to smaller integer type 'int' from 'ClientData' (aka 'void *') [-Wvoid-pointer-to-int-cast] 556 | int sql_number = (int)sql_word; | ^~~~~~~~~~~~~ fbsql.c:599:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype] 599 | WaitVariableProc(clientData, interp, name1, name2, flags) | ^ fbsql.c:610:5: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype] 610 | int fbWaitCmd(clientData, interp, argc, argv) | ^ fbsql.c:667:36: error: incompatible function pointer types passing 'int (ClientData, Tcl_Interp *, int, char **)' (aka 'int (void *, struct Tcl_Interp *, int, char **)') to parameter of type 'Tcl_CmdProc *' (aka 'int (*)(void *, struct Tcl _Interp *, int, const char **)') [-Wincompatible-function-pointer-types] 667 | Tcl_CreateCommand (interp, "sql", SqlCmd, (ClientData) 0, (Tcl_CmdDeleteProc*) NULL); | ^~~~~~ /usr/local/include/tcl8.6/tclDecls.h:303:39: note: passing argument to parameter 'proc' here 303 | const char *cmdName, Tcl_CmdProc *proc, | ^ fbsql.c:680:53: warning: cast to 'ClientData' (aka 'void *') from smaller integer type 'int' [-Wint-to-void-pointer-cast] 680 | Tcl_CreateCommand (interp, command_name, SqlCmd, (ClientData) i, (Tcl_CmdDeleteProc*) NULL); | ^~~~~~~~~~~~~~ fbsql.c:680:45: error: incompatible function pointer types passing 'int (ClientData, Tcl_Interp *, int, char **)' (aka 'int (void *, struct Tcl_Interp *, int, char **)') to parameter of type 'Tcl_CmdProc *' (aka 'int (*)(void *, struct Tcl _Interp *, int, const char **)') [-Wincompatible-function-pointer-types] 680 | Tcl_CreateCommand (interp, command_name, SqlCmd, (ClientData) i, (Tcl_CmdDeleteProc*) NULL); | ^~~~~~ /usr/local/include/tcl8.6/tclDecls.h:303:39: note: passing argument to parameter 'proc' here 303 | const char *cmdName, Tcl_CmdProc *proc, | ^ 4 warnings and 2 errors generated. gmake: *** [<builtin>: fbsql.o] Error 1
That's have been fixed