Sat 28 Oct 2006 04:57:07 AM UTC, comment #1:
The error log of "make check" is the following.
These fails are corrected with my patch.
If you do not want to leave errno adjusted to 0, errno might have to be preserved in old_errno beforehand.
http://www.google.com/codesearch?q=old_errno+errno+strtol&btnG=Search+Code
--
demo-n
++ WARN: string 'ABC!123' is getting truncated to 2 characters
Years aren't equal. get: 106, set 105
Months aren't equal. get: 9, set 11
Month days aren't equal. get: 28, set 31
minute aren't equal. get: 10, set 0
seconds aren't equal. get: 44, set 0
Year days aren't equal. get: 300, set 364
local time retrieved with iso9660_get_ltime() not
same as that set with iso9660_set_ltime().
FAIL: testiso9660
INFO: ./cdtext.toc line 47: unimplimented keyword: SILENCE
Correct: cdtext.toc parses as a cdrdao TOC file.
INFO: ./t1.toc line 5: unimplimented keyword: SILENCE
Correct: t1.toc parses as a cdrdao TOC file.
Correct: t2.toc parses as a cdrdao TOC file.
Correct: t3.toc parses as a cdrdao TOC file.
Correct: t4.toc parses as a cdrdao TOC file.
Correct: t5.toc parses as a cdrdao TOC file.
Correct: t6.toc parses as a cdrdao TOC file.
Correct: t7.toc parses as a cdrdao TOC file.
Correct: t8.toc parses as a cdrdao TOC file.
Correct: t9.toc parses as a cdrdao TOC file.
INFO: ./data1.toc line 7: unimplimented keyword: SILENCE
Correct: data1.toc parses as a cdrdao TOC file.
INFO: ./data2.toc line 8: unimplimented keyword: ZERO
Correct: data2.toc parses as a cdrdao TOC file.
Correct: data5.toc parses as a cdrdao TOC file.
Correct: data6.toc parses as a cdrdao TOC file.
Correct: data7.toc parses as a cdrdao TOC file.
INFO: ./vcd2.toc line 16: can't convert `1051200' to byte offset
Incorrect: vcd2.toc doesn't parse as a cdrdao TOC file.
INFO: ./bad-msf-1.toc line 6: invalid MSF string 0:0:75
Correct: bad-msf-1.toc doesn't parse as a cdrdao TOC file.
INFO: ./bad-msf-2.toc line 6: invalid MSF string 0:60:0
Correct: bad-msf-2.toc doesn't parse as a cdrdao TOC file.
INFO: ./bad-msf-3.toc line 6: invalid MSF string xx:yy:zz
Correct: bad-msf-3.toc doesn't parse as a cdrdao TOC file.
INFO: ./bad-cat1.toc line 4 after word CATALOG:
INFO: Expecting 13 digits; nothing seen.
Correct: bad-cat1.toc doesn't parse as a cdrdao TOC file.
INFO: ./bad-cat2.toc line 4 after word CATALOG:
INFO: Token 167890123 has length 11. Should be 13 digits.
Correct: bad-cat2.toc doesn't parse as a cdrdao TOC file.
INFO: ./bad-cat3.toc line 4 after word CATALOG:
INFO: Character "A" at postition 10 of token "123456789A123" is not all digits.
Correct: bad-cat3.toc doesn't parse as a cdrdao TOC file.
++ WARN: could not retrieve file info for `foo.bin': No such file or directory
INFO: ./bad-file.toc line 8: can't open file `foo.bin' for reading
Correct: bad-file.toc doesn't parse as a cdrdao TOC file.
INFO: ./bad-mode1.toc line 4 after TRACK:
INFO: 'MODE1_FORM45' not a valid mode.
Correct: bad-mode1.toc doesn't parse as a cdrdao TOC file.
FAIL: testtoc
|
Fri 27 Oct 2006 06:40:32 PM UTC, original submission:
"make check" sometimes fails on some platforms (for example, Mac OS X 10.4.8).
Please reset errno before strtol().
--
demo-n
diff -Naur libcdio.orig/example/cdchange.c libcdio/example/cdchange.c
--- libcdio.orig/example/cdchange.c 2006-01-24 09:53:19.000000000 +0900
+++ libcdio/example/cdchange.c 2006-10-28 03:17:10.000000000 +0900
@@ -50,6 +50,7 @@
if (argc > 1) {
p_cdio = cdio_open (argv[1], DRIVER_DEVICE);
if (argc > 2) {
+ errno = 0;
i_sleep = strtol(argv[2], (char **)NULL, 10);
if (errno != 0) {
printf("Invalid sleep parameter %s\n", argv[2]);
diff -Naur libcdio.orig/lib/driver/image/cdrdao.c libcdio/lib/driver/image/cdrdao.c
--- libcdio.orig/lib/driver/image/cdrdao.c 2006-02-27 19:27:39.000000000 +0900
+++ libcdio/lib/driver/image/cdrdao.c 2006-10-28 03:13:48.000000000 +0900
@@ -758,6 +758,7 @@
if ( psz_field[0] == '#') {
long int offset;
psz_field++;
+ errno = 0;
offset = strtol(psz_field, (char **)NULL, 10);
if ( 0 != errno ) {
cdio_log (log_level,
diff -Naur libcdio.orig/lib/iso9660/iso9660.c libcdio/lib/iso9660/iso9660.c
--- libcdio.orig/lib/iso9660/iso9660.c 2006-10-24 22:41:00.000000000 +0900
+++ libcdio/lib/iso9660/iso9660.c 2006-10-28 03:14:41.000000000 +0900
@@ -169,6 +169,7 @@
char num[10]; \
memcpy(num, p_ldate->LT_FIELD, sizeof(p_ldate->LT_FIELD)); \
num[sizeof(p_ldate->LT_FIELD)+1] = '\0'; \
+ errno = 0; \
p_tm->TM_FIELD = strtol(num, \
(char **)NULL, 10)+ADD_CONSTANT; \
if (0 != errno) return false; \
diff -Naur libcdio.orig/src/cd-paranoia/cd-paranoia.c libcdio/src/cd-paranoia/cd-paranoia.c
--- libcdio.orig/src/cd-paranoia/cd-paranoia.c 2006-03-18 10:28:14.000000000 +0900
+++ libcdio/src/cd-paranoia/cd-paranoia.c 2006-10-28 03:15:46.000000000 +0900
@@ -652,6 +652,7 @@
" but not found. Option ignored\n", c);
return false;
}
+ errno = 0;
i_arg = strtol(optarg, &p_end, 10);
if (errno == ERANGE) {
fprintf(stderr,
|