aboutsummaryrefslogtreecommitdiffhomepage
path: root/qbuffers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qbuffers.cpp')
-rw-r--r--qbuffers.cpp37
1 files changed, 30 insertions, 7 deletions
diff --git a/qbuffers.cpp b/qbuffers.cpp
index 64a5fbd..9a12232 100644
--- a/qbuffers.cpp
+++ b/qbuffers.cpp
@@ -3,10 +3,6 @@
#include <string.h>
#include <bsd/sys/queue.h>
-#ifdef G_OS_WIN32
-#include <windows.h>
-#endif
-
#include <glib.h>
#include <glib/gprintf.h>
#include <glib/gstdio.h>
@@ -21,6 +17,16 @@
#include "goto.h"
#include "qbuffers.h"
+#ifdef G_OS_WIN32
+/* here it shouldn't cause conflicts with other headers */
+#include <windows.h>
+
+/* still need to clean up */
+#ifdef interface
+#undef interface
+#endif
+#endif
+
namespace States {
StateEditFile editfile;
StateSaveFile savefile;
@@ -555,7 +561,8 @@ make_savepoint(Buffer *buffer)
token->attributes = GetFileAttributes((LPCTSTR)savepoint);
if (token->attributes != INVALID_FILE_ATTRIBUTES)
SetFileAttributes((LPCTSTR)savepoint,
- attrs | FILE_ATTRIBUTE_HIDDEN);
+ token->attributes |
+ FILE_ATTRIBUTE_HIDDEN);
#endif
undo.push(token);
} else {
@@ -672,16 +679,32 @@ get_absolute_path(const gchar *path)
return resolved;
}
+#elif defined(G_OS_WIN32)
+
+gchar *
+get_absolute_path(const gchar *path)
+{
+ TCHAR buf[MAX_PATH];
+ gchar *resolved = NULL;
+
+ if (GetFullPathName(path, sizeof(buf), buf, NULL))
+ resolved = g_strdup(buf);
+
+ return resolved;
+}
+
#else
+/*
+ * FIXME: I doubt that works on any platform...
+ */
gchar *
get_absolute_path(const gchar *path)
{
- /* FIXME: see Unix implementation */
return path ? g_file_read_link(path, NULL) : NULL;
}
-#endif
+#endif /* !G_OS_UNIX && !G_OS_WIN32 */
/*
* Command states