20 #include <sys/types.h> 83 if(!sion_fileptr->fileptr) {
85 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"error: could not open file (ANSI), %s %d %d, aborting ...\n", fname, flags, addflags);
92 if(sion_fileptr->fd<0) {
94 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"error: could not open file (POSIX), %s %d %d, aborting ...\n", fname, flags, addflags);
100 if(sion_fileptr->flags == 0) {
102 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: unknown open type, %s %d %d, aborting ...\n", fname, flags, addflags);
106 return(sion_fileptr);
110 #define DFUNCTION "_sion_file_close" 118 int rc = SION_SUCCESS;
122 sion_fileptr->second_fileptr=NULL;
125 sion_fileptr->fileptr=NULL;
131 DPRINTFP((32, DFUNCTION, -1,
"free now fileptr=%x %d rc=%d\n",sion_fileptr,sion_fileptr->flags,rc));
148 sion_int64 bytes_written=0;
155 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_file_write: cannot find valid file flag (flags=%d)\n",sion_fileptr->flags));
157 return(bytes_written);
170 sion_int64 bytes_read=0;
177 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_file_read: cannot find valid file flag (flags=%d)\n",sion_fileptr->flags));
190 long opt_size=SION_SIZE_NOT_VALID;
213 #if defined(_SION_LINUX) 214 if (stat(fname, &sbuf) == 0) file_exists=1;
215 #elif defined(_SION_DARWIN) 216 if (stat(fname, &sbuf) == 0) file_exists=1;
217 #elif defined(_SION_AIX) 218 if (stat(fname, &sbuf) == 0) file_exists=1;
219 #elif defined(_SION_BGL) 220 if (stat(fname, &sbuf) == 0) file_exists=1;
221 #elif defined(_SION_BGP) 222 if (stat(fname, &sbuf) == 0) file_exists=1;
223 #elif defined(_SION_BGQ) 224 if (stat(fname, &sbuf) == 0) file_exists=1;
225 #elif defined(_SION_XT) 226 if (stat(fname, &sbuf) == 0) file_exists=1;
228 return (file_exists);
239 sion_int64 posinfile=SION_SIZE_NOT_VALID;
242 #ifdef FLUSH_BEFORE_SETPOS 243 _sion_flush_file_fp(sion_fileptr);
269 sion_int64 posinfile=SION_SIZE_NOT_VALID;
272 #ifdef FLUSH_BEFORE_SETPOS 379 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: second fileptr already set, aborting ...\n"));
382 sion_fileptr->second_fileptr=fileptr;
384 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: second fileptr could not be set for POSIX file, aborting ...\n"));
400 sion_fileptr->second_fileptr=NULL;
402 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: second fileptr was not set, aborting ...\n"));
405 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: second fileptr could not be unset for POSIX file, aborting ...\n"));
417 int fd=SION_ID_UNDEF;
423 fd=fileno(sion_fileptr->second_fileptr);
425 fd=fileno(sion_fileptr->fileptr);
447 #if defined(_SION_LINUX) 448 fileptr = fopen(fname,
"w");
449 #elif defined(_SION_DARWIN) 450 fileptr = fopen(fname,
"w");
451 #elif defined(_SION_AIX) 456 fd_oflag |= O_CREAT | O_RDWR;
457 fd = open64(fname, fd_oflag, 0664);
459 fileptr = fdopen(fd,
"w");
462 #elif defined(_SION_BGL) 463 fileptr = fopen(fname,
"w");
464 #elif defined(_SION_BGP) 469 fd_oflag |= O_CREAT | O_RDWR;
470 fd = open64(fname, fd_oflag, 0664);
472 fileptr = fdopen(fd,
"w");
475 #elif defined(_SION_BGQ) 480 fd_oflag |= O_CREAT | O_RDWR;
481 fd = open64(fname, fd_oflag, 0664);
483 fileptr = fdopen(fd,
"w");
486 #elif defined(_SION_XT) 487 fileptr = fopen(fname,
"w");
501 #if defined(_SION_LINUX) 503 fileptr = fopen(fname,
"r+");
504 #elif defined(_SION_DARWIN) 505 fileptr = fopen(fname,
"r+");
506 #elif defined(_SION_AIX) 511 fd_oflag |= O_CREAT | O_RDWR;
512 fd = open64(fname, fd_oflag, 0664);
514 fileptr = fdopen(fd,
"r+");
517 #elif defined(_SION_BGL) 518 fileptr = fopen(fname,
"r+");
519 #elif defined(_SION_BGP) 525 fd = open64(fname, fd_oflag, 0664);
527 fileptr = fdopen(fd,
"r+");
530 #elif defined(_SION_BGQ) 536 fd = open64(fname, fd_oflag, 0664);
538 fileptr = fdopen(fd,
"r+");
541 #elif defined(_SION_XT) 542 fileptr = fopen(fname,
"r+");
557 #if defined(_SION_LINUX) 558 fileptr = fopen(fname,
"r");
559 #elif defined(_SION_DARWIN) 560 fileptr = fopen(fname,
"r");
561 #elif defined(_SION_AIX) 566 fd_oflag |= O_RDONLY;
567 fd = open64(fname, fd_oflag, 0664);
569 fileptr = fdopen(fd,
"r");
572 #elif defined(_SION_BGL) 573 fileptr = fopen(fname,
"r");
574 #elif defined(_SION_BGP) 579 fd_oflag |= O_RDONLY;
580 fd = open64(fname, fd_oflag, 0664);
582 fileptr = fdopen(fd,
"r");
585 #elif defined(_SION_BGQ) 590 fd_oflag |= O_RDONLY;
591 fd = open64(fname, fd_oflag, 0664);
593 fileptr = fdopen(fd,
"r");
596 #elif defined(_SION_XT) 597 fileptr = fopen(fname,
"r");
610 #if defined(_SION_LINUX) 611 frc= fclose(fileptr);
612 #elif defined(_SION_DARWIN) 613 frc= fclose(fileptr);
614 #elif defined(_SION_AIX) 615 frc= fclose(fileptr);
616 #elif defined(_SION_BGL) 617 frc= fclose(fileptr);
618 #elif defined(_SION_BGP) 619 frc= fclose(fileptr);
620 #elif defined(_SION_BGQ) 621 frc= fclose(fileptr);
622 #elif defined(_SION_XT) 623 frc= fclose(fileptr);
625 if(frc) rc=SION_NOT_SUCCESS;
638 long opt_size=SION_SIZE_NOT_VALID;
640 fd = fileno(fileptr);
642 #if defined(_SION_LINUX) 643 if (fstat(fd, &sbuf) == 0) opt_size=(long) sbuf.st_blksize;
644 #elif defined(_SION_DARWIN)
645 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
646 #elif defined(_SION_AIX) 647 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
648 #elif defined(_SION_BGL) 649 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
650 #elif defined(_SION_BGP) 651 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
652 #elif defined(_SION_BGQ) 653 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
654 #elif defined(_SION_XT) 655 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
669 sion_int64 newpos = SION_SIZE_NOT_VALID;
671 DPRINTFP((32,
"_sion_set_position_ansi", -1,
"enter (to %lld) (to %ld)\n", (
long long) startpointer, (
long) startpointer));
673 #if defined(_SION_LINUX) 675 off_t offset = (off_t) startpointer;
678 fd = fileno(fileptr);
679 if (offset != startpointer) {
680 DPRINTFP((32,
"_sion_set_position_ansi", -1,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
681 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
682 return(
_sion_errorprint(SION_SIZE_NOT_VALID,_SION_ERROR_RETURN,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
683 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
685 newpos = result = lseek(fd, offset, SEEK_SET);
686 DPRINTFP((1024,
"_sion_set_position_ansi", -1,
"set position=%lld (LINUX)\n", (
long long) result));
688 #elif defined(_SION_DARWIN) 690 off_t offset = (off_t) startpointer;
692 if (offset != startpointer) {
693 return(
_sion_errorprint(SION_SIZE_NOT_VALID,_SION_ERROR_RETURN,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
694 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
696 newpos = result = fseek(fileptr, offset, SEEK_SET);
697 DPRINTFP((1024,
"_sion_set_position_ansi", -1,
"set position=%lld (LINUX)\n", (
long long) result));
699 #elif defined(_SION_AIX) 700 off64_t offset = (off_t) startpointer;
702 if (offset != startpointer) {
703 return(
_sion_errorprint(SION_SIZE_NOT_VALID,_SION_ERROR_RETURN,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
704 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
706 result = fseeko64(fileptr, offset, SEEK_SET);
707 newpos = result = ftello64(fileptr);
708 #elif defined(_SION_BGL) 709 off_t offset = (off_t) startpointer;
712 if (offset != startpointer) {
713 return(
_sion_errorprint(SION_SIZE_NOT_VALID,_SION_ERROR_RETURN,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
714 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
716 fd = fileno(fileptr);
717 newpos = result = lseek(fd, offset, SEEK_SET);
718 #elif defined(_SION_BGP) 719 off_t offset = (off_t) startpointer;
722 if (offset != startpointer) {
723 return(
_sion_errorprint(SION_SIZE_NOT_VALID,_SION_ERROR_RETURN,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
724 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
726 fd = fileno(fileptr);
727 newpos = result = lseek(fd, offset, SEEK_SET);
728 #elif defined(_SION_BGQ) 729 off_t offset = (off_t) startpointer;
732 if (offset != startpointer) {
733 return(
_sion_errorprint(SION_SIZE_NOT_VALID,_SION_ERROR_RETURN,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
734 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
736 fd = fileno(fileptr);
737 newpos = result = lseek(fd, offset, SEEK_SET);
738 #elif defined(_SION_XT) 740 off_t offset = (off_t) startpointer;
743 if (offset != startpointer) {
744 return(
_sion_errorprint(SION_SIZE_NOT_VALID,_SION_ERROR_RETURN,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
745 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
747 fd = fileno(fileptr);
748 newpos = result = lseek(fd, offset, SEEK_SET);
751 DPRINTFP((32,
"_sion_set_position_ansi", -1,
"leave (to %lld)\n",(
long long) startpointer));
766 #if defined(_SION_LINUX) 769 int fd = fileno(fileptr);
770 resulto = lseek(fd,0,SEEK_CUR);
771 result = (sion_int64) resulto;
772 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (LINUX)\n", (
long) result));
774 #elif defined(_SION_DARWIN) 777 resulto = ftello(fileptr);
778 result = (sion_int64) resulto;
779 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (DARWIN)\n", (
long) result));
781 #elif defined(_SION_AIX) 783 result = ftell(fileptr);
784 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (AIX)\n", result));
786 #elif defined(_SION_BGL) 789 int fd = fileno(fileptr);
790 resulto = lseek(fd, 0, SEEK_CUR);
791 result = (sion_int64) resulto;
792 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (BGL)\n", result));
794 #elif defined(_SION_BGP) 797 int fd = fileno(fileptr);
798 resulto = lseek(fd, 0, SEEK_CUR);
799 result = (sion_int64) resulto;
800 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (BGP)\n", result));
802 #elif defined(_SION_BGQ) 805 int fd = fileno(fileptr);
806 resulto = lseek(fd, 0, SEEK_CUR);
807 result = (sion_int64) resulto;
808 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (BGQ)\n", result));
810 #elif defined(_SION_XT) 813 int fd = fileno(fileptr);
814 resulto = lseek(fd, 0, SEEK_CUR);
815 result = (sion_int64) resulto;
816 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (XT)\n", result));
832 int rc = SION_SUCCESS;
835 #if defined(_SION_BGP) 837 #elif defined(_SION_BGQ) 842 if(frc) rc=SION_NOT_SUCCESS;
855 int rc = SION_SUCCESS;
858 #if defined(_SION_BGP) 864 #elif defined(_SION_BGQ) 874 if(frc) rc=SION_NOT_SUCCESS;
891 int rc = SION_SUCCESS;
894 DPRINTFP((32,
"_sion_file_set_buffer", -1,
"set buffer of fileptr\n"));
895 #if defined(_SION_BGP) 896 frc=setvbuf(fileptr, buffer, _IOFBF, (
size_t) buffer_size);
897 #elif defined(_SION_BGQ) 898 frc=setvbuf(fileptr, buffer, _IOFBF, (
size_t) buffer_size);
899 #elif defined(_SION_AIX) 900 frc=setvbuf(fileptr, buffer, _IOFBF, (
size_t) buffer_size);
902 frc=setvbuf(fileptr, buffer, _IOFBF, (
size_t) buffer_size);
905 if(frc) rc=SION_NOT_SUCCESS;
919 sion_int64 left,bsumwrote;
920 size_t bwrite, bwrote;
925 dataptr = (
char*) data;
929 bwrote = fwrite(dataptr, 1, bwrite, fileptr);
947 sion_int64 left,bsumread;
948 size_t btoread, bread;
953 dataptr = (
char*) data;
956 while ((left > 0) && (!feof(fileptr))) {
958 bread = fread(dataptr, 1, btoread, fileptr);
981 #if defined(_SION_LINUX) 982 fd_oflag |= O_CREAT | O_RDWR;
983 fd = open(fname, fd_oflag, 0664);
984 #elif defined(_SION_DARWIN) 985 fd_oflag |= O_CREAT | O_RDWR;
986 fd = open(fname, fd_oflag, 0664);
987 #elif defined(_SION_AIX) 988 fd_oflag |= O_CREAT | O_RDWR;
989 fd = open64(fname, fd_oflag, 0664);
990 #elif defined(_SION_BGL) 991 fd_oflag |= O_CREAT | O_RDWR;
992 fd = open64(fname, fd_oflag, 0664);
993 #elif defined(_SION_BGP) 994 fd_oflag |= O_CREAT | O_RDWR;
995 fd = open64(fname, fd_oflag, 0664);
996 #elif defined(_SION_BGQ) 997 fd_oflag |= O_CREAT | O_RDWR;
998 fd = open64(fname, fd_oflag, 0664);
999 #elif defined(_SION_XT) 1000 fd_oflag |= O_CREAT | O_RDWR;
1001 fd = open64(fname, fd_oflag, 0664);
1018 #if defined(_SION_LINUX) 1020 fd = open(fname, fd_oflag, 0664);
1021 #elif defined(_SION_DARWIN) 1023 fd = open(fname, fd_oflag, 0664);
1024 #elif defined(_SION_AIX) 1026 fd = open64(fname, fd_oflag, 0664);
1027 #elif defined(_SION_BGL) 1029 fd = open64(fname, fd_oflag, 0664);
1030 #elif defined(_SION_BGP) 1032 fd = open64(fname, fd_oflag, 0664);
1033 #elif defined(_SION_BGQ) 1035 fd = open64(fname, fd_oflag, 0664);
1036 #elif defined(_SION_XT) 1037 fd_oflag |= O_RDWR|O_NOATIME;
1038 fd = open64(fname, fd_oflag, 0664);
1054 #if defined(_SION_LINUX) 1055 fd_oflag |= O_RDONLY;
1056 fd = open(fname, fd_oflag, 0664);
1057 #elif defined(_SION_DARWIN) 1058 fd_oflag |= O_RDONLY;
1059 fd = open(fname, fd_oflag, 0664);
1060 #elif defined(_SION_AIX) 1061 fd_oflag |= O_RDONLY;
1062 fd = open64(fname, fd_oflag, 0664);
1063 #elif defined(_SION_BGL) 1064 fd_oflag |= O_RDONLY;
1065 fd = open64(fname, fd_oflag, 0664);
1066 #elif defined(_SION_BGP) 1067 fd_oflag |= O_RDONLY;
1068 fd = open64(fname, fd_oflag, 0664);
1069 #elif defined(_SION_BGQ) 1070 fd_oflag |= O_RDONLY;
1071 fd = open64(fname, fd_oflag, 0664);
1072 #elif defined(_SION_XT) 1073 fd_oflag |= O_RDONLY|O_NOATIME;
1074 fd = open(fname, fd_oflag, 0664);
1088 int rc=SION_SUCCESS;
1091 #if defined(_SION_LINUX) 1093 #elif defined(_SION_DARWIN) 1095 #elif defined(_SION_AIX) 1097 #elif defined(_SION_BGL) 1099 #elif defined(_SION_BGP) 1101 #elif defined(_SION_BGQ) 1103 #elif defined(_SION_XT) 1107 if(frc) rc=SION_NOT_SUCCESS;
1119 long opt_size=SION_SIZE_NOT_VALID;
1121 #if defined(_SION_LINUX) 1122 if (fstat(fd, &sbuf) == 0) opt_size=(long) sbuf.st_blksize;
1123 #elif defined(_SION_DARWIN)
1124 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1125 #elif defined(_SION_AIX) 1126 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1127 #elif defined(_SION_BGL) 1128 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1129 #elif defined(_SION_BGP) 1130 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1131 #elif defined(_SION_BGQ) 1132 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1133 #elif defined(_SION_XT) 1134 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1149 sion_int64 newpos = SION_SIZE_NOT_VALID;
1151 DPRINTFP((32,
"_sion_set_position_posix", -1,
"enter (to %lld)\n", (
long long) startpointer));
1153 #if defined(_SION_LINUX) 1155 off_t offset = (off_t) startpointer;
1157 if (offset != startpointer) {
1158 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_set_position_posix: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
1159 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1161 newpos = result = lseek(fd, offset, SEEK_SET);
1162 DPRINTFP((4096,
"_sion_set_position_posix", -1,
"set position=%lld (LINUX)\n", (
long long) result));
1164 #elif defined(_SION_DARWIN) 1166 off_t offset = (off_t) startpointer;
1168 if (offset != startpointer) {
1169 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_set_position_posix: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
1170 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1172 newpos = result = lseek(fd, offset, SEEK_SET);
1173 DPRINTFP((4096,
"_sion_set_position_posix", -1,
"set position=%lld (LINUX)\n", (
long long) result));
1175 #elif defined(_SION_AIX) 1176 off64_t offset = (off_t) startpointer;
1178 if (offset != startpointer) {
1179 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_set_position_posix: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
1180 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1182 newpos = result = lseek(fd, offset, SEEK_SET);
1183 #elif defined(_SION_BGL) 1184 off_t offset = (off_t) startpointer;
1186 if (offset != startpointer) {
1187 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_set_position_posix: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
1188 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1190 newpos = result = lseek(fd, offset, SEEK_SET);
1191 #elif defined(_SION_BGP) 1192 off_t offset = (off_t) startpointer;
1194 if (offset != startpointer) {
1195 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_set_position_posix: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
1196 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1198 newpos = result = lseek(fd, offset, SEEK_SET);
1199 #elif defined(_SION_BGQ) 1200 off_t offset = (off_t) startpointer;
1202 if (offset != startpointer) {
1203 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_set_position_posix: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
1204 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1206 newpos = result = lseek(fd, offset, SEEK_SET);
1207 #elif defined(_SION_XT) 1209 off_t offset = (off_t) startpointer;
1211 if (offset != startpointer) {
1212 return(
_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_set_position_posix: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
1213 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1215 newpos = result = lseek(fd, offset, SEEK_SET);
1218 DPRINTFP((32,
"_sion_set_position_posix", -1,
"leave (to %lld)\n",(
long long) startpointer));
1231 sion_int64 result=SION_SIZE_NOT_VALID;
1233 #if defined(_SION_LINUX) 1236 resulto = lseek(fd,0,SEEK_CUR);
1237 result = (sion_int64) resulto;
1238 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (LINUX)\n", (
long) result));
1240 #elif defined(_SION_DARWIN) 1243 resulto = lseek(fd,0,SEEK_CUR);
1245 result = (sion_int64) resulto;
1246 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (DARWIN)\n", (
long) result));
1248 #elif defined(_SION_AIX) 1251 resulto = lseek(fd,0,SEEK_CUR);
1253 result = (sion_int64) resulto;
1254 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (AIX)\n", (
long) result));
1256 #elif defined(_SION_BGL) 1259 int fd = fileno(fileptr);
1260 resulto = lseek(fd, 0, SEEK_CUR);
1261 result = (sion_int64) resulto;
1262 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (BGL)\n", (
long) result));
1264 #elif defined(_SION_BGP) 1267 resulto = lseek(fd, 0, SEEK_CUR);
1268 result = (sion_int64) resulto;
1269 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (BGP)\n", (
long) result));
1271 #elif defined(_SION_BGQ) 1274 resulto = lseek(fd, 0, SEEK_CUR);
1275 result = (sion_int64) resulto;
1276 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (BGQ)\n", (
long) result));
1278 #elif defined(_SION_XT) 1281 int fd = fileno(fileptr);
1282 resulto = lseek(fd, 0, SEEK_CUR);
1283 result = (sion_int64) resulto;
1284 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (XT)\n", (
long) result));
1299 int rc = SION_SUCCESS;
1301 #if defined(_SION_BGP) 1303 #elif defined(_SION_BGQ) 1310 if(frc) rc=SION_NOT_SUCCESS;
1324 int rc = SION_SUCCESS;
1326 #if defined(_SION_BGP) 1328 #elif defined(_SION_BGQ) 1335 if(frc) rc=SION_NOT_SUCCESS;
1349 int rc = SION_SUCCESS;
1351 DPRINTFP((32,
"_sion_file_set_buffer", -1,
"set buffer of fileptr\n"));
1352 #if defined(_SION_BGP) 1353 #elif defined(_SION_AIX) 1356 if(frc) rc=SION_NOT_SUCCESS;
1369 sion_int64 left,bsumwrote;
1370 size_t bwrite, bwrote;
1375 dataptr = (
char*) data;
1379 bwrote = write(fd, dataptr, bwrite);
1382 bsumwrote += bwrote;
1397 sion_int64 left,bsumread;
1398 size_t btoread, bread;
1403 dataptr = (
char*) data;
1408 bread = read(fd, dataptr, btoread);
1414 if(bread==0)
return(bsumread);
1429 if (sion_fileptr == NULL) {
1430 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"cannot allocate _sion_fileptr structure of size %lu (_sion_fileptr), aborting ...\n",
1434 sion_fileptr->fileptr = NULL;
1435 sion_fileptr->second_fileptr = NULL;
1436 sion_fileptr->fd = -1;
1437 sion_fileptr->flags = 0;
1439 return (sion_fileptr);
1442 #define STR_PRT(X) case X: return # X 1464 if(!sion_fileptr)
return(
"<undefined>");
1465 flags = sion_fileptr->flags;
1470 return(
"<ANSI,WRITE,CREATE>");
1472 return(
"<ANSI,WRITE>");
1475 return(
"<ANSI,READ>");
1481 return(
"<POSIX,WRITE,CREATE>");
1483 return(
"<POSIX,WRITE>");
1486 return(
"<POSIX,READ>");
1490 return(
"<unknown>");
sion_int64 _sion_file_write(const void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr)
Write data to file.
long _sion_file_get_opt_blksize(_sion_fileptr *sion_fileptr)
Get optional file system block size for a file.
sion_int64 _sion_file_get_position(_sion_fileptr *sion_fileptr)
Get new position in file.
sion_int64 _sion_file_set_position(_sion_fileptr *sion_fileptr, sion_int64 startpointer)
Set new position in file.
_sion_fileptr * _sion_file_open(const char *fname, unsigned int flags, unsigned int addflags)
Create and open a new file for writing.
char * _sion_fileptrflags_to_str(unsigned int flag)
long _sion_file_get_opt_blksize_ansi(FILE *fileptr)
ANSI: Get optional file system block size for a file.
#define SION_FILE_FLAG_WRITE
int _sion_file_purge(_sion_fileptr *sion_fileptr)
Purge data to file.
sion_int64 _sion_file_read(void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr)
Read data from file.
int _sion_file_set_buffer(_sion_fileptr *sion_fileptr, char *buffer, sion_int32 buffer_size)
Set buffer of fp.
sion_int64 _sion_file_set_position_posix(int fd, sion_int64 startpointer)
POSIX: Set the start position for the current task.
int _sion_file_get_fd(_sion_fileptr *sion_fileptr)
Utility function: Get POSIX fp.
#define SION_FILE_FLAG_READ
sion_int64 _sion_file_set_position_ansi(FILE *fileptr, sion_int64 startpointer)
ANSI: Set the start position for the current task.
sion_int64 _sion_file_get_position_posix(int fd)
POSIX: Get the current position in file.
long _sion_file_get_opt_blksize_posix(int fd)
POSIX: Get optional file system block size for a file.
sion_int64 _sion_file_read_ansi(void *data, sion_int64 bytes, FILE *fileptr)
ANSI: Read data from file.
#define SION_FILE_FLAG_POSIX
sion_int64 _sion_file_get_position_ansi(FILE *fileptr)
ANSI: Get the current position in file.
int _sion_file_set_buffer_ansi(FILE *fileptr, char *buffer, sion_int32 buffer_size)
ANSI: set buffer of fp.
int _sion_file_stat_file(const char *fname)
Check if file exists (LARGE_FILE support on BlueGene)
#define SION_FILE_FLAG_ANSI
#define SION_FILE_FLAG_CREATE
char * _sion_get_fileptr_desc(_sion_fileptr *sion_fileptr)
int _sion_file_close(_sion_fileptr *sion_fileptr)
Close file and destroys fileptr structure.
FILE * _sion_file_open_ansi_read(const char *fname, unsigned int addflags)
ANSI: Open a file for reading.
int _sion_errorprint(int rc, int level, const char *format,...)
Internal SION error.
sion_int64 _sion_file_write_ansi(const void *data, sion_int64 bytes, FILE *fileptr)
ANSI: Write data to file.
int _sion_file_flush_posix(int fd)
POSIX: Flush the data to the disk.
int _sion_file_set_second_fileptr(_sion_fileptr *sion_fileptr, FILE *fileptr)
Set second fileptr for file if opened with ANSI.
int _sion_file_unset_second_fileptr(_sion_fileptr *sion_fileptr)
Unset second fileptr for file if opened with ANSI.
sion_int64 _sion_file_read_posix(void *data, sion_int64 bytes, int fd)
POSIX: Read data from file.
sion_int64 _sion_file_write_posix(const void *data, sion_int64 bytes, int fd)
POSIX: Write data to file.
int _sion_file_flush_ansi(FILE *fileptr)
ANSI: Flush the data to the disk.
FILE * _sion_file_open_ansi_write_create(const char *fname, unsigned int addflags)
ANSI: Create and open a new file for writing.
int _sion_file_open_posix_write_create(const char *fname, unsigned int addflags)
POSIX: Create and open a new file for writing.
int _sion_file_open_posix_write_existing(const char *fname, unsigned int addflags)
POSIX: Open a new file for writing.
int _sion_file_purge_ansi(FILE *fileptr)
ANSI: Purge the data to the disk.
int _sion_file_open_posix_read(const char *fname, unsigned int addflags)
POSIX: Open a file for reading.
int _sion_flush_file(int sid)
Flush the data to the disk for the current task.
int _sion_file_flush(_sion_fileptr *sion_fileptr)
Flush data to file.
_sion_fileptr * _sion_file_alloc_and_init_sion_fileptr()
Create and return _sion_fileptr.
FILE * _sion_file_open_ansi_write_existing(const char *fname, unsigned int addflags)
ANSI: Open a new file for writing.
int _sion_file_purge_posix(int fd)
POSIX: Purge the data to the disk.
int _sion_file_close_posix(int fd)
POSIX: Close a file.
int _sion_file_set_buffer_posix(int fd, char *buffer, sion_int32 buffer_size)
POSIX: set buffer of fd.
int _sion_file_close_ansi(FILE *fileptr)
ANSI: Close a file.
#define SION_FILE_FLAG_SCNDANSI