diff options
author | Jes Sorensen <Jes.Sorensen@redhat.com> | 2010-06-10 11:42:23 +0200 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2010-06-12 08:49:14 +0300 |
commit | 6170540b824635a29eb7a0360affac9394c84c52 (patch) | |
tree | 8b5382efb78741da06f5f4f5284ffc255ef2de30 /os-win32.c | |
parent | 8d963e6ae700b2a46dd3a2bde5d1e5f925702f47 (diff) |
Move find_datadir to OS specific files.
This moves the win32 and POSIX versions of find_datadir() to OS
specific files, and removes some #ifdef clutter from vl.c
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Acked-by: Juan Quintela <quintela@redhat.com>
Acked-by: Richard Henderson <rth@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'os-win32.c')
-rw-r--r-- | os-win32.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/os-win32.c b/os-win32.c index a936f7ad2..17585385c 100644 --- a/os-win32.c +++ b/os-win32.c @@ -181,3 +181,26 @@ void os_setup_early_signal_handling(void) } } } + +/* Look for support files in the same directory as the executable. */ +char *os_find_datadir(const char *argv0) +{ + char *p; + char buf[MAX_PATH]; + DWORD len; + + len = GetModuleFileName(NULL, buf, sizeof(buf) - 1); + if (len == 0) { + return NULL; + } + + buf[len] = 0; + p = buf + len - 1; + while (p != buf && *p != '\\') + p--; + *p = 0; + if (access(buf, R_OK) == 0) { + return qemu_strdup(buf); + } + return NULL; +} |