Skip to content

Commit a494c2b

Browse files
committed
More work finalizing full Tcl 9.0 support (using Tcl_Size everywhere)
1 parent 1a2dbf9 commit a494c2b

File tree

5 files changed

+109
-95
lines changed

5 files changed

+109
-95
lines changed

configure

Lines changed: 81 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -9008,8 +9008,9 @@ printf "%s\n" "#define _ISOC99_SOURCE 1" >>confdefs.h
90089008
tcl_flags="$tcl_flags _ISOC99_SOURCE"
90099009
fi
90109010

9011+
if test "${TCL_MAJOR_VERSION}" -ne 8 ; then
90119012

9012-
if test ${tcl_cv_flag__largefile64_source+y}
9013+
if test ${tcl_cv_flag__file_offset_bits+y}
90139014
then :
90149015
printf %s "(cached) " >&6
90159016
else $as_nop
@@ -9019,95 +9020,46 @@ else $as_nop
90199020
int
90209021
main (void)
90219022
{
9022-
struct stat64 buf; int i = stat64("/", &buf);
9023+
switch (0) { case 0: case (sizeof(off_t)==sizeof(long long)): ; }
90239024
;
90249025
return 0;
90259026
}
90269027
_ACEOF
90279028
if ac_fn_c_try_compile "$LINENO"
90289029
then :
9029-
tcl_cv_flag__largefile64_source=no
9030+
tcl_cv_flag__file_offset_bits=no
90309031
else $as_nop
90319032
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
90329033
/* end confdefs.h. */
9033-
#define _LARGEFILE64_SOURCE 1
9034+
#define _FILE_OFFSET_BITS 64
90349035
#include <sys/stat.h>
90359036
int
90369037
main (void)
90379038
{
9038-
struct stat64 buf; int i = stat64("/", &buf);
9039+
switch (0) { case 0: case (sizeof(off_t)==sizeof(long long)): ; }
90399040
;
90409041
return 0;
90419042
}
90429043
_ACEOF
90439044
if ac_fn_c_try_compile "$LINENO"
90449045
then :
9045-
tcl_cv_flag__largefile64_source=yes
9046+
tcl_cv_flag__file_offset_bits=yes
90469047
else $as_nop
9047-
tcl_cv_flag__largefile64_source=no
9048+
tcl_cv_flag__file_offset_bits=no
90489049
fi
90499050
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
90509051
fi
90519052
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
90529053
fi
90539054

9054-
if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then
9055+
if test "x${tcl_cv_flag__file_offset_bits}" = "xyes" ; then
90559056

9056-
printf "%s\n" "#define _LARGEFILE64_SOURCE 1" >>confdefs.h
9057+
printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h
90579058

9058-
tcl_flags="$tcl_flags _LARGEFILE64_SOURCE"
9059+
tcl_flags="$tcl_flags _FILE_OFFSET_BITS"
90599060
fi
90609061

9061-
9062-
if test ${tcl_cv_flag__largefile_source64+y}
9063-
then :
9064-
printf %s "(cached) " >&6
9065-
else $as_nop
9066-
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9067-
/* end confdefs.h. */
9068-
#include <sys/stat.h>
9069-
int
9070-
main (void)
9071-
{
9072-
char *p = (char *)open64;
9073-
;
9074-
return 0;
9075-
}
9076-
_ACEOF
9077-
if ac_fn_c_try_compile "$LINENO"
9078-
then :
9079-
tcl_cv_flag__largefile_source64=no
9080-
else $as_nop
9081-
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9082-
/* end confdefs.h. */
9083-
#define _LARGEFILE_SOURCE64 1
9084-
#include <sys/stat.h>
9085-
int
9086-
main (void)
9087-
{
9088-
char *p = (char *)open64;
9089-
;
9090-
return 0;
9091-
}
9092-
_ACEOF
9093-
if ac_fn_c_try_compile "$LINENO"
9094-
then :
9095-
tcl_cv_flag__largefile_source64=yes
9096-
else $as_nop
9097-
tcl_cv_flag__largefile_source64=no
9098-
fi
9099-
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
9100-
fi
9101-
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
9102-
fi
9103-
9104-
if test "x${tcl_cv_flag__largefile_source64}" = "xyes" ; then
9105-
9106-
printf "%s\n" "#define _LARGEFILE_SOURCE64 1" >>confdefs.h
9107-
9108-
tcl_flags="$tcl_flags _LARGEFILE_SOURCE64"
91099062
fi
9110-
91119063
if test "x${tcl_flags}" = "x" ; then
91129064
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
91139065
printf "%s\n" "none" >&6; }
@@ -9187,6 +9139,75 @@ printf "%s\n" "#define TCL_WIDE_INT_TYPE ${tcl_cv_type_64bit}" >>confdefs.h
91879139
printf "%s\n" "${tcl_cv_type_64bit}" >&6; }
91889140

91899141
# Now check for auxiliary declarations
9142+
if test "${TCL_MAJOR_VERSION}" -ne 8 ; then
9143+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t" >&5
9144+
printf %s "checking for 64-bit time_t... " >&6; }
9145+
if test ${tcl_cv_time_t_64+y}
9146+
then :
9147+
printf %s "(cached) " >&6
9148+
else $as_nop
9149+
9150+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9151+
/* end confdefs.h. */
9152+
#include <sys/types.h>
9153+
int
9154+
main (void)
9155+
{
9156+
switch (0) {case 0: case (sizeof(time_t)==sizeof(long long)): ;}
9157+
;
9158+
return 0;
9159+
}
9160+
_ACEOF
9161+
if ac_fn_c_try_compile "$LINENO"
9162+
then :
9163+
tcl_cv_time_t_64=yes
9164+
else $as_nop
9165+
tcl_cv_time_t_64=no
9166+
fi
9167+
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
9168+
fi
9169+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_time_t_64" >&5
9170+
printf "%s\n" "$tcl_cv_time_t_64" >&6; }
9171+
if test "x${tcl_cv_time_t_64}" = "xno" ; then
9172+
# Note that _TIME_BITS=64 requires _FILE_OFFSET_BITS=64
9173+
# which SC_TCL_EARLY_FLAGS has defined if necessary.
9174+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _TIME_BITS=64 enables 64-bit time_t" >&5
9175+
printf %s "checking if _TIME_BITS=64 enables 64-bit time_t... " >&6; }
9176+
if test ${tcl_cv__time_bits+y}
9177+
then :
9178+
printf %s "(cached) " >&6
9179+
else $as_nop
9180+
9181+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9182+
/* end confdefs.h. */
9183+
#define _TIME_BITS 64
9184+
#include <sys/types.h>
9185+
int
9186+
main (void)
9187+
{
9188+
switch (0) {case 0: case (sizeof(time_t)==sizeof(long long)): ;}
9189+
;
9190+
return 0;
9191+
}
9192+
_ACEOF
9193+
if ac_fn_c_try_compile "$LINENO"
9194+
then :
9195+
tcl_cv__time_bits=yes
9196+
else $as_nop
9197+
tcl_cv__time_bits=no
9198+
fi
9199+
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
9200+
fi
9201+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tcl_cv__time_bits" >&5
9202+
printf "%s\n" "$tcl_cv__time_bits" >&6; }
9203+
if test "x${tcl_cv__time_bits}" = "xyes" ; then
9204+
9205+
printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h
9206+
9207+
fi
9208+
fi
9209+
fi
9210+
91909211
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent64" >&5
91919212
printf %s "checking for struct dirent64... " >&6; }
91929213
if test ${tcl_cv_struct_dirent64+y}
@@ -9638,7 +9659,7 @@ printf "%s\n" "#define TCL_MAJOR_VERSION 8" >>confdefs.h
96389659
eval eval "PKG_LIB_FILE=${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
96399660
fi
96409661
# Some packages build their own stubs libraries
9641-
eval eval "PKG_STUB_LIB_FILE=${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
9662+
eval eval "PKG_STUB_LIB_FILE=${PACKAGE_LIB_PREFIX8}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
96429663
if test "$GCC" = "yes"; then
96439664
PKG_STUB_LIB_FILE=lib${PKG_STUB_LIB_FILE}
96449665
fi

generic/itkArchBase.c

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ Itk_ArchCompAddCmd(
408408
Tcl_DStringAppend(&buffer, " <Destroy> [::itcl::code ", -1);
409409

410410
Tcl_DStringAppend(&buffer,
411-
Tcl_GetStringFromObj(objNamePtr,(int*)NULL), -1);
411+
Tcl_GetString(objNamePtr), -1);
412412

413413
Tcl_DStringAppend(&buffer, " itk_component delete ", -1);
414414
Tcl_DStringAppend(&buffer, name, -1);
@@ -434,7 +434,7 @@ Itk_ArchCompAddCmd(
434434
*/
435435
Tcl_DStringSetLength(&buffer, 0);
436436
Tcl_DStringAppendElement(&buffer,
437-
Tcl_GetStringFromObj(winNamePtr, (int*)NULL));
437+
Tcl_GetString(winNamePtr));
438438
Tcl_DStringAppendElement(&buffer, "configure");
439439

440440
result = Tcl_Eval(interp, Tcl_DStringValue(&buffer));
@@ -565,7 +565,7 @@ Itk_ArchCompAddCmd(
565565
Tcl_AppendToObj(objPtr, "\")", -1);
566566
Tcl_IncrRefCount(objPtr);
567567

568-
Tcl_AddErrorInfo(interp, Tcl_GetStringFromObj(objPtr, (int*)NULL));
568+
Tcl_AppendObjToErrorInfo(interp, objPtr);
569569
Tcl_DecrRefCount(objPtr);
570570

571571

@@ -750,7 +750,7 @@ Itk_ArchOptKeepCmd(
750750
* properly.
751751
*/
752752
if (!mergeInfo->archInfo || !mergeInfo->optionTable) {
753-
token = Tcl_GetStringFromObj(objv[0], (int*)NULL);
753+
token = Tcl_GetString(objv[0]);
754754
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
755755
"improper usage: \"", token,
756756
"\" should only be accessed via itk_component",
@@ -764,7 +764,7 @@ Itk_ArchOptKeepCmd(
764764
* Integrate them into the option info for the mega-widget.
765765
*/
766766
for (i=1; i < objc; i++) {
767-
token = Tcl_GetStringFromObj(objv[i], (int*)NULL);
767+
token = Tcl_GetString(objv[i]);
768768
entry = Tcl_FindHashEntry(mergeInfo->optionTable, token);
769769
if (!entry) {
770770
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
@@ -852,7 +852,7 @@ Itk_ArchOptIgnoreCmd(
852852
* properly.
853853
*/
854854
if (!mergeInfo->archInfo || !mergeInfo->optionTable) {
855-
token = Tcl_GetStringFromObj(objv[0], (int*)NULL);
855+
token = Tcl_GetString(objv[0]);
856856
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
857857
"improper usage: \"", token,
858858
"\" should only be accessed via itk_component",
@@ -866,7 +866,7 @@ Itk_ArchOptIgnoreCmd(
866866
* Remove them from the mega-widget.
867867
*/
868868
for (i=1; i < objc; i++) {
869-
token = Tcl_GetStringFromObj(objv[i], (int*)NULL);
869+
token = Tcl_GetString(objv[i]);
870870
entry = Tcl_FindHashEntry(mergeInfo->optionTable, token);
871871
if (!entry) {
872872
Tcl_AppendResult(interp, "option not recognized: ", token,
@@ -931,18 +931,18 @@ Itk_ArchOptRenameCmd(
931931
* properly.
932932
*/
933933
if (!mergeInfo->archInfo || !mergeInfo->optionTable) {
934-
char *token = Tcl_GetStringFromObj(objv[0], (int*)NULL);
934+
char *token = Tcl_GetString(objv[0]);
935935
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
936936
"improper usage: \"", token,
937937
"\" should only be accessed via itk_component",
938938
(char*)NULL);
939939
return TCL_ERROR;
940940
}
941941

942-
oldSwitch = Tcl_GetStringFromObj(objv[1], (int*)NULL);
943-
newSwitch = Tcl_GetStringFromObj(objv[2], (int*)NULL);
944-
resName = Tcl_GetStringFromObj(objv[3], (int*)NULL);
945-
resClass = Tcl_GetStringFromObj(objv[4], (int*)NULL);
942+
oldSwitch = Tcl_GetString(objv[1]);
943+
newSwitch = Tcl_GetString(objv[2]);
944+
resName = Tcl_GetString(objv[3]);
945+
resClass = Tcl_GetString(objv[4]);
946946

947947
/*
948948
* Make sure that the resource name and resource class look good.
@@ -1056,7 +1056,7 @@ Itk_ArchOptUsualCmd(
10561056
* properly.
10571057
*/
10581058
if (!mergeInfo->archInfo || !mergeInfo->optionTable) {
1059-
char *token = Tcl_GetStringFromObj(objv[0], (int*)NULL);
1059+
char *token = Tcl_GetString(objv[0]);
10601060
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
10611061
"improper usage: \"", token,
10621062
"\" should only be accessed via itk_component",
@@ -1070,7 +1070,7 @@ Itk_ArchOptUsualCmd(
10701070
* the component widget.
10711071
*/
10721072
if (objc == 2) {
1073-
tag = Tcl_GetStringFromObj(objv[1], (int*)NULL);
1073+
tag = Tcl_GetString(objv[1]);
10741074
} else {
10751075
tag = Tk_Class(mergeInfo->archComp->tkwin);
10761076
}
@@ -1155,7 +1155,7 @@ Itk_UsualCmd(
11551155
* hash table for "usual" code.
11561156
*/
11571157
if (objc == 3) {
1158-
token = Tcl_GetStringFromObj(objv[1], (int*)NULL);
1158+
token = Tcl_GetString(objv[1]);
11591159
entry = Tcl_CreateHashEntry(&mergeInfo->usualCode, token,
11601160
&newEntry);
11611161
if (!newEntry) {
@@ -1174,7 +1174,7 @@ Itk_UsualCmd(
11741174
/*
11751175
* Otherwise, look for a code fragment with the specified tag.
11761176
*/
1177-
token = Tcl_GetStringFromObj(objv[1], (int*)NULL);
1177+
token = Tcl_GetString(objv[1]);
11781178
entry = Tcl_FindHashEntry(&mergeInfo->usualCode, token);
11791179
if (entry) {
11801180
codePtr = (Tcl_Obj*)Tcl_GetHashValue(entry);
@@ -2685,12 +2685,13 @@ Itk_CreateGenericOptTable(
26852685
Tcl_Interp *interp, /* interpreter handling this request */
26862686
const char *options) /* string description of config options */
26872687
{
2688-
int confc;
2688+
Tcl_Size confc;
26892689
const char **confv = NULL;
2690-
int optc;
2690+
Tcl_Size optc;
26912691
const char **optv = NULL;
26922692

2693-
int i, newEntry;
2693+
Tcl_Size i;
2694+
int newEntry;
26942695
Tcl_HashTable *tPtr;
26952696
Tcl_HashEntry *entry;
26962697
GenericConfigOpt *info;
@@ -2802,7 +2803,8 @@ Itk_CreateGenericOpt(
28022803
GenericConfigOpt *genericOpt = NULL;
28032804
Tcl_Obj *codePtr = NULL;
28042805

2805-
int optc, result;
2806+
Tcl_Size optc;
2807+
int result;
28062808
const char **optv;
28072809
char *name;
28082810
const char *my_name;
@@ -2842,7 +2844,7 @@ Itk_CreateGenericOpt(
28422844
*/
28432845
resultPtr = Tcl_GetObjResult(interp);
28442846
Tcl_IncrRefCount(resultPtr);
2845-
info = Tcl_GetStringFromObj(resultPtr, (int*)NULL);
2847+
info = Tcl_GetString(resultPtr);
28462848

28472849
result = Tcl_SplitList(interp, info, &optc, &optv);
28482850

generic/itkArchetype.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ Itk_ArchDeleteOptsCmd(
361361
if (Itcl_GetContext(interp, &contextClass, &contextObj) != TCL_OK ||
362362
!contextObj) {
363363

364-
char *token = Tcl_GetStringFromObj(objv[0], (int*)NULL);
364+
char *token = Tcl_GetString(objv[0]);
365365
Tcl_ResetResult(interp);
366366
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
367367
"cannot use \"", token, "\" without an object context",
@@ -474,7 +474,7 @@ Itk_ArchComponentCmd(
474474
/*
475475
* Flag any errors.
476476
*/
477-
cmd = Tcl_GetStringFromObj(objv[0], (int*)NULL);
477+
cmd = Tcl_GetString(objv[0]);
478478
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
479479
"bad option \"", token,
480480
"\": should be one of...\n",
@@ -847,7 +847,7 @@ Itk_ArchCompAccessCmd(
847847
Tcl_HashSearch place;
848848
ArchInfo *info;
849849
ArchComponent *archComp;
850-
int cmdlinec;
850+
Tcl_Size cmdlinec;
851851
Tcl_Obj *objPtr;
852852
Tcl_Obj *cmdlinePtr;
853853
Tcl_Obj **cmdlinev;

generic/itkHelpers.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Itk_ArchOptConfigError(
5454
Tcl_GetCommandFullName(interp, info->itclObj->accessCmd, objPtr);
5555
Tcl_AppendToObj(objPtr, "\")", -1);
5656
}
57-
Tcl_AddErrorInfo(interp, Tcl_GetStringFromObj(objPtr, (int*)NULL));
57+
Tcl_AddErrorInfo(interp, Tcl_GetString(objPtr));
5858
Tcl_DecrRefCount(objPtr);
5959
}
6060

0 commit comments

Comments
 (0)