#include <unistd.h>
#endif
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <stdlib.h>
#ifdef G_OS_WIN32
#include <io.h>
#define O_BINARY 0
#endif
-#define _(x) x
+#include "glibintl.h"
/**
* g_file_test:
return q;
}
+/**
+ * g_file_error_from_errno:
+ * @err_no: an "errno" value
+ *
+ * Gets a #GFileError constant based on the passed-in errno.
+ * For example, if you pass in EEXIST this function returns
+ * #G_FILE_ERROR_EXIST. Unlike errno values, you can portably
+ * assume that all #GFileError values will exist.
+ *
+ * Normally a #GFileError value goes into a #GError returned
+ * from a function that manipulates files. So you would use
+ * g_file_error_from_errno() when constructing a #GError.
+ *
+ * Return value: #GFileError corresponding to the given errno
+ **/
GFileError
-g_file_error_from_errno (gint en)
+g_file_error_from_errno (gint err_no)
{
- switch (en)
+ switch (err_no)
{
#ifdef EEXIST
case EEXIST:
struct stat stat_buf;
gint fd;
- fd = open (filename, O_RDONLY);
+ /* O_BINARY useful on Cygwin */
+ fd = open (filename, O_RDONLY|O_BINARY);
if (fd < 0)
{
* opened for reading and writing. The file is opened in binary mode
* on platforms where there is a difference. The file handle should be
* closed with close(). In case of errors, -1 is returned.
- *
*/
int
g_mkstemp (char *tmpl)
* The actual name used is returned in @name_used if non-NULL. This
* string should be freed with g_free when not needed any longer.
*
- * If some error occurs, @error is set, and -1 is returned. Otherwise,
- * the file descriptor to a file opened for reading and writing with
- * g_mkstemp() is returned.
+ * Return value: A file handle (as from open()) to the file
+ * opened for reading and writing. The file is opened in binary mode
+ * on platforms where there is a difference. The file handle should be
+ * closed with close(). In case of errors, -1 is returned and
+ * @error will be set.
**/
int
g_file_open_tmp (const char *tmpl,
GError **error)
{
int retval;
- char *tmpdir;
+ const char *tmpdir;
char *sep;
char *fulltemplate;
if (tmpl == NULL)
tmpl = ".XXXXXX";
- if (strchr (tmpl, G_DIR_SEPARATOR))
+ if (strchr (tmpl, G_DIR_SEPARATOR)
+#ifdef G_OS_WIN32
+ || strchr (tmpl, '/')
+#endif
+ )
{
g_set_error (error,
G_FILE_ERROR,
g_set_error (error,
G_FILE_ERROR,
G_FILE_ERROR_FAILED,
- _("Template '%s' doesn end with XXXXXX"),
+ _("Template '%s' doesn't end with XXXXXX"),
tmpl);
return -1;
}