+ }
+#endif
+ return 0;
+}
+
+// write page to permanent location in Btree file
+// clear the dirty bit
+
+BTERR bt_writepage (BtDb *bt, BtPage page, uid page_no)
+{
+off64_t off = page_no << bt->page_bits;
+
+#ifdef unix
+ page->dirty = 0;
+
+ if( pwrite(bt->idx, page, bt->page_size, off) < bt->page_size )
+ return bt->err = BTERR_wrt;
+#else
+OVERLAPPED ovl[1];
+uint amt[1];
+
+ memset (ovl, 0, sizeof(OVERLAPPED));
+ ovl->Offset = off;
+ ovl->OffsetHigh = off >> 32;
+ page->dirty = 0;
+
+ if( !WriteFile(bt->idx, page, bt->page_size, amt, ovl) )
+ return bt->err = BTERR_wrt;
+
+ if( *amt < bt->page_size )
+ return bt->err = BTERR_wrt;