Changeset: 2b50c135ea69 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2b50c135ea69
Modified Files:
gdk/gdk_posix.c
gdk/gdk_private.h
gdk/gdk_storage.c
Branch: default
Log Message:
Move file extension into separate function.
diffs (67 lines):
diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -431,15 +431,7 @@ MT_mremap(const char *path, int mode, vo
if ((fd = open(path, O_RDWR)) < 0)
return NULL;
- if (fstat(fd, &stb) < 0) {
- /* shouldn't happen */
- close(fd);
- return NULL;
- }
- /* if necessary, extend the underlying file */
- if (stb.st_size < (off_t) new_size &&
- (lseek(fd, new_size - 1, SEEK_SET) < 0 ||
- write(fd, "\0", 1) < 0)) {
+ if (GDKextendf(fd, new_size) < 0) {
close(fd);
return NULL;
}
@@ -524,6 +516,7 @@ MT_mremap(const char *path, int mode, vo
/* size not too big yet or
* anonymous, try to make new
* anonymous mmap and copy
+
* data over */
p = mmap(NULL, new_size, prot, flags,
fd, 0);
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -50,6 +50,7 @@ void BBPtrim(size_t delta);
void BBPunshare(bat b);
void GDKclrerr(void);
int GDKextend(const char *fn, size_t size);
+int GDKextendf(int fd, off_t size);
int GDKfdlocate(const char *nme, const char *mode, const char *ext);
FILE *GDKfilelocate(const char *nme, const char *mode, const char *ext);
char *GDKload(const char *nme, const char *ext, size_t size, size_t chunk,
storage_t mode);
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -232,6 +232,24 @@ GDKmove(const char *dir1, const char *nm
}
int
+GDKextendf(int fd, off_t size)
+{
+ struct stat stb;
+
+ if (fstat(fd, &stb) < 0) {
+ /* shouldn't happen */
+ return -1;
+ }
+ /* if necessary, extend the underlying file */
+ if (stb.st_size < size &&
+ (lseek(fd, size - 1, SEEK_SET) < 0 ||
+ write(fd, "\0", 1) < 0)) {
+ return -1;
+ }
+ return 0;
+}
+
+int
GDKextend(const char *fn, size_t size)
{
FILE *fp;
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list