20 #include <sys/types.h> 27 #include "sion_error_handler.h" 84 if(!sion_fileptr->fileptr) {
86 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"error: could not open file (ANSI), %s %d %d, aborting ...\n", fname, flags, addflags);
93 if(sion_fileptr->fd<0) {
95 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"error: could not open file (POSIX), %s %d %d, aborting ...\n", fname, flags, addflags);
101 if(sion_fileptr->flags == 0) {
103 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: unknown open type, %s %d %d, aborting ...\n", fname, flags, addflags);
107 return(sion_fileptr);
111 #define DFUNCTION "_sion_file_close" 119 int rc = SION_SUCCESS;
123 sion_fileptr->second_fileptr=NULL;
126 sion_fileptr->fileptr=NULL;
132 DPRINTFP((32, DFUNCTION, -1,
"free now fileptr=%x %d rc=%d\n",sion_fileptr,sion_fileptr->flags,rc));
149 sion_int64 bytes_written=0;
156 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_file_write: cannot find valid file flag (flags=%d)\n",sion_fileptr->flags));
158 return(bytes_written);
171 sion_int64 bytes_read=0;
178 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"_sion_file_read: cannot find valid file flag (flags=%d)\n",sion_fileptr->flags));
191 long opt_size=SION_SIZE_NOT_VALID;
214 #if defined(_SION_LINUX) 215 if (stat(fname, &sbuf) == 0) file_exists=1;
216 #elif defined(_SION_DARWIN) 217 if (stat(fname, &sbuf) == 0) file_exists=1;
218 #elif defined(_SION_AIX) 219 if (stat(fname, &sbuf) == 0) file_exists=1;
220 #elif defined(_SION_BGL) 221 if (stat(fname, &sbuf) == 0) file_exists=1;
222 #elif defined(_SION_BGP) 223 if (stat(fname, &sbuf) == 0) file_exists=1;
224 #elif defined(_SION_BGQ) 225 if (stat(fname, &sbuf) == 0) file_exists=1;
226 #elif defined(_SION_XT) 227 if (stat(fname, &sbuf) == 0) file_exists=1;
229 return (file_exists);
240 sion_int64 posinfile=SION_SIZE_NOT_VALID;
242 if( sion_fileptr != NULL ) {
245 #ifdef FLUSH_BEFORE_SETPOS 246 _sion_flush_file_fp(sion_fileptr);
273 sion_int64 posinfile=SION_SIZE_NOT_VALID;
275 if(sion_fileptr==NULL)
return(-1);
278 #ifdef FLUSH_BEFORE_SETPOS 331 if( sion_fileptr != NULL ) {
389 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: second fileptr already set, aborting ...\n"));
392 sion_fileptr->second_fileptr=fileptr;
394 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: second fileptr could not be set for POSIX file, aborting ...\n"));
410 sion_fileptr->second_fileptr=NULL;
412 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: second fileptr was not set, aborting ...\n"));
415 return(_sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"internal error: second fileptr could not be unset for POSIX file, aborting ...\n"));
427 int fd=SION_ID_UNDEF;
433 fd=fileno(sion_fileptr->second_fileptr);
435 fd=fileno(sion_fileptr->fileptr);
457 #if defined(_SION_LINUX) 458 fileptr = fopen(fname,
"w");
459 #elif defined(_SION_DARWIN) 460 fileptr = fopen(fname,
"w");
461 #elif defined(_SION_AIX) 466 fd_oflag |= O_CREAT | O_RDWR;
467 fd = open64(fname, fd_oflag, 0664);
469 fileptr = fdopen(fd,
"w");
472 #elif defined(_SION_BGL) 473 fileptr = fopen(fname,
"w");
474 #elif defined(_SION_BGP) 479 fd_oflag |= O_CREAT | O_RDWR;
480 fd = open64(fname, fd_oflag, 0664);
482 fileptr = fdopen(fd,
"w");
485 #elif defined(_SION_BGQ) 490 fd_oflag |= O_CREAT | O_RDWR;
491 fd = open64(fname, fd_oflag, 0664);
493 fileptr = fdopen(fd,
"w");
496 #elif defined(_SION_XT) 497 fileptr = fopen(fname,
"w");
511 #if defined(_SION_LINUX) 513 fileptr = fopen(fname,
"r+");
514 #elif defined(_SION_DARWIN) 515 fileptr = fopen(fname,
"r+");
516 #elif defined(_SION_AIX) 521 fd_oflag |= O_CREAT | O_RDWR;
522 fd = open64(fname, fd_oflag, 0664);
524 fileptr = fdopen(fd,
"r+");
527 #elif defined(_SION_BGL) 528 fileptr = fopen(fname,
"r+");
529 #elif defined(_SION_BGP) 535 fd = open64(fname, fd_oflag, 0664);
537 fileptr = fdopen(fd,
"r+");
540 #elif defined(_SION_BGQ) 546 fd = open64(fname, fd_oflag, 0664);
548 fileptr = fdopen(fd,
"r+");
551 #elif defined(_SION_XT) 552 fileptr = fopen(fname,
"r+");
567 #if defined(_SION_LINUX) 568 fileptr = fopen(fname,
"r");
569 #elif defined(_SION_DARWIN) 570 fileptr = fopen(fname,
"r");
571 #elif defined(_SION_AIX) 576 fd_oflag |= O_RDONLY;
577 fd = open64(fname, fd_oflag, 0664);
579 fileptr = fdopen(fd,
"r");
582 #elif defined(_SION_BGL) 583 fileptr = fopen(fname,
"r");
584 #elif defined(_SION_BGP) 589 fd_oflag |= O_RDONLY;
590 fd = open64(fname, fd_oflag, 0664);
592 fileptr = fdopen(fd,
"r");
595 #elif defined(_SION_BGQ) 600 fd_oflag |= O_RDONLY;
601 fd = open64(fname, fd_oflag, 0664);
603 fileptr = fdopen(fd,
"r");
606 #elif defined(_SION_XT) 607 fileptr = fopen(fname,
"r");
620 #if defined(_SION_LINUX) 621 frc= fclose(fileptr);
622 #elif defined(_SION_DARWIN) 623 frc= fclose(fileptr);
624 #elif defined(_SION_AIX) 625 frc= fclose(fileptr);
626 #elif defined(_SION_BGL) 627 frc= fclose(fileptr);
628 #elif defined(_SION_BGP) 629 frc= fclose(fileptr);
630 #elif defined(_SION_BGQ) 631 frc= fclose(fileptr);
632 #elif defined(_SION_XT) 633 frc= fclose(fileptr);
635 if(frc) rc=SION_NOT_SUCCESS;
648 long opt_size=SION_SIZE_NOT_VALID;
650 fd = fileno(fileptr);
652 #if defined(_SION_LINUX) 653 if (fstat(fd, &sbuf) == 0) opt_size=(long) sbuf.st_blksize;
654 #elif defined(_SION_DARWIN)
655 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
656 #elif defined(_SION_AIX) 657 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
658 #elif defined(_SION_BGL) 659 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
660 #elif defined(_SION_BGP) 661 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
662 #elif defined(_SION_BGQ) 663 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
664 #elif defined(_SION_XT) 665 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
679 sion_int64 newpos = SION_SIZE_NOT_VALID;
681 DPRINTFP((32,
"_sion_set_position_ansi", -1,
"enter (to %lld) (to %ld)\n", (
long long) startpointer, (
long) startpointer));
683 #if defined(_SION_LINUX) 685 off_t offset = (off_t) startpointer;
688 fd = fileno(fileptr);
689 if (offset != startpointer) {
690 DPRINTFP((32,
"_sion_set_position_ansi", -1,
"_sion_set_position_ansi: cannot set position to %ld (%lu),%lld (%lu) offset conversion error\n",
691 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
692 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",
693 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
695 newpos = result = lseek(fd, offset, SEEK_SET);
696 DPRINTFP((1024,
"_sion_set_position_ansi", -1,
"set position=%lld (LINUX)\n", (
long long) result));
698 #elif defined(_SION_DARWIN) 700 off_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 newpos = result = fseek(fileptr, offset, SEEK_SET);
707 DPRINTFP((1024,
"_sion_set_position_ansi", -1,
"set position=%lld (LINUX)\n", (
long long) result));
709 #elif defined(_SION_AIX) 710 off64_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 result = fseeko64(fileptr, offset, SEEK_SET);
717 newpos = result = ftello64(fileptr);
718 #elif defined(_SION_BGL) 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_BGP) 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_BGQ) 739 off_t offset = (off_t) startpointer;
742 if (offset != startpointer) {
743 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",
744 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
746 fd = fileno(fileptr);
747 newpos = result = lseek(fd, offset, SEEK_SET);
748 #elif defined(_SION_XT) 750 off_t offset = (off_t) startpointer;
753 if (offset != startpointer) {
754 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",
755 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
757 fd = fileno(fileptr);
758 newpos = result = lseek(fd, offset, SEEK_SET);
761 DPRINTFP((32,
"_sion_set_position_ansi", -1,
"leave (%lld --> %lld)\n",(
long long) startpointer, (
long long) newpos));
775 sion_int64 result = 0;
776 #if defined(_SION_LINUX) 779 int fd = fileno(fileptr);
780 resulto = lseek(fd,0,SEEK_CUR);
781 result = (sion_int64) resulto;
782 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (LINUX)\n", (
long) result));
784 #elif defined(_SION_DARWIN) 787 resulto = ftello(fileptr);
788 result = (sion_int64) resulto;
789 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (DARWIN)\n", (
long) result));
791 #elif defined(_SION_AIX) 793 result = ftell(fileptr);
794 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (AIX)\n", result));
796 #elif defined(_SION_BGL) 799 int fd = fileno(fileptr);
800 resulto = lseek(fd, 0, SEEK_CUR);
801 result = (sion_int64) resulto;
802 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (BGL)\n", result));
804 #elif defined(_SION_BGP) 807 int fd = fileno(fileptr);
808 resulto = lseek(fd, 0, SEEK_CUR);
809 result = (sion_int64) resulto;
810 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (BGP)\n", result));
812 #elif defined(_SION_BGQ) 815 int fd = fileno(fileptr);
816 resulto = lseek(fd, 0, SEEK_CUR);
817 result = (sion_int64) resulto;
818 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (BGQ)\n", result));
820 #elif defined(_SION_XT) 823 int fd = fileno(fileptr);
824 resulto = lseek(fd, 0, SEEK_CUR);
825 result = (sion_int64) resulto;
826 DPRINTFP((4096,
"_sion_get_position", -1,
"got position=%lld (XT)\n", result));
842 int rc = SION_SUCCESS;
845 #if defined(_SION_BGP) 847 #elif defined(_SION_BGQ) 852 if(frc) rc=SION_NOT_SUCCESS;
865 int rc = SION_SUCCESS;
868 #if defined(_SION_BGP) 874 #elif defined(_SION_BGQ) 884 if(frc) rc=SION_NOT_SUCCESS;
901 int rc = SION_SUCCESS;
904 DPRINTFP((32,
"_sion_file_set_buffer", -1,
"set buffer of fileptr\n"));
905 #if defined(_SION_BGP) 906 frc=setvbuf(fileptr, buffer, _IOFBF, (
size_t) buffer_size);
907 #elif defined(_SION_BGQ) 908 frc=setvbuf(fileptr, buffer, _IOFBF, (
size_t) buffer_size);
909 #elif defined(_SION_AIX) 910 frc=setvbuf(fileptr, buffer, _IOFBF, (
size_t) buffer_size);
912 frc=setvbuf(fileptr, buffer, _IOFBF, (
size_t) buffer_size);
915 if(frc) rc=SION_NOT_SUCCESS;
929 sion_int64 left,bsumwrote;
930 size_t bwrite, bwrote;
935 dataptr = (
char*) data;
939 bwrote = fwrite(dataptr, 1, bwrite, fileptr);
957 sion_int64 left,bsumread;
958 size_t btoread, bread;
963 dataptr = (
char*) data;
965 while ((left > 0) && (!feof(fileptr))) {
967 bread = fread(dataptr, 1, btoread, fileptr);
990 #if defined(_SION_LINUX) 991 fd_oflag |= O_CREAT | O_RDWR;
992 fd = open(fname, fd_oflag, 0664);
993 #elif defined(_SION_DARWIN) 994 fd_oflag |= O_CREAT | O_RDWR;
995 fd = open(fname, fd_oflag, 0664);
996 #elif defined(_SION_AIX) 997 fd_oflag |= O_CREAT | O_RDWR;
998 fd = open64(fname, fd_oflag, 0664);
999 #elif defined(_SION_BGL) 1000 fd_oflag |= O_CREAT | O_RDWR;
1001 fd = open64(fname, fd_oflag, 0664);
1002 #elif defined(_SION_BGP) 1003 fd_oflag |= O_CREAT | O_RDWR;
1004 fd = open64(fname, fd_oflag, 0664);
1005 #elif defined(_SION_BGQ) 1006 fd_oflag |= O_CREAT | O_RDWR;
1007 fd = open64(fname, fd_oflag, 0664);
1008 #elif defined(_SION_XT) 1009 fd_oflag |= O_CREAT | O_RDWR;
1010 fd = open64(fname, fd_oflag, 0664);
1027 #if defined(_SION_LINUX) 1029 fd = open(fname, fd_oflag, 0664);
1030 #elif defined(_SION_DARWIN) 1032 fd = open(fname, fd_oflag, 0664);
1033 #elif defined(_SION_AIX) 1035 fd = open64(fname, fd_oflag, 0664);
1036 #elif defined(_SION_BGL) 1038 fd = open64(fname, fd_oflag, 0664);
1039 #elif defined(_SION_BGP) 1041 fd = open64(fname, fd_oflag, 0664);
1042 #elif defined(_SION_BGQ) 1044 fd = open64(fname, fd_oflag, 0664);
1045 #elif defined(_SION_XT) 1046 fd_oflag |= O_RDWR|O_NOATIME;
1047 fd = open64(fname, fd_oflag, 0664);
1063 #if defined(_SION_LINUX) 1064 fd_oflag |= O_RDONLY;
1065 fd = open(fname, fd_oflag, 0664);
1066 #elif defined(_SION_DARWIN) 1067 fd_oflag |= O_RDONLY;
1068 fd = open(fname, fd_oflag, 0664);
1069 #elif defined(_SION_AIX) 1070 fd_oflag |= O_RDONLY;
1071 fd = open64(fname, fd_oflag, 0664);
1072 #elif defined(_SION_BGL) 1073 fd_oflag |= O_RDONLY;
1074 fd = open64(fname, fd_oflag, 0664);
1075 #elif defined(_SION_BGP) 1076 fd_oflag |= O_RDONLY;
1077 fd = open64(fname, fd_oflag, 0664);
1078 #elif defined(_SION_BGQ) 1079 fd_oflag |= O_RDONLY;
1080 fd = open64(fname, fd_oflag, 0664);
1081 #elif defined(_SION_XT) 1082 fd_oflag |= O_RDONLY|O_NOATIME;
1083 fd = open(fname, fd_oflag, 0664);
1097 int rc=SION_SUCCESS;
1100 #if defined(_SION_LINUX) 1102 #elif defined(_SION_DARWIN) 1104 #elif defined(_SION_AIX) 1106 #elif defined(_SION_BGL) 1108 #elif defined(_SION_BGP) 1110 #elif defined(_SION_BGQ) 1112 #elif defined(_SION_XT) 1116 if(frc) rc=SION_NOT_SUCCESS;
1128 long opt_size=SION_SIZE_NOT_VALID;
1130 #if defined(_SION_LINUX) 1131 if (fstat(fd, &sbuf) == 0) opt_size=(long) sbuf.st_blksize;
1132 #elif defined(_SION_DARWIN)
1133 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1134 #elif defined(_SION_AIX) 1135 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1136 #elif defined(_SION_BGL) 1137 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1138 #elif defined(_SION_BGP) 1139 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1140 #elif defined(_SION_BGQ) 1141 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1142 #elif defined(_SION_XT) 1143 if (fstat(fd, &sbuf) == 0) opt_size=(
long) sbuf.st_blksize;
1158 sion_int64 newpos = SION_SIZE_NOT_VALID;
1160 DPRINTFP((32,
"_sion_set_position_posix", -1,
"enter (to %lld)\n", (
long long) startpointer));
1162 #if defined(_SION_LINUX) 1164 off_t offset = (off_t) startpointer;
1166 if (offset != startpointer) {
1167 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",
1168 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1170 newpos = result = lseek(fd, offset, SEEK_SET);
1171 DPRINTFP((4096,
"_sion_set_position_posix", -1,
"set position=%lld (LINUX)\n", (
long long) result));
1173 #elif defined(_SION_DARWIN) 1175 off_t offset = (off_t) startpointer;
1177 if (offset != startpointer) {
1178 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",
1179 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1181 newpos = result = lseek(fd, offset, SEEK_SET);
1182 DPRINTFP((4096,
"_sion_set_position_posix", -1,
"set position=%lld (LINUX)\n", (
long long) result));
1184 #elif defined(_SION_AIX) 1185 off64_t offset = (off_t) startpointer;
1187 if (offset != startpointer) {
1188 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",
1189 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1191 newpos = result = lseek(fd, offset, SEEK_SET);
1192 #elif defined(_SION_BGL) 1193 off_t offset = (off_t) startpointer;
1195 if (offset != startpointer) {
1196 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",
1197 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1199 newpos = result = lseek(fd, offset, SEEK_SET);
1200 #elif defined(_SION_BGP) 1201 off_t offset = (off_t) startpointer;
1203 if (offset != startpointer) {
1204 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",
1205 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1207 newpos = result = lseek(fd, offset, SEEK_SET);
1208 #elif defined(_SION_BGQ) 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);
1216 #elif defined(_SION_XT) 1218 off_t offset = (off_t) startpointer;
1220 if (offset != startpointer) {
1221 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",
1222 offset, (
unsigned long)
sizeof(offset), startpointer, (
unsigned long)
sizeof(startpointer)));
1224 newpos = result = lseek(fd, offset, SEEK_SET);
1227 DPRINTFP((32,
"_sion_set_position_posix", -1,
"leave (to %lld)\n",(
long long) startpointer));
1240 sion_int64 result=SION_SIZE_NOT_VALID;
1242 #if defined(_SION_LINUX) 1245 resulto = lseek(fd,0,SEEK_CUR);
1246 result = (sion_int64) resulto;
1247 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (LINUX)\n", (
long) result));
1249 #elif defined(_SION_DARWIN) 1252 resulto = lseek(fd,0,SEEK_CUR);
1254 result = (sion_int64) resulto;
1255 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (DARWIN)\n", (
long) result));
1257 #elif defined(_SION_AIX) 1260 resulto = lseek(fd,0,SEEK_CUR);
1262 result = (sion_int64) resulto;
1263 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (AIX)\n", (
long) result));
1265 #elif defined(_SION_BGL) 1268 int fd = fileno(fileptr);
1269 resulto = lseek(fd, 0, SEEK_CUR);
1270 result = (sion_int64) resulto;
1271 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (BGL)\n", (
long) result));
1273 #elif defined(_SION_BGP) 1276 resulto = lseek(fd, 0, SEEK_CUR);
1277 result = (sion_int64) resulto;
1278 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (BGP)\n", (
long) result));
1280 #elif defined(_SION_BGQ) 1283 resulto = lseek(fd, 0, SEEK_CUR);
1284 result = (sion_int64) resulto;
1285 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (BGQ)\n", (
long) result));
1287 #elif defined(_SION_XT) 1290 int fd = fileno(fileptr);
1291 resulto = lseek(fd, 0, SEEK_CUR);
1292 result = (sion_int64) resulto;
1293 DPRINTFP((4096,
"_sion_get_position", -1,
"get position=%ld (XT)\n", (
long) result));
1308 int rc = SION_SUCCESS;
1310 #if defined(_SION_BGP) 1312 #elif defined(_SION_BGQ) 1319 if(frc) rc=SION_NOT_SUCCESS;
1333 int rc = SION_SUCCESS;
1335 #if defined(_SION_BGP) 1337 #elif defined(_SION_BGQ) 1344 if(frc) rc=SION_NOT_SUCCESS;
1358 int rc = SION_SUCCESS;
1360 DPRINTFP((32,
"_sion_file_set_buffer", -1,
"set buffer of fileptr\n"));
1361 #if defined(_SION_BGP) 1362 #elif defined(_SION_AIX) 1365 if(frc) rc=SION_NOT_SUCCESS;
1378 sion_int64 left,bsumwrote;
1379 size_t bwrite, bwrote;
1384 dataptr = (
char*) data;
1388 bwrote = write(fd, dataptr, bwrite);
1391 bsumwrote += bwrote;
1406 sion_int64 left,bsumread;
1407 size_t btoread, bread;
1412 dataptr = (
char*) data;
1416 bread = read(fd, dataptr, btoread);
1422 if(bread==0)
return(bsumread);
1437 if (sion_fileptr == NULL) {
1438 _sion_errorprint(SION_NOT_SUCCESS,_SION_ERROR_RETURN,
"cannot allocate _sion_fileptr structure of size %lu (_sion_fileptr), aborting ...\n",
1442 sion_fileptr->fileptr = NULL;
1443 sion_fileptr->second_fileptr = NULL;
1444 sion_fileptr->fd = -1;
1445 sion_fileptr->flags = 0;
1447 return (sion_fileptr);
1450 #define STR_PRT(X) case X: return # X 1472 if(!sion_fileptr)
return(
"<undefined>");
1473 flags = sion_fileptr->flags;
1478 return(
"<ANSI,WRITE,CREATE>");
1480 return(
"<ANSI,WRITE>");
1483 return(
"<ANSI,READ>");
1489 return(
"<POSIX,WRITE,CREATE>");
1491 return(
"<POSIX,WRITE>");
1494 return(
"<POSIX,READ>");
1498 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.
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