Index: src/Fl_BMP_Image.cxx
===================================================================
--- src/Fl_BMP_Image.cxx	(revision 6655)
+++ src/Fl_BMP_Image.cxx	(working copy)
@@ -35,6 +35,7 @@
 //
 
 #include <FL/Fl_BMP_Image.H>
+#include <FL/fl_utf8.H>
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -93,7 +94,7 @@
 
 
   // Open the file...
-  if ((fp = fopen(bmp, "rb")) == NULL) return;
+  if ((fp = fl_fopen(bmp, "rb")) == NULL) return;
 
   // Get the header...
   byte = (uchar)getc(fp);	// Check "BM" sync chars
Index: src/Fl_Text_Editor.cxx
===================================================================
--- src/Fl_Text_Editor.cxx	(revision 6655)
+++ src/Fl_Text_Editor.cxx	(working copy)
@@ -488,6 +488,7 @@
 
   switch (event) {
     case FL_FOCUS:
+      fl_set_spot(textfont(), textsize(), x(), y(), w(), h(), window());
       show_cursor(mCursorOn); // redraws the cursor
       if (buffer()->selected()) redraw(); // Redraw selections...
       Fl::focus(this);
@@ -497,6 +498,7 @@
       show_cursor(mCursorOn); // redraws the cursor
       if (buffer()->selected()) redraw(); // Redraw selections...
     case FL_HIDE:
+      fl_reset_spot();
       if (when() & FL_WHEN_RELEASE) maybe_do_callback();
       return 1;
 
Index: src/Fl_get_system_colors.cxx
===================================================================
--- src/Fl_get_system_colors.cxx	(revision 6655)
+++ src/Fl_get_system_colors.cxx	(working copy)
@@ -291,7 +291,7 @@
 */
 int Fl::scheme(const char *s) {
   if (!s) {
-    if ((s = getenv("FLTK_SCHEME")) == NULL) {
+    if ((s = fl_getenv("FLTK_SCHEME")) == NULL) {
 #if !defined(WIN32) && !defined(__APPLE__)
       const char* key = 0;
       if (Fl::first_window()) key = Fl::first_window()->xclass();
Index: src/fl_utf8.cxx
===================================================================
--- src/fl_utf8.cxx	(revision 6655)
+++ src/fl_utf8.cxx	(working copy)
@@ -764,6 +764,23 @@
 #endif
 }
 
+
+int fl_chdir(const char* f)
+{
+#if defined (WIN32) && !defined(__CYGWIN__)
+		int l = strlen(f);
+//		wbuf = (xchar*)realloc(wbuf, sizeof(xchar) * (l+1));
+//		wbuf[fl_utf2unicode((const unsigned char*)f, l, wbuf)] = 0;
+		unsigned wn = fl_utf8toUtf16(f, l, NULL, 0) + 1; // Query length
+		wbuf = (xchar*)realloc(wbuf, sizeof(xchar)*wn);
+		wn = fl_utf8toUtf16(f, l, (unsigned short *)wbuf, wn); // Convert string
+		wbuf[wn] = 0;
+		return _wchdir(wbuf);
+#else
+	return chdir(f);
+#endif
+}
+
 // recursively create a path in the file system
 char fl_make_path( const char *path ) {
   if (fl_access(path, 0)) {
Index: src/Fl_File_Icon2.cxx
===================================================================
--- src/Fl_File_Icon2.cxx	(revision 6655)
+++ src/Fl_File_Icon2.cxx	(working copy)
@@ -54,9 +54,6 @@
 #if defined(WIN32) && !defined(__CYGWIN__)
 #  include <io.h>
 #  define F_OK	0
-// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
-// on Windows, which is supposed to be POSIX compliant...
-#  define access _access
 #else
 #  include <unistd.h>
 #endif // WIN32
@@ -680,16 +677,16 @@
 
     if (!kdedir) {
       // Figure out where KDE is installed...
-      if ((kdedir = getenv("KDEDIR")) == NULL) {
-        if (!access("/opt/kde", F_OK)) kdedir = "/opt/kde";
-	else if (!access("/usr/local/share/mimelnk", F_OK)) kdedir = "/usr/local";
+      if ((kdedir = fl_getenv("KDEDIR")) == NULL) {
+        if (!fl_access("/opt/kde", F_OK)) kdedir = "/opt/kde";
+	else if (!fl_access("/usr/local/share/mimelnk", F_OK)) kdedir = "/usr/local";
         else kdedir = "/usr";
       }
     }
 
     snprintf(filename, sizeof(filename), "%s/share/mimelnk", kdedir);
 
-    if (!access(filename, F_OK)) {
+    if (!fl_access(filename, F_OK)) {
       // Load KDE icons...
       icon = new Fl_File_Icon("*", Fl_File_Icon::PLAIN);
 
@@ -697,7 +694,7 @@
 	snprintf(icondir, sizeof(icondir), "%s/share/icons/%s", kdedir,
 		 icondirs[i]);
 
-        if (!access(icondir, F_OK)) break;
+        if (!fl_access(icondir, F_OK)) break;
       }
 
       if (icondirs[i]) {
@@ -708,25 +705,25 @@
 	         kdedir);
       }
 
-      if (!access(filename, F_OK)) icon->load_image(filename);
+      if (!fl_access(filename, F_OK)) icon->load_image(filename);
 
       icon = new Fl_File_Icon("*", Fl_File_Icon::LINK);
 
       snprintf(filename, sizeof(filename), "%s/16x16/filesystems/link.png",
                icondir);
 
-      if (!access(filename, F_OK)) icon->load_image(filename);
+      if (!fl_access(filename, F_OK)) icon->load_image(filename);
 
       snprintf(filename, sizeof(filename), "%s/share/mimelnk", kdedir);
       load_kde_icons(filename, icondir);
-    } else if (!access("/usr/share/icons/folder.xpm", F_OK)) {
+    } else if (!fl_access("/usr/share/icons/folder.xpm", F_OK)) {
       // Load GNOME icons...
       icon = new Fl_File_Icon("*", Fl_File_Icon::PLAIN);
       icon->load_image("/usr/share/icons/page.xpm");
 
       icon = new Fl_File_Icon("*", Fl_File_Icon::DIRECTORY);
       icon->load_image("/usr/share/icons/folder.xpm");
-    } else if (!access("/usr/dt/appconfig/icons", F_OK)) {
+    } else if (!fl_access("/usr/dt/appconfig/icons", F_OK)) {
       // Load CDE icons...
       icon = new Fl_File_Icon("*", Fl_File_Icon::PLAIN);
       icon->load_image("/usr/dt/appconfig/icons/C/Dtdata.m.pm");
@@ -745,7 +742,7 @@
 
       icon = new Fl_File_Icon("*.ppd", Fl_File_Icon::PLAIN);
       icon->load_image("/usr/dt/appconfig/icons/C/DtPrtpr.m.pm");
-    } else if (!access("/usr/lib/filetype", F_OK)) {
+    } else if (!fl_access("/usr/lib/filetype", F_OK)) {
       // Load SGI icons...
       icon = new Fl_File_Icon("*", Fl_File_Icon::PLAIN);
       icon->load_fti("/usr/lib/filetype/iconlib/generic.doc.fti");
@@ -759,7 +756,7 @@
       icon = new Fl_File_Icon("*.{bmp|bw|gif|jpg|pbm|pcd|pgm|ppm|png|ras|rgb|tif|xbm|xpm}", Fl_File_Icon::PLAIN);
       icon->load_fti("/usr/lib/filetype/system/iconlib/ImageFile.fti");
 
-      if (!access("/usr/lib/filetype/install/iconlib/acroread.doc.fti", F_OK)) {
+      if (!fl_access("/usr/lib/filetype/install/iconlib/acroread.doc.fti", F_OK)) {
 	icon = new Fl_File_Icon("*.{eps|ps}", Fl_File_Icon::PLAIN);
 	icon->load_fti("/usr/lib/filetype/system/iconlib/PostScriptFile.closed.fti");
 
@@ -770,13 +767,13 @@
 	icon->load_fti("/usr/lib/filetype/system/iconlib/PostScriptFile.closed.fti");
       }
 
-      if (!access("/usr/lib/filetype/install/iconlib/html.fti", F_OK)) {
+      if (!fl_access("/usr/lib/filetype/install/iconlib/html.fti", F_OK)) {
 	icon = new Fl_File_Icon("*.{htm|html|shtml}", Fl_File_Icon::PLAIN);
         icon->load_fti("/usr/lib/filetype/iconlib/generic.doc.fti");
 	icon->load_fti("/usr/lib/filetype/install/iconlib/html.fti");
       }
 
-      if (!access("/usr/lib/filetype/install/iconlib/color.ps.idle.fti", F_OK)) {
+      if (!fl_access("/usr/lib/filetype/install/iconlib/color.ps.idle.fti", F_OK)) {
 	icon = new Fl_File_Icon("*.ppd", Fl_File_Icon::PLAIN);
 	icon->load_fti("/usr/lib/filetype/install/iconlib/color.ps.idle.fti");
       }
@@ -853,7 +850,7 @@
   pattern[0]      = '\0';
   iconfilename[0] = '\0';
 
-  if ((fp = fopen(filename, "rb")) != NULL) {
+  if ((fp = fl_fopen(filename, "rb")) != NULL) {
     while (fgets(tmp, sizeof(tmp), fp)) {
       if ((val = get_kde_val(tmp, "Icon")) != NULL)
 	strlcpy(iconfilename, val, sizeof(iconfilename));
@@ -875,7 +872,7 @@
     if (iconfilename[0]) {
       if (iconfilename[0] == '/') {
         strlcpy(full_iconfilename, iconfilename, sizeof(full_iconfilename));
-      } else if (!access(icondir, F_OK)) {
+      } else if (!fl_access(icondir, F_OK)) {
         // KDE 3.x and 2.x icons
 	int		i;		// Looping var
 	static const char *paths[] = {	// Subdirs to look in...
@@ -938,7 +935,7 @@
           snprintf(full_iconfilename, sizeof(full_iconfilename),
 	           "%s/%s/%s.png", icondir, paths[i], iconfilename);
 
-          if (!access(full_iconfilename, F_OK)) break;
+          if (!fl_access(full_iconfilename, F_OK)) break;
 	}
 
         if (i >= (int)(sizeof(paths) / sizeof(paths[0]))) return;
@@ -947,7 +944,7 @@
         snprintf(full_iconfilename, sizeof(full_iconfilename),
 	         "%s/%s", tmp, iconfilename);
 
-        if (access(full_iconfilename, F_OK)) return;
+        if (fl_access(full_iconfilename, F_OK)) return;
       }
 
       if (strncmp(mimetype, "inode/", 6) == 0) {
Index: src/fl_open_uri.cxx
===================================================================
--- src/fl_open_uri.cxx	(revision 6655)
+++ src/fl_open_uri.cxx	(working copy)
@@ -30,6 +30,7 @@
 //
 
 #include <FL/filename.H>
+#include <FL/fl_utf8.H>
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
@@ -236,7 +237,7 @@
 		*end;			// End of filename buffer
 
 
-  if ((path = getenv("PATH")) == NULL) path = "/bin:/usr/bin";
+  if ((path = fl_getenv("PATH")) == NULL) path = "/bin:/usr/bin";
 
   for (ptr = filename, end = filename + filesize - 1; *path; path ++) {
     if (*path == ':') {
@@ -244,7 +245,7 @@
 
       strlcpy(ptr, program, end - ptr + 1);
 
-      if (!access(filename, X_OK)) return filename;
+      if (!fl_access(filename, X_OK)) return filename;
 
       ptr = filename;
     } else if (ptr < end) *ptr++ = *path;
@@ -255,7 +256,7 @@
 
     strlcpy(ptr, program, end - ptr + 1);
 
-    if (!access(filename, X_OK)) return filename;
+    if (!fl_access(filename, X_OK)) return filename;
   }
 
   return 0;
Index: src/Fl_JPEG_Image.cxx
===================================================================
--- src/Fl_JPEG_Image.cxx	(revision 6655)
+++ src/Fl_JPEG_Image.cxx	(working copy)
@@ -35,6 +35,7 @@
 //
 
 #include <FL/Fl_JPEG_Image.H>
+#include <FL/fl_utf8.H>
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -110,7 +111,7 @@
   array = (uchar *)0;
 
   // Open the image file...
-  if ((fp = fopen(jpeg, "rb")) == NULL) return;
+  if ((fp = fl_fopen(jpeg, "rb")) == NULL) return;
 
   // Setup the decompressor info and read the header...
   dinfo.err                = jpeg_std_error((jpeg_error_mgr *)&jerr);
Index: src/Fl_Preferences.cxx
===================================================================
--- src/Fl_Preferences.cxx	(revision 6655)
+++ src/Fl_Preferences.cxx	(working copy)
@@ -40,10 +40,6 @@
 #if defined(WIN32) && !defined(__CYGWIN__)
 #  include <direct.h>
 #  include <io.h>
-// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
-// on Windows, which is supposed to be POSIX compliant...
-#  define access _access
-#  define mkdir _mkdir
 #elif defined (__APPLE__)
 #  include <Carbon/Carbon.h>
 #  include <unistd.h>
@@ -767,7 +763,7 @@
 
 // recursively create a path in the file system
 static char makePath( const char *path ) {
-  if (access(path, 0)) {
+  if (fl_access(path, 0)) {
     const char *s = strrchr( path, '/' );
     if ( !s ) return 0;
     int len = s-path;
@@ -776,11 +772,7 @@
     p[len] = 0;
     makePath( p );
     free( p );
-#if defined(WIN32) && !defined(__CYGWIN__)
-    return ( mkdir( path ) == 0 );
-#else
-    return ( mkdir( path, 0777 ) == 0 );
-#endif // WIN32 && !__CYGWIN__
+    return ( fl_mkdir( path, 0777 ) == 0 );
   }
   return 1;
 }
Index: src/Fl_File_Chooser2.cxx
===================================================================
--- src/Fl_File_Chooser2.cxx	(revision 6655)
+++ src/Fl_File_Chooser2.cxx	(working copy)
@@ -351,10 +351,6 @@
 #if defined(WIN32) && ! defined (__CYGWIN__)
 #  include <direct.h>
 #  include <io.h>
-// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
-// on Windows, which is supposed to be POSIX compliant...
-#  define access _access
-#  define mkdir _mkdir
 // Apparently Borland C++ defines DIRECTORY in <direct.h>, which
 // interfers with the Fl_File_Icon enumeration of the same name.
 #  ifdef DIRECTORY
@@ -529,7 +525,7 @@
 
   if (!v) {
     // Add current directory to favorites...
-    if (getenv("HOME")) v = favoritesButton->size() - 5;
+    if (fl_getenv("HOME")) v = favoritesButton->size() - 5;
     else v = favoritesButton->size() - 4;
 
     sprintf(menuname, "favorite%02d", v);
@@ -845,7 +841,7 @@
 	compare_dirnames(pathname, directory_)) {
 #endif /* WIN32 || __EMX__ */
       directory(pathname);
-    } else if ((type_ & CREATE) || access(pathname, 0) == 0) {
+    } else if ((type_ & CREATE) || fl_access(pathname, 0) == 0) {
       if (!_fl_filename_isdir_quick(pathname) || (type_ & DIRECTORY)) {
 	// Update the preview box...
 	update_preview();
@@ -966,7 +962,7 @@
     }
 
     // See if we need to enable the OK button...
-    if (((type_ & CREATE) || !access(fileName->value(), 0)) &&
+    if (((type_ & CREATE) || !fl_access(fileName->value(), 0)) &&
         (!fl_filename_isdir(fileName->value()) || (type_ & DIRECTORY))) {
       okButton->activate();
     } else {
@@ -976,7 +972,7 @@
     // FL_Delete or FL_BackSpace
     fileList->deselect(0);
     fileList->redraw();
-    if (((type_ & CREATE) || !access(fileName->value(), 0)) &&
+    if (((type_ & CREATE) || !fl_access(fileName->value(), 0)) &&
         (!fl_filename_isdir(fileName->value()) || (type_ & DIRECTORY))) {
       okButton->activate();
     } else {
@@ -1060,16 +1056,14 @@
     strlcpy(pathname, dir, sizeof(pathname));
 
   // Create the directory; ignore EEXIST errors...
-#if defined(WIN32) && ! defined (__CYGWIN__)
-  if (mkdir(pathname))
-#else
-  if (mkdir(pathname, 0777))
-#endif /* WIN32 */
+  if (fl_mkdir(pathname, 0777))
     if (errno != EEXIST)
     {
+      if (fl_access(pathname, 0)) {
       fl_alert("%s", strerror(errno));
       return;
     }
+    }
 
   // Show the new directory...
   directory(pathname);
@@ -1256,7 +1250,7 @@
   favoritesButton->add(manage_favorites_label, FL_ALT + 'm', 0, 0, FL_MENU_DIVIDER);
   favoritesButton->add(filesystems_label, FL_ALT + 'f', 0);
     
-  if ((home = getenv("HOME")) != NULL) {
+  if ((home = fl_getenv("HOME")) != NULL) {
     quote_pathname(menuname, home, sizeof(menuname));
     favoritesButton->add(menuname, FL_ALT + 'h', 0);
   }
@@ -1316,7 +1310,7 @@
     int		bytes;
     char	*ptr;
 
-    if (filename) fp = fopen(filename, "rb");
+    if (filename) fp = fl_fopen(filename, "rb");
     else fp = NULL;
 
     if (fp != NULL) {
@@ -1359,6 +1353,7 @@
     pbw = previewBox->w() - 20;
     pbh = previewBox->h() - 20;
 
+    if (image->w() < 1 || image->h() < 1) return;
     if (image->w() > pbw || image->h() > pbh) {
       w   = pbw;
       h   = w * image->h() / image->w();
Index: FL/fl_utf8.h
===================================================================
--- FL/fl_utf8.h	(revision 6655)
+++ FL/fl_utf8.h	(working copy)
@@ -213,6 +213,9 @@
 /* OD: Portable UTF8 aware rename wrapper */
 FL_EXPORT int fl_rename(const char* f, const char *t);
 
+/* OD: Portable UTF8 aware chdir wrapper */
+FL_EXPORT int fl_chdir(const char* f);
+
 
 /* OD: Given a full pathname, this will create the directory path needed to hold the file named */
 FL_EXPORT void fl_make_path_for_file( const char *path );
Index: test/demo.cxx
===================================================================
--- test/demo.cxx	(revision 6655)
+++ test/demo.cxx	(working copy)
@@ -281,7 +281,7 @@
     char* command = new char[icommand_length+24]; // extraspace for  'open ../../(name).app &\0' 
     
     sprintf(command, "open ../../../%s.app &", menus[men].icommand[bn]);
-    system(command);
+    fl_system(command);
     
     delete[] command;
 
@@ -291,7 +291,7 @@
     char* command = new char[icommand_length+5]; // 5 for extra './' and ' &\0' 
 
     sprintf(command, "./%s &", menus[men].icommand[bn]);
-    system(command);
+    fl_system(command);
 
     delete[] command;
 #endif // WIN32
@@ -308,7 +308,7 @@
   FILE *fin;
   char line[256], mname[64],iname[64],cname[64];
   int i,j;
-  fin = fopen(fname,"r");
+  fin = fl_fopen(fname,"r");
   if (fin == NULL)
   {
 #if defined ( __APPLE__ )
@@ -319,7 +319,7 @@
 	  pos = strrchr(fname,'/');
 	  if (!pos) return 0;
 	  strcpy(pos,"/Resources/demo.menu");
-	  fin  = fopen(fname,"r");
+	  fin  = fl_fopen(fname,"r");
 	  if (fin == NULL)
 #endif
 	  return 0;
@@ -385,7 +385,7 @@
   if (buf!=fname)
     strcpy(buf,fname);
   const char *c = fl_filename_name(buf);
-  if (c > buf) {buf[c-buf] = 0; chdir(buf);}
+  if (c > buf) {buf[c-buf] = 0; fl_chdir(buf);}
   push_menu("@main");
   form->show(argc,argv);
   Fl::run();
Index: test/checkers.cxx
===================================================================
--- test/checkers.cxx	(revision 6655)
+++ test/checkers.cxx	(working copy)
@@ -1347,7 +1347,7 @@
     fprintf(stderr," -t : use VT100 display\n", Fl::help);
     exit(1);
   }
-  if (!getenv("DISPLAY")) terminal = 1;
+  if (!fl_getenv("DISPLAY")) terminal = 1;
   if (!terminal)
 #endif
 #ifdef FLTK
Index: test/fl_jpeg_image.cxx
===================================================================
--- test/fl_jpeg_image.cxx	(revision 6655)
+++ test/fl_jpeg_image.cxx	(working copy)
@@ -138,7 +138,7 @@
 void readtheimage(const char *name) {
   struct jpeg_decompress_struct cinfo;
   struct jpeg_error_mgr jerr;
-  FILE * infile = fopen(name, "rb");
+  FILE * infile = fl_fopen(name, "rb");
   if (!infile) {
     fprintf(stderr, "can't open %s\n", name);
     exit(1);
Index: test/file_chooser.cxx
===================================================================
--- test/file_chooser.cxx	(revision 6655)
+++ test/file_chooser.cxx	(working copy)
@@ -259,7 +259,7 @@
   if (memcmp(header, "%PDF", 4) != 0)
     return 0;
 
-  home = getenv("HOME");
+  home = fl_getenv("HOME");
   sprintf(preview, "%s/.preview.ppm", home ? home : "");
 
   sprintf(command,
@@ -267,7 +267,7 @@
 	  "-sstdout=\"%%stderr\" -sOUTPUTFILE=\'%s\' "
 	  "-dFirstPage=1 -dLastPage=1 \'%s\' 2>/dev/null", preview, name);
 
-  if (system(command)) return 0;
+  if (fl_system(command)) return 0;
 
   return new Fl_PNM_Image(preview);
 }
@@ -295,7 +295,7 @@
   if (memcmp(header, "%!", 2) != 0)
     return 0;
 
-  home = getenv("HOME");
+  home = fl_getenv("HOME");
   sprintf(preview, "%s/.preview.ppm", home ? home : "");
 
   if (memcmp(header, "%!PS", 4) == 0) {
@@ -303,8 +303,8 @@
     sprintf(outname, "%s/.preview.ps", home ? home : "");
 
     if (strcmp(name, outname) != 0) {
-      in   = fopen(name, "rb");
-      out  = fopen(outname, "wb");
+      in   = fl_fopen(name, "rb");
+      out  = fl_fopen(outname, "wb");
       page = 0;
 
       while (fgets(line, sizeof(line), in) != NULL) {
@@ -330,7 +330,7 @@
 	  "-sstdout=\"%%stderr\" -sOUTPUTFILE=\'%s\' \'%s\' 2>/dev/null",
 	  preview, outname);
 
-  if (system(command)) return 0;
+  if (fl_system(command)) return 0;
 
   return new Fl_PNM_Image(preview);
 }
Index: test/colbrowser.cxx
===================================================================
--- test/colbrowser.cxx	(revision 6655)
+++ test/colbrowser.cxx	(working copy)
@@ -146,9 +146,9 @@
     int r, g, b,  lr  = -1 , lg = -1, lb = -1;
     char name[256], buf[256];
 #ifdef __EMX__
-    if (!(fp = fopen(__XOS2RedirRoot(fname), "r")))
+    if (!(fp = fl_fopen(__XOS2RedirRoot(fname), "r")))
 #else
-    if (!(fp = fopen(fname, "r")))
+    if (!(fp = fl_fopen(fname, "r")))
 #endif
     {
 	fl_alert("%s\n%s\n%s","Load", fname, "Can't open");
Index: fluid/template_panel.cxx
===================================================================
--- fluid/template_panel.cxx	(revision 6655)
+++ fluid/template_panel.cxx	(working copy)
@@ -211,7 +211,7 @@
 if (!fl_choice("Are you sure you want to delete the template \"%s\"?",
                "Cancel", "Delete", 0, name)) return;
 
-if (unlink(flfile)) {
+if (fl_unlink(flfile)) {
   fl_alert("Unable to delete template \"%s\":\n%s", name, strerror(errno));
   return;
 }
Index: fluid/undo.cxx
===================================================================
--- fluid/undo.cxx	(revision 6655)
+++ fluid/undo.cxx	(working copy)
@@ -34,11 +34,6 @@
 #  include <io.h>
 #  include <windows.h>
 #  define getpid (int)GetCurrentProcessId
-#  ifndef __WATCOMC__
-// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
-// on Windows, which is supposed to be POSIX compliant...
-#    define unlink _unlink
-#  endif // !__WATCOMC__
 #else
 #  include <unistd.h>
 #endif // WIN32 && !__CYGWIN__
@@ -167,7 +162,7 @@
 
   // Remove old checkpoint files...
   for (int i = 0; i <= undo_max; i ++) {
-    unlink(undo_filename(i, filename, sizeof(filename)));
+    fl_unlink(undo_filename(i, filename, sizeof(filename)));
   }
 
   // Reset current, last, and save indices...
Index: fluid/file.cxx
===================================================================
--- fluid/file.cxx	(revision 6655)
+++ fluid/file.cxx	(working copy)
@@ -43,7 +43,7 @@
 
 int open_write(const char *s) {
   if (!s) {fout = stdout; return 1;}
-  FILE *f = fopen(s,"w");
+  FILE *f = fl_fopen(s,"w");
   if (!f) return 0;
   fout = f;
   return 1;
@@ -135,7 +135,7 @@
 int open_read(const char *s) {
   lineno = 1;
   if (!s) {fin = stdin; fname = "stdin"; return 1;}
-  FILE *f = fopen(s,"r");
+  FILE *f = fl_fopen(s,"r");
   if (!f) return 0;
   fin = f;
   fname = s;
Index: fluid/template_panel.fl
===================================================================
--- fluid/template_panel.fl	(revision 6655)
+++ fluid/template_panel.fl	(working copy)
@@ -193,7 +193,7 @@
 if (!fl_choice("Are you sure you want to delete the template \\"%s\\"?",
                "Cancel", "Delete", 0, name)) return;
 
-if (unlink(flfile)) {
+if (fl_unlink(flfile)) {
   fl_alert("Unable to delete template \\"%s\\":\\n%s", name, strerror(errno));
   return;
 }
Index: fluid/fluid.cxx
===================================================================
--- fluid/fluid.cxx	(revision 6655)
+++ fluid/fluid.cxx	(working copy)
@@ -60,13 +60,6 @@
 #  include <fcntl.h>
 #  include <commdlg.h>
 #  include <FL/x.H>
-#  ifndef __WATCOMC__
-// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
-// on Windows, which is supposed to be POSIX compliant...
-#    define access _access
-#    define chdir _chdir
-#    define getcwd _getcwd
-#  endif // !__WATCOMC__
 #else
 #  include <unistd.h>
 #endif
@@ -128,17 +121,17 @@
   strlcpy(buffer, filename, sizeof(buffer));
   int n = p-filename; if (n>1) n--; buffer[n] = 0;
   if (!pwd) {
-    pwd = getcwd(0,1024);
+    pwd = fl_getcwd(0,1024);
     if (!pwd) {fprintf(stderr,"getwd : %s\n",strerror(errno)); return;}
   }
-  if (chdir(buffer)<0) {fprintf(stderr, "Can't chdir to %s : %s\n",
+  if (fl_chdir(buffer)<0) {fprintf(stderr, "Can't chdir to %s : %s\n",
 				buffer, strerror(errno)); return;}
   in_source_dir = 1;
 }
 
 void leave_source_dir() {
   if (!in_source_dir) return;
-  if (chdir(pwd)<0) {fprintf(stderr, "Can't chdir to %s : %s\n",
+  if (fl_chdir(pwd)<0) {fprintf(stderr, "Can't chdir to %s : %s\n",
 			     pwd, strerror(errno));}
   in_source_dir = 0;
 }
@@ -195,7 +188,7 @@
     fl_file_chooser_ok_label(NULL);
     if (!c) return;
 
-    if (!access(c, 0)) {
+    if (!fl_access(c, 0)) {
       const char *basename;
       if ((basename = strrchr(c, '/')) != NULL)
         basename ++;
@@ -265,11 +258,7 @@
   fluid_prefs.getUserdataPath(filename, sizeof(filename));
 
   strlcat(filename, "templates", sizeof(filename));
-#if defined(WIN32) && !defined(__CYGWIN__)
-  if (access(filename, 0)) mkdir(filename);
-#else
-  if (access(filename, 0)) mkdir(filename, 0777);
-#endif // WIN32 && !__CYGWIN__
+  if (fl_access(filename, 0)) fl_mkdir(filename, 0777);
 
   strlcat(filename, "/", sizeof(filename));
   strlcat(filename, safename, sizeof(filename));
@@ -283,7 +272,7 @@
   // Save the .fl file...
   strcpy(ext, ".fl");
 
-  if (!access(filename, 0)) {
+  if (!fl_access(filename, 0)) {
     if (fl_choice("The template \"%s\" already exists.\n"
                   "Do you want to replace it?", "Cancel",
 		  "Replace", NULL, c) == 0) return;
@@ -317,7 +306,7 @@
 
   FILE *fp;
 
-  if ((fp = fopen(filename, "wb")) == NULL) {
+  if ((fp = fl_fopen(filename, "wb")) == NULL) {
     delete[] pixels;
     fl_alert("Error writing %s: %s", filename, strerror(errno));
     return;
@@ -586,7 +575,7 @@
       char line[1024], *ptr, *next;
       FILE *infile, *outfile;
 
-      if ((infile = fopen(tname, "r")) == NULL) {
+      if ((infile = fl_fopen(tname, "r")) == NULL) {
 	fl_alert("Error reading template file \"%s\":\n%s", tname,
         	 strerror(errno));
 	set_modflag(0);
@@ -594,7 +583,7 @@
 	return;
       }
 
-      if ((outfile = fopen(cutfname(1), "w")) == NULL) {
+      if ((outfile = fl_fopen(cutfname(1), "w")) == NULL) {
 	fl_alert("Error writing buffer file \"%s\":\n%s", cutfname(1),
         	 strerror(errno));
 	fclose(infile);
@@ -618,7 +607,7 @@
 
       undo_suspend();
       read_file(cutfname(1), 0);
-      unlink(cutfname(1));
+      fl_unlink(cutfname(1));
       undo_resume();
     } else {
       // No instance name, so read the template without replacements...
@@ -808,7 +797,7 @@
   if (!read_file(cutfname(1), 1)) {
     fl_message("Can't read %s: %s", cutfname(1), strerror(errno));
   }
-  unlink(cutfname(1));
+  fl_unlink(cutfname(1));
   undo_resume();
 
   force_parent = 0;
@@ -842,7 +831,7 @@
 
   if (!help_dialog) help_dialog = new Fl_Help_Dialog();
 
-  if ((docdir = getenv("FLTK_DOCDIR")) == NULL) {
+  if ((docdir = fl_getenv("FLTK_DOCDIR")) == NULL) {
 #ifdef __EMX__
     // Doesn't make sense to have a hardcoded fallback
     static char fltk_docdir[1024];
@@ -1228,13 +1217,13 @@
     const char *outname = fl_file_chooser("Print To", "PostScript (*.ps)", NULL, 1);
     fl_file_chooser_ok_label(NULL);
 
-    if (outname && !access(outname, 0)) {
+    if (outname && !fl_access(outname, 0)) {
       if (fl_choice("The file \"%s\" already exists.\n"
                     "Do you want to replace it?", "Cancel",
 		    "Replace", NULL, outname) == 0) outname = NULL;
     }
 
-    if (outname) outfile = fopen(outname, "w");
+    if (outname) outfile = fl_fopen(outname, "w");
     else outfile = NULL;
   }
 
@@ -2055,7 +2044,7 @@
 
   if (!prepare_shell_command(command)) return;
 
-  if ((status = system(command)) != 0) {
+  if ((status = fl_system(command)) != 0) {
     fl_alert("Shell command returned status %d!", status);
   } else if (completion_button->value()) {
     fl_message("Shell command completed successfully!");
Index: fluid/Fluid_Image.cxx
===================================================================
--- fluid/Fluid_Image.cxx	(revision 6655)
+++ fluid/Fluid_Image.cxx	(working copy)
@@ -148,7 +148,7 @@
   // no, so now see if the file exists:
 
   goto_source_dir();
-  FILE *f = fopen(iname,"rb");
+  FILE *f = fl_fopen(iname,"rb");
   if (!f) {
     read_error("%s : %s",iname,strerror(errno));
     leave_source_dir();
Index: fluid/code.cxx
===================================================================
--- fluid/code.cxx	(revision 6655)
+++ fluid/code.cxx	(working copy)
@@ -180,7 +180,7 @@
     case '\'':
     case '\\':
     QUOTED:
-      if (linelength >= 77) {fputs("\\\n",code_file); linelength = 0;}
+      if (linelength >= 77) {fputs("\"\n\"",code_file); linelength = 0;}
       putc('\\', code_file);
       putc(c, code_file);
       linelength += 2;
@@ -191,7 +191,7 @@
     default:
       if (c >= ' ' && c < 127) {
 	// a legal ASCII character
-	if (linelength >= 78) {fputs("\\\n",code_file); linelength = 0;}
+	if (linelength >= 78) {fputs("\"\n\"",code_file); linelength = 0;}
 	putc(c, code_file);
 	linelength++;
 	break;
@@ -199,15 +199,15 @@
       // otherwise we must print it as an octal constant:
       c &= 255;
       if (c < 8) {
-	if (linelength >= 76) {fputs("\\\n",code_file); linelength = 0;}
+	if (linelength >= 76) {fputs("\"\n\"",code_file); linelength = 0;}
 	fprintf(code_file, "\\%o",c);
 	linelength += 2;
       } else if (c < 64) {
-	if (linelength >= 75) {fputs("\\\n",code_file); linelength = 0;}
+	if (linelength >= 75) {fputs("\"\n\"",code_file); linelength = 0;}
 	fprintf(code_file, "\\%o",c);
 	linelength += 3;
       } else {
-	if (linelength >= 74) {fputs("\\\n",code_file); linelength = 0;}
+	if (linelength >= 74) {fputs("\"\n\"",code_file); linelength = 0;}
 	fprintf(code_file, "\\%o",c);
 	linelength += 4;
       }
@@ -343,13 +343,13 @@
   current_widget_class = 0L;
   if (!s) code_file = stdout;
   else {
-    FILE *f = fopen(s, filemode);
+    FILE *f = fl_fopen(s, filemode);
     if (!f) return 0;
     code_file = f;
   }
   if (!t) header_file = stdout;
   else {
-    FILE *f = fopen(t, filemode);
+    FILE *f = fl_fopen(t, filemode);
     if (!f) {fclose(code_file); return 0;}
     header_file = f;
   }
@@ -457,7 +457,7 @@
 }
 
 int write_strings(const char *sfile) {
-  FILE *fp = fopen(sfile, "w");
+  FILE *fp = fl_fopen(sfile, "w");
   Fl_Type *p;
   Fl_Widget_Type *w;
   int i;
