Skip to content

Commit 2168045

Browse files
committed
Improved checks for scanf %lld and %qd as per gc-devel mail.
* acinclude.m4: create a SCANF_QD_CHECK and make sure both that and SCANF_LLD_CHECK are "long long" constant-safe * configure.in: use the new SCANF_QD_CHECK and use it earlier in the configuration. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@10161 57a11ea4-9604-0410-9ed3-97b8803252fd
1 parent f732926 commit 2168045

File tree

3 files changed

+48
-26
lines changed

3 files changed

+48
-26
lines changed

ChangeLog

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
2004-07-04 Derek Atkins <derek@ihtfp.com>
2+
3+
* acinclude.m4: create a SCANF_QD_CHECK and make sure both
4+
that and SCANF_LLD_CHECK are "long long" constant-safe
5+
* configure.in: use the new SCANF_QD_CHECK and use it
6+
earlier in the configuration.
7+
18
2004-07-02 Derek Atkins <derek@ihtfp.com>
29

310
* src/gnome/dialog-print-check.c:

acinclude.m4

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4337,9 +4337,12 @@ AC_DEFUN([SCANF_LLD_CHECK],
43374337
int main ()
43384338
{
43394339
long long int d;
4340+
long long int e;
43404341
43414342
d = 0;
4342-
if ((sscanf ("10000000000", "%lld", &d) != 1) || (d != 10000000000))
4343+
e = 100000;
4344+
e *= 100000;
4345+
if ((sscanf ("10000000000", "%lld", &d) != 1) || (d != e))
43434346
exit (1);
43444347
43454348
exit (0);
@@ -4352,3 +4355,33 @@ int main ()
43524355
[Define if scanf supports %lld conversions.])
43534356
fi
43544357
])
4358+
4359+
AC_DEFUN([SCANF_QD_CHECK],
4360+
[
4361+
AC_CACHE_CHECK([if scanf supports %qd conversions],
4362+
am_cv_scanf_qd,
4363+
AC_TRY_RUN([
4364+
#include <stdio.h>
4365+
#include <stdlib.h>
4366+
4367+
int main ()
4368+
{
4369+
long long int d;
4370+
long long int e;
4371+
4372+
d = 0;
4373+
e = 100000;
4374+
e *= 100000;
4375+
if ((sscanf ("10000000000", "%qd", &d) != 1) || (d != e))
4376+
exit (1);
4377+
4378+
exit (0);
4379+
}
4380+
],
4381+
am_cv_scanf_qd=yes,
4382+
am_cv_scanf_qd=no))
4383+
if test $am_cv_scanf_qd = yes; then
4384+
AC_DEFINE(HAVE_SCANF_QD, 1,
4385+
[Define if scanf supports %qd conversions.])
4386+
fi
4387+
])

configure.in

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,13 @@ AC_CHECK_FUNCS(stpcpy memcpy timegm towupper)
106106

107107
STRUCT_TM_GMTOFF_CHECK
108108
SCANF_LLD_CHECK
109+
if test $am_cv_scanf_lld = "no"; then
110+
SCANF_QD_CHECK
111+
112+
if test $am_cv_scanf_qs = "no"; then
113+
AC_MSG_ERROR([cannot continue, no long long conversion support in scanf])
114+
fi
115+
fi
109116

110117
AC_CHECK_HEADERS(ltdl.h)
111118
if test "x$ac_cv_header_ltdl_h" = xno; then
@@ -1030,31 +1037,6 @@ else
10301037
fi
10311038
AC_SUBST(LC_MESSAGES_ENUM)
10321039

1033-
if test $am_cv_scanf_lld = "no"; then
1034-
AC_MSG_CHECKING(if scanf supports %qd conversion)
1035-
AC_TRY_RUN([
1036-
#include <stdio.h>
1037-
#include <stdlib.h>
1038-
1039-
int main ()
1040-
{
1041-
long long int d;
1042-
d = 0;
1043-
if ((sscanf ("10000000000", "%qd", &d) != 1) || (d != 10000000000))
1044-
exit (1);
1045-
exit (0);
1046-
}
1047-
],[
1048-
AC_DEFINE(HAVE_SCANF_QD, 1,
1049-
[Define if scanf supports %qd conversions.])
1050-
AC_MSG_RESULT(yes)
1051-
],[
1052-
AC_MSG_RESULT(no)
1053-
AC_MSG_ERROR([cannot continue, no long long conversion support in scanf])
1054-
])
1055-
fi
1056-
1057-
10581040
### --------------------------------------------------------------------------
10591041
### GnuCash flags and libs configuration
10601042

0 commit comments

Comments
 (0)