mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
Checkpoint on fixing compiling with musl gentoo
Restored use of the #define FPOS_POS_LEN symbol. This refers to the length of the __pos element (if the __pos element exists), the fpos_t type (if that type exists). Changed SWAP_HALF_IN_FILEPOS(dest, src) mato to use FILEPOS_LEN Little Endian when FILEPOS is a simple scalar type (i.e., HAVE_FILEPOS_SCALAR is defined). Changed #define HAVE_FPOS to HAVE_FGETSETPOS. Corrected comment in have_fpos_pos.h. The HAVE_FPOS_POS symbol was NOT related to fgetpos & fsetpos but rather if we we have an __pos element in FILEPOS. Changed #define HAVE_NO_FPOS to HAVE_NO_FGETSETPOS. Improved comments in have_fpos_pos.h to show why and how HAVE_FPOS_POS, FPOS_POS_BITS, and FPOS_POS_LEN were defined or undefed. Changed showfiles builtin to print sizes cast to (long int) with the "%ld" printf format to avoid implementations that do not support the "%lld" printf format specifier.
This commit is contained in:
25
CHANGES
25
CHANGES
@@ -38,8 +38,6 @@ The following are the changes from calc version 2.14.1.2 to date:
|
||||
file failed to compile incorrectly, producing a potentially incorrect
|
||||
have_uid_t.h file for such systems.
|
||||
|
||||
Renamed #define FPOS_POS_LEN symbol to FPOSPOS_LEN.
|
||||
|
||||
Added full_debug rule to Makefile. This does the work of the
|
||||
old debug rule in a more verbose mode by using Q= H=@ S= E= V=@.
|
||||
|
||||
@@ -50,6 +48,29 @@ The following are the changes from calc version 2.14.1.2 to date:
|
||||
The full_debug rule will no longer stop when one of the sub-tasks
|
||||
failed (exit non-zero).
|
||||
|
||||
Restored use of the #define FPOS_POS_LEN symbol. This refers to
|
||||
the length of the __pos element (if the __pos element exists),
|
||||
the fpos_t type (if that type exists).
|
||||
|
||||
Changed SWAP_HALF_IN_FILEPOS(dest, src) mato to use FILEPOS_LEN Little
|
||||
Endian when FILEPOS is a simple scalar type (i.e., HAVE_FILEPOS_SCALAR
|
||||
is defined).
|
||||
|
||||
Changed #define HAVE_FPOS to HAVE_FGETSETPOS.
|
||||
|
||||
Corrected comment in have_fpos_pos.h. The HAVE_FPOS_POS symbol was
|
||||
NOT related to fgetpos & fsetpos but rather if we we have an __pos
|
||||
element in FILEPOS.
|
||||
|
||||
Changed #define HAVE_NO_FPOS to HAVE_NO_FGETSETPOS.
|
||||
|
||||
Improved comments in have_fpos_pos.h to show why and how
|
||||
HAVE_FPOS_POS, FPOS_POS_BITS, and FPOS_POS_LEN were defined or undefed.
|
||||
|
||||
Changed showfiles builtin to print sizes cast to (long int) with
|
||||
the "%ld" printf format to avoid implementations that do not support
|
||||
the "%lld" printf format specifier.
|
||||
|
||||
|
||||
The following are the changes from calc version 2.14.1.0 to 2.14.1.0:
|
||||
|
||||
|
22
Makefile
22
Makefile
@@ -280,14 +280,14 @@ LONG_BITS=
|
||||
# Determine if we have the ANSI C fgetpos and fsetpos alternate interface
|
||||
# to the ftell() and fseek() (with whence set to SEEK_SET) functions.
|
||||
#
|
||||
# If HAVE_FPOS is empty, this Makefile will run the have_fpos program
|
||||
# to determine if there is are fgetpos and fsetpos functions. If HAVE_FPOS
|
||||
# is set to -DHAVE_NO_FPOS, then calc will use ftell() and fseek().
|
||||
# If HAVE_FGETSETPOS is empty, this Makefile will run the have_fpos program
|
||||
# to determine if there is are fgetpos and fsetpos functions. If HAVE_FGETSETPOS
|
||||
# is set to -DHAVE_NO_FGETSETPOS, then calc will use ftell() and fseek().
|
||||
#
|
||||
# If in doubt, leave HAVE_FPOS empty and this Makefile will figure it out.
|
||||
# If in doubt, leave HAVE_FGETSETPOS empty and this Makefile will figure it out.
|
||||
#
|
||||
HAVE_FPOS=
|
||||
#HAVE_FPOS= -DHAVE_NO_FPOS
|
||||
HAVE_FGETSETPOS=
|
||||
#HAVE_FGETSETPOS= -DHAVE_NO_FGETSETPOS
|
||||
|
||||
# Determine if we have an __pos element of a file position (fpos_t) structure.
|
||||
#
|
||||
@@ -3190,7 +3190,7 @@ have_fpos.h: have_fpos.c banned.h have_ban_pragma.h ${MAKE_FILE} ${LOC_MKF}
|
||||
${Q} echo '' >> $@
|
||||
${Q} echo '/* do we have fgetpos & fsetpos functions? */' >> $@
|
||||
${Q} ${RM} -f have_fpos.o have_fpos${EXT}
|
||||
-${Q} ${LCC} ${HAVE_FPOS} ${ICFLAGS} have_fpos.c -c ${S} \
|
||||
-${Q} ${LCC} ${HAVE_FGETSETPOS} ${ICFLAGS} have_fpos.c -c ${S} \
|
||||
|| ${TRUE}
|
||||
-${Q} ${LCC} ${ILDFLAGS} have_fpos.o -o have_fpos${EXT} ${S} \
|
||||
|| ${TRUE}
|
||||
@@ -3199,7 +3199,7 @@ have_fpos.h: have_fpos.c banned.h have_ban_pragma.h ${MAKE_FILE} ${LOC_MKF}
|
||||
-${Q} if [ -s fpos_tmp ]; then \
|
||||
${CAT} fpos_tmp >> $@; \
|
||||
else \
|
||||
echo '#undef HAVE_FPOS /* no */' >> $@; \
|
||||
echo '#undef HAVE_FGETSETPOS /* no */' >> $@; \
|
||||
echo '' >> $@; \
|
||||
echo 'typedef long FILEPOS;' >> $@; \
|
||||
fi
|
||||
@@ -3231,9 +3231,9 @@ have_fpos_pos.h: have_fpos_pos.c have_fpos.h have_posscl.h \
|
||||
${Q} echo '#define CALC_HAVE_FPOS_POS_H' >> $@
|
||||
${Q} echo '' >> $@
|
||||
${Q} echo '' >> $@
|
||||
${Q} echo '/* do we have fgetpos & fsetpos functions? */' >> $@
|
||||
${Q} echo '/* do we have an __pos element in FILEPOS? */' >> $@
|
||||
${Q} ${RM} -f have_fpos_pos.o have_fpos_pos${EXT}
|
||||
-${Q} ${LCC} ${HAVE_FPOS} ${HAVE_FPOS_POS} ${ICFLAGS} \
|
||||
-${Q} ${LCC} ${HAVE_FGETSETPOS} ${HAVE_FPOS_POS} ${ICFLAGS} \
|
||||
have_fpos_pos.c -c ${S} \
|
||||
|| ${TRUE}
|
||||
-${Q} ${LCC} ${ILDFLAGS} have_fpos_pos.o -o have_fpos_pos${EXT} ${S} \
|
||||
@@ -4825,7 +4825,7 @@ env:
|
||||
@echo 'HAVE_ARC4RANDOM=${HAVE_ARC4RANDOM}'; echo ''
|
||||
@echo 'HAVE_CONST=${HAVE_CONST}'; echo ''
|
||||
@echo 'HAVE_ENVIRON=${HAVE_ENVIRON}'; echo ''
|
||||
@echo 'HAVE_FPOS=${HAVE_FPOS}'; echo ''
|
||||
@echo 'HAVE_FGETSETPOS=${HAVE_FGETSETPOS}'; echo ''
|
||||
@echo 'HAVE_FPOS_POS=${HAVE_FPOS_POS}'; echo ''
|
||||
@echo 'HAVE_GETPGID=${HAVE_GETPGID}'; echo ''
|
||||
@echo 'HAVE_GETPRID=${HAVE_GETPRID}'; echo ''
|
||||
|
@@ -220,14 +220,14 @@ LONG_BITS=
|
||||
# Determine if we have the ANSI C fgetpos and fsetpos alternate interface
|
||||
# to the ftell() and fseek() (with whence set to SEEK_SET) functions.
|
||||
#
|
||||
# If HAVE_FPOS is empty, this Makefile will run the have_fpos program
|
||||
# to determine if there is are fgetpos and fsetpos functions. If HAVE_FPOS
|
||||
# is set to -DHAVE_NO_FPOS, then calc will use ftell() and fseek().
|
||||
# If HAVE_FGETSETPOS is empty, this Makefile will run the have_fpos program
|
||||
# to determine if there is are fgetpos and fsetpos functions. If HAVE_FGETSETPOS
|
||||
# is set to -DHAVE_NO_FGETSETPOS, then calc will use ftell() and fseek().
|
||||
#
|
||||
# If in doubt, leave HAVE_FPOS empty and this Makefile will figure it out.
|
||||
# If in doubt, leave HAVE_FGETSETPOS empty and this Makefile will figure it out.
|
||||
#
|
||||
HAVE_FPOS=
|
||||
#HAVE_FPOS= -DHAVE_NO_FPOS
|
||||
HAVE_FGETSETPOS=
|
||||
#HAVE_FGETSETPOS= -DHAVE_NO_FGETSETPOS
|
||||
|
||||
# Determine if we have an __pos element of a file position (fpos_t) structure.
|
||||
#
|
||||
@@ -2504,7 +2504,7 @@ have_fpos.h: have_fpos.c banned.h have_ban_pragma.h ${MAKE_FILE} ${LOC_MKF}
|
||||
${Q} echo '' >> $@
|
||||
${Q} echo '/* do we have fgetpos & fsetpos functions? */' >> $@
|
||||
${Q} ${RM} -f have_fpos.o have_fpos${EXT}
|
||||
-${Q} ${LCC} ${HAVE_FPOS} ${ICFLAGS} have_fpos.c -c ${S} \
|
||||
-${Q} ${LCC} ${HAVE_FGETSETPOS} ${ICFLAGS} have_fpos.c -c ${S} \
|
||||
|| ${TRUE}
|
||||
-${Q} ${LCC} ${ILDFLAGS} have_fpos.o -o have_fpos${EXT} ${S} \
|
||||
|| ${TRUE}
|
||||
@@ -2513,7 +2513,7 @@ have_fpos.h: have_fpos.c banned.h have_ban_pragma.h ${MAKE_FILE} ${LOC_MKF}
|
||||
-${Q} if [ -s fpos_tmp ]; then \
|
||||
${CAT} fpos_tmp >> $@; \
|
||||
else \
|
||||
echo '#undef HAVE_FPOS /* no */' >> $@; \
|
||||
echo '#undef HAVE_FGETSETPOS /* no */' >> $@; \
|
||||
echo '' >> $@; \
|
||||
echo 'typedef long FILEPOS;' >> $@; \
|
||||
fi
|
||||
@@ -2545,9 +2545,9 @@ have_fpos_pos.h: have_fpos_pos.c have_fpos.h have_posscl.h \
|
||||
${Q} echo '#define CALC_HAVE_FPOS_POS_H' >> $@
|
||||
${Q} echo '' >> $@
|
||||
${Q} echo '' >> $@
|
||||
${Q} echo '/* do we have fgetpos & fsetpos functions? */' >> $@
|
||||
${Q} echo '/* do we have an __pos element in FILEPOS? */' >> $@
|
||||
${Q} ${RM} -f have_fpos_pos.o have_fpos_pos${EXT}
|
||||
-${Q} ${LCC} ${HAVE_FPOS} ${HAVE_FPOS_POS} ${ICFLAGS} \
|
||||
-${Q} ${LCC} ${HAVE_FGETSETPOS} ${HAVE_FPOS_POS} ${ICFLAGS} \
|
||||
have_fpos_pos.c -c ${S} \
|
||||
|| ${TRUE}
|
||||
-${Q} ${LCC} ${ILDFLAGS} have_fpos_pos.o -o have_fpos_pos${EXT} ${S} \
|
||||
@@ -4113,7 +4113,7 @@ env:
|
||||
@echo 'HAVE_ARC4RANDOM=${HAVE_ARC4RANDOM}'; echo ''
|
||||
@echo 'HAVE_CONST=${HAVE_CONST}'; echo ''
|
||||
@echo 'HAVE_ENVIRON=${HAVE_ENVIRON}'; echo ''
|
||||
@echo 'HAVE_FPOS=${HAVE_FPOS}'; echo ''
|
||||
@echo 'HAVE_FGETSETPOS=${HAVE_FGETSETPOS}'; echo ''
|
||||
@echo 'HAVE_FPOS_POS=${HAVE_FPOS_POS}'; echo ''
|
||||
@echo 'HAVE_GETPGID=${HAVE_GETPGID}'; echo ''
|
||||
@echo 'HAVE_GETPRID=${HAVE_GETPRID}'; echo ''
|
||||
|
2
file.c
2
file.c
@@ -2022,7 +2022,7 @@ showfiles(void)
|
||||
math_chr('\n');
|
||||
continue;
|
||||
}
|
||||
printf(" size = %lld\n", (long long int)sizes[i]);
|
||||
printf(" size = %ld\n", (long int)sizes[i]);
|
||||
for (j = i + 1; j < idnum; j++) {
|
||||
if (listed[j] || sizes[j] == -1)
|
||||
continue;
|
||||
|
2
file.h
2
file.h
@@ -71,7 +71,7 @@ typedef struct {
|
||||
* Some obscure systems without fgetpos/fsetpos may not have a simple
|
||||
* scalar type. In these cases the f_tell macro below will fail.
|
||||
*/
|
||||
#if defined(HAVE_FPOS)
|
||||
#if defined(HAVE_FGETSETPOS)
|
||||
|
||||
#define f_seek_set(stream, loc) fsetpos((FILE*)(stream), (FILEPOS*)(loc))
|
||||
#define f_tell(stream, loc) fgetpos((FILE*)(stream), (FILEPOS*)(loc))
|
||||
|
@@ -137,8 +137,7 @@ main(int UNUSED(argc), char **argv)
|
||||
* systems a FILEPOS is not a scalar hence we must memcpy.
|
||||
*/
|
||||
printf("#define SWAP_HALF_IN_FILEPOS(dest, src)\t%s\n",
|
||||
"\\\n\tmemcpy((void *)(dest), (void *)(src), "
|
||||
"sizeof(FPOSPOS_LEN))");
|
||||
"\\\n\tmemcpy((void *)(dest), (void *)(src), FILEPOS_LEN)");
|
||||
#endif /* HAVE_FILEPOS_SCALAR */
|
||||
#endif /* CALC_BYTE_ORDER == BIG_ENDIAN */
|
||||
putchar('\n');
|
||||
|
@@ -25,7 +25,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* If the symbol HAVE_NO_FPOS is defined, we will output nothing.
|
||||
* If the symbol HAVE_NO_FGETSETPOS is defined, we will output nothing.
|
||||
* If we are able to compile this program, then we must have the
|
||||
* fgetpos and fsetpos functions and we will output the
|
||||
* appropriate have_fpos.h file body.
|
||||
@@ -40,7 +40,7 @@
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
#if !defined(HAVE_NO_FPOS)
|
||||
#if !defined(HAVE_NO_FGETSETPOS)
|
||||
fpos_t pos; /* file position */
|
||||
|
||||
/* get the current position */
|
||||
@@ -50,8 +50,8 @@ main(void)
|
||||
(void) fsetpos(stdin, &pos);
|
||||
|
||||
/* print a have_fpos.h body that says we have the functions */
|
||||
printf("#undef HAVE_FPOS\n");
|
||||
printf("#define HAVE_FPOS 1 /* yes */\n\n");
|
||||
printf("#undef HAVE_FGETSETPOS\n");
|
||||
printf("#define HAVE_FGETSETPOS 1 /* yes */\n\n");
|
||||
printf("typedef fpos_t FILEPOS;\n");
|
||||
#endif
|
||||
/* exit(0); */
|
||||
|
@@ -24,12 +24,6 @@
|
||||
* Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|
||||
*/
|
||||
|
||||
/*
|
||||
* If the symbol HAVE_NO_FPOS is defined, we will output nothing.
|
||||
* If the HAVE_FILEPOS_SCALAR is defined, we will output nothing.
|
||||
* If we are able to compile this program, then we must have the
|
||||
* __pos element in a non-scalar FILEPOS.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "have_fpos.h"
|
||||
@@ -42,29 +36,43 @@
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
#if !defined(HAVE_NO_FPOS) && !defined(HAVE_FILEPOS_SCALAR)
|
||||
fpos_t pos; /* file position */
|
||||
#if defined(HAVE_FILEPOS_SCALAR)
|
||||
|
||||
/* print a __pos element in fpos_t */
|
||||
printf("#undef HAVE_FPOS_POS\n");
|
||||
printf("#define HAVE_FPOS_POS 1 /* yes */\n\n");
|
||||
|
||||
/* determine __pos element size */
|
||||
printf("#undef FPOS_POS_BITS\n");
|
||||
printf("#undef FPOSPOS_LEN\n");
|
||||
# if defined(FPOS_POS_BITS)
|
||||
printf("#define FPOS_POS_BITS %d\n", FPOS_POS_BITS);
|
||||
printf("#define FPOSPOS_LEN %d\n", int(FPOS_POS_BITS/8));
|
||||
# else
|
||||
printf("#define FPOS_POS_BITS %lu\n", sizeof(pos.__pos)*8);
|
||||
printf("#define FPOSPOS_LEN %lu\n", sizeof(pos.__pos));
|
||||
# endif
|
||||
|
||||
#else
|
||||
/* we have no __pos element */
|
||||
printf("/* HAVE_FILEPOS_SCALAR is defined, we assume FILEPOS is scalar */\n");
|
||||
printf("/* we assume we have no __pos in FILEPOS */\n");
|
||||
printf("#undef HAVE_FPOS_POS\t/* no */\n");
|
||||
printf("#undef FPOS_POS_BITS\n");
|
||||
printf("#undef FPOSPOS_LEN\n");
|
||||
printf("#undef FPOS_POS_LEN\n");
|
||||
|
||||
#else
|
||||
|
||||
printf("/* HAVE_FILEPOS_SCALAR is undefined, we assume FILEPOS is not scalar */\n");
|
||||
# if defined(HAVE_NO_FPOS_POS)
|
||||
printf("/* HAVE_NO_FPOS_POS defiled, we assume we have no __pos in FILEPOS */\n");
|
||||
printf("#undef HAVE_FPOS_POS\t/* no */\n");
|
||||
printf("#undef FPOS_POS_BITS\n");
|
||||
printf("#undef FPOS_POS_LEN\n");
|
||||
|
||||
# elif defined(FPOS_POS_BITS)
|
||||
printf("/* FPOS_POS_BITS defiled, assume we have __pos in FILEPOS */\n");
|
||||
printf("#undef HAVE_FPOS_POS\n");
|
||||
printf("#define HAVE_FPOS_POS 1 /* yes */\n");
|
||||
printf("#undef FPOS_POS_BITS\n");
|
||||
printf("#define FPOS_POS_BITS %d\n", FPOS_POS_BITS);
|
||||
printf("#undef FPOS_POS_LEN\n");
|
||||
printf("#define FPOS_POS_LEN %d\n", int(FPOS_POS_BITS/8));
|
||||
# else
|
||||
fpos_t pos; /* file position */
|
||||
|
||||
memset(&pos, 0, sizeof(pos)); /* zeroize pos to "set it" */
|
||||
printf("/* we successfully compiled with a fpos_t type wit an __pos element */\n");
|
||||
printf("#undef HAVE_FPOS_POS\n");
|
||||
printf("#define HAVE_FPOS_POS 1 /* yes */\n");
|
||||
printf("#undef FPOS_POS_BITS\n");
|
||||
printf("#define FPOS_POS_BITS %lu\n", sizeof(pos.__pos)*8);
|
||||
printf("#undef FPOS_POS_LEN\n");
|
||||
printf("#define FPOS_POS_LEN %lu\n", sizeof(pos.__pos));
|
||||
# endif
|
||||
#endif
|
||||
/* exit(0); */
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user