documentor, ecere: Fix for documentor closing when being debugged
[sdk] / ecere / src / sys / File.ec
index 3d358cd..68030c6 100644 (file)
@@ -4,6 +4,7 @@ default:
 #define set _set
 #define uint _uint
 #define File _File
+#define strlen _strlen
 #undef __BLOCKS__
 #include <stdio.h>
 #include <stdarg.h>
@@ -72,6 +73,7 @@ private:
 #undef set
 #undef uint
 #undef File
+#undef strlen
 
 import "System"
 
@@ -289,7 +291,7 @@ public class File : IOChannel
       Window editData = class::OnEdit(dataBox, obsolete, x + 24, y, w - 48, h, userData);
       Button load
       { 
-         dataBox, inactive = true, text = $"Imp", hotKey = f2,
+         dataBox, inactive = true, text = $"Import"."Imp", hotKey = f2,
          position = { Max(x + 24, x + w - 24), y }, size = { 24, h };
 
          bool DataBox::NotifyClicked(Button button, int x, int y, Modifiers mods)
@@ -313,7 +315,7 @@ public class File : IOChannel
       };
       Button save
       { 
-         dataBox, inactive = true, text = $"Exp", hotKey = f2,
+         dataBox, inactive = true, text = $"Export"."Exp", hotKey = f2,
          position = { Max(x + 24, x + w - 48), y }, size = { 24, h };
 
          bool DataBox::NotifyClicked(Button button, int x, int y, Modifiers mods)
@@ -468,7 +470,7 @@ public:
 
    virtual uint Tell(void)
    {
-      return input ? ftell(input) : ftell(output);
+      return (uint)(input ? ftell(input) : ftell(output));
    }
 
    virtual int Read(void * buffer, uint size, uint count)
@@ -701,7 +703,7 @@ public:
    {
       char string[32];
       GetString(string, sizeof(string));
-      return strtoul(string, null, 16);
+      return (uint)strtoul(string, null, 16);
    }
 
    float GetFloat(void)
@@ -819,10 +821,28 @@ public:
    }
 }
 
+#if defined(__WIN32__)
+default extern intptr_t stdinHandle;
+default extern intptr_t stdoutHandle;
+#endif
+
 public class ConsoleFile : File
 {
    input = eC_stdin();
    output = eC_stdout();
+
+#if defined(__WIN32__)
+   void CloseInput()
+   {
+      CloseHandle((HANDLE)stdinHandle);
+   }
+   /*
+   void CloseOutput()
+   {
+      CloseHandle((HANDLE)stdoutHandle);
+   }*/
+#endif
+
    ~ConsoleFile()
    {
       input = null;
@@ -1393,7 +1413,7 @@ static FileDesc FileFind(char * path, char * extensions)
                if(!stat(file.path, &s))
                {
                   file.stats.attribs = (s.st_mode&S_IFDIR) ? FileAttribs { isDirectory = true } : FileAttribs { isFile = true };
-                  file.stats.size = s.st_size;
+                  file.stats.size = (FileSize)s.st_size;
                   file.stats.accessed = s.st_atime;
                   file.stats.modified = s.st_mtime;
                   file.stats.created = s.st_ctime;
@@ -1669,7 +1689,7 @@ private class FileDesc : struct
                {
                   stats.attribs = FileAttribs { };
                   stats.attribs = (s.st_mode&S_IFDIR) ? FileAttribs { isDirectory = true } : FileAttribs { isFile = true };
-                  stats.size = s.st_size;
+                  stats.size = (FileSize)s.st_size;
                   stats.accessed = s.st_atime;
                   stats.modified = s.st_mtime;
                   stats.created = s.st_ctime;