]> git.lyx.org Git - lyx.git/blob - src/support/getcwd.C
small cleanup, doxygen, formatting changes
[lyx.git] / src / support / getcwd.C
1 #include <config.h>
2
3 #include <cerrno>
4 #include <unistd.h>
5
6 #include "support/lyxlib.h"
7
8 static inline
9 char * l_getcwd(char * buffer, size_t size)
10 {
11 #ifndef __EMX__
12         return ::getcwd(buffer, size);
13 #else
14         return ::_getcwd2(buffer, size);
15 #endif
16 }
17
18
19 // Returns current working directory
20 string const lyx::getcwd()
21 {
22         int n = 256;    // Assume path is less than 256 chars
23         char * err;
24         char * tbuf = new char[n];
25         
26         // Safe. Hopefully all getcwds behave this way!
27         while (((err = l_getcwd(tbuf, n)) == 0) && (errno == ERANGE)) {
28                 // Buffer too small, double the buffersize and try again
29                 delete[] tbuf;
30                 n = 2 * n;
31                 tbuf = new char[n];
32         }
33
34         string result;
35         if (err) result = tbuf;
36         delete[] tbuf;
37         return result;
38 }