1
1
#define NUITKAPYTHON_EMBED_BUILD
2
-
2
+ #define _FILE_OFFSET_BITS =64
3
3
#include "np_embed.h"
4
4
#include <ctype.h>
5
5
#include <stdarg.h>
@@ -522,25 +522,42 @@ NP_DECL(int) np_getc_unlocked(void* e) {
522
522
}
523
523
#endif
524
524
525
- NP_DECL (long int ) np_ftell (void * e ) {
525
+
526
+ int64_t np_ftell_priv (void * e ) {
526
527
if (NP_FOREIGN_PTR ) {
527
- return ftell ((FILE * )e );
528
+ #ifdef _WIN32
529
+ return _ftelli64 ((FILE * )e );
530
+ #else
531
+ return ftello ((FILE * )e );
532
+ #endif
528
533
}
529
534
530
535
if (((EFILE * )e )-> handle_type != EHANDLE_VIRTUAL ) {
531
- return ftell (((EFILE * )e )-> f );
536
+ #ifdef _WIN32
537
+ return _ftelli64 (((EFILE * )e )-> f );
538
+ #else
539
+ return ftello (((EFILE * )e )-> f );
540
+ #endif
532
541
}
533
542
534
543
return (((EFILE * )e )-> end - ((EFILE * )e )-> pos ) - ((EFILE * )e )-> size ;
535
544
}
536
545
537
- NP_DECL ( int ) np_fseek (void * e , long int offset , int origin ) {
546
+ int np_fseek_priv (void * e , int64_t offset , int origin ) {
538
547
if (NP_FOREIGN_PTR ) {
539
- return fseek ((FILE * )e , offset , origin );
548
+ #ifdef _WIN32
549
+ return _fseeki64 ((FILE * )e , offset , origin );
550
+ #else
551
+ return fseeko ((FILE * )e , offset , origin );
552
+ #endif
540
553
}
541
554
542
555
if (((EFILE * )e )-> handle_type != EHANDLE_VIRTUAL ) {
543
- return fseek (((EFILE * )e )-> f , offset , origin );
556
+ #ifdef _WIN32
557
+ return _fseeki64 (((EFILE * )e )-> f , offset , origin );
558
+ #else
559
+ return fseeko (((EFILE * )e )-> f , offset , origin );
560
+ #endif
544
561
}
545
562
546
563
if (origin == SEEK_SET )
@@ -552,12 +569,28 @@ NP_DECL(int) np_fseek(void* e, long int offset, int origin) {
552
569
553
570
if (((EFILE * )e )-> end < ((EFILE * )e )-> pos || np_ftell (e ) < 0 ) {
554
571
errno = EINVAL ;
555
- return true ;
572
+ return -1 ;
556
573
}
557
574
558
575
return 0 ;
559
576
}
560
577
578
+ NP_DECL (long int ) np_ftell (void * e ) {
579
+ return np_ftell_priv (e );
580
+ }
581
+
582
+ NP_DECL (int ) np_fseek (void * e , long int offset , int origin ) {
583
+ return np_fseek_priv (e , offset , origin );
584
+ }
585
+
586
+ NP_DECL (int64_t ) np_ftello64 (void * e ) {
587
+ return np_ftell_priv (e );
588
+ }
589
+
590
+ NP_DECL (int ) np_fseeko64 (void * e , int64_t offset , int origin ) {
591
+ return np_fseek_priv (e , offset , origin );
592
+ }
593
+
561
594
NP_DECL (int ) np_fscanf (void * e , const char * format , ...) {
562
595
if (NP_FOREIGN_PTR ) {
563
596
va_list args ;
0 commit comments