diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2002-01-11 15:41:48 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2002-01-11 15:41:48 (GMT) |
commit | aabfa5c03f1637afce3b04d0c9cdb30360c30a18 (patch) | |
tree | 7d13d0693e2a0b15be7b59541f2be6f84ca92d8b | |
parent | c5d5a551c93abd0e26d955d40c27beaed297045b (diff) | |
download | hdf5-aabfa5c03f1637afce3b04d0c9cdb30360c30a18.zip hdf5-aabfa5c03f1637afce3b04d0c9cdb30360c30a18.tar.gz hdf5-aabfa5c03f1637afce3b04d0c9cdb30360c30a18.tar.bz2 |
[svn-r4813] Purpose:
Bug fix
Description:
HDfprintf was not handling Microsoft's "%I64d" extension to printf for
printing thier '__int64' type.
Solution:
Added code to properly detect and use this extension.
Platforms tested:
None! (Kent will be testing shortly)
-rw-r--r-- | src/H5.c | 26 |
1 files changed, 18 insertions, 8 deletions
@@ -797,7 +797,7 @@ HDfprintf (FILE *stream, const char *fmt, ...) } /* Type modifier */ - if (HDstrchr ("ZHhlqL", *s)) { + if (HDstrchr ("ZHhlqLI", *s)) { switch (*s) { case 'H': if (sizeof(hsize_t)<sizeof(long)) { @@ -818,16 +818,26 @@ HDfprintf (FILE *stream, const char *fmt, ...) } break; default: - /* Handle 'll' for long long types */ - if(*s=='l' && *(s+1)=='l') { + /* Handle 'I64' modifier for Microsoft's "__int64" type */ + if(*s=='I' && *(s+1)=='6' && *(s+2)=='4') { modifier[0] = *s; - modifier[1] = *s; - modifier[2] = '\0'; - s++; /* Increment over first 'l', second is taken care of below */ + modifier[1] = *(s+1); + modifier[2] = *(s+2); + modifier[3] = '\0'; + s+=2; /* Increment over 'I6', the '4' is taken care of below */ } /* end if */ else { - modifier[0] = *s; - modifier[1] = '\0'; + /* Handle 'll' for long long types */ + if(*s=='l' && *(s+1)=='l') { + modifier[0] = *s; + modifier[1] = *s; + modifier[2] = '\0'; + s++; /* Increment over first 'l', second is taken care of below */ + } /* end if */ + else { + modifier[0] = *s; + modifier[1] = '\0'; + } /* end else */ } /* end else */ break; } |