copied mono-api-diff.cs from mono-2-2 branch so new patch can be applied and history...
[mono.git] / eglib / src / gfile.c
index 54578e731d35d982131a42b470c783a6e404ce8d..c621a3168187f904a41b78c76d357d5ada0d19a4 100644 (file)
  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
+#include <config.h>
 #include <glib.h>
 #include <stdio.h>
-#include <stdlib.h>
 #include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#ifdef _MSC_VER
-#include <io.h>
-#define open _open
-#else
-#include <unistd.h>
-#endif
 
 GFileError
 g_file_error_from_errno (gint err_no)
@@ -100,151 +91,4 @@ g_file_error_from_errno (gint err_no)
        }
 }
 
-#ifndef O_LARGEFILE
-#define OPEN_FLAGS (O_RDONLY)
-#else
-#define OPEN_FLAGS (O_RDONLY | O_LARGEFILE)
-#endif
-gboolean
-g_file_get_contents (const gchar *filename, gchar **contents, gsize *length, GError **error)
-{
-       gchar *str;
-       int fd;
-       struct stat st;
-       long offset;
-       int nread;
-
-       g_return_val_if_fail (filename != NULL, FALSE);
-       g_return_val_if_fail (contents != NULL, FALSE);
-       g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-       *contents = NULL;
-       if (length)
-               *length = 0;
-
-       fd = open (filename, OPEN_FLAGS);
-       if (fd == -1) {
-               if (error != NULL) {
-                       int err = errno;
-                       *error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), "Error opening file");
-               }
-               return FALSE;
-       }
-
-       if (fstat (fd, &st) != 0) {
-               if (error != NULL) {
-                       int err = errno;
-                       *error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), "Error in fstat()");
-               }
-               close (fd);
-               return FALSE;
-       }
-
-       str = g_malloc (st.st_size + 1);
-       offset = 0;
-       do {
-               nread = read (fd, str + offset, st.st_size - offset);
-               if (nread > 0) {
-                       offset += nread;
-               }
-       } while ((nread > 0 && offset < st.st_size) || (nread == -1 && errno == EINTR));
-
-       close (fd);
-       str [st.st_size] = '\0';
-       if (length) {
-               *length = st.st_size;
-       }
-       *contents = str;
-       return TRUE;
-}
-
-gint
-g_file_open_tmp (const gchar *tmpl, gchar **name_used, GError **error)
-{
-       const static gchar *default_tmpl = ".XXXXXX";
-       gchar *t;
-       gint fd;
-       gint len;
-
-       g_return_val_if_fail (error == NULL || *error == NULL, -1);
-
-       if (tmpl == NULL)
-               tmpl = default_tmpl;
-
-       if (strchr (tmpl, G_DIR_SEPARATOR) != NULL) {
-               if (error) {
-                       *error = g_error_new (G_LOG_DOMAIN, 24, "Template should not have any " G_DIR_SEPARATOR_S);
-               }
-               return -1;
-       }
-
-       len = strlen (tmpl);
-       if (len < 6 || strcmp (tmpl + len - 6, "XXXXXX")) {
-               if (error) {
-                       *error = g_error_new (G_LOG_DOMAIN, 24, "Template should end with XXXXXX");
-               }
-               return -1;
-       }
-
-       t = g_build_filename (g_get_tmp_dir (), tmpl, NULL);
-       fd = mkstemp (t);
-       if (fd == -1) {
-               if (error) {
-                       int err = errno;
-                       *error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), "Error in mkstemp()");
-               }
-               g_free (t);
-               return -1;
-       }
-
-       if (name_used) {
-               *name_used = t;
-       } else {
-               g_free (t);
-       }
-       return fd;
-}
-
-gboolean
-g_file_test (const gchar *filename, GFileTest test)
-{
-       struct stat st;
-       gboolean have_stat;
-
-       if (filename == NULL || test == 0)
-               return FALSE;
-
-       have_stat = FALSE;
-#ifdef G_OS_WIN32
-#else
-       if ((test & G_FILE_TEST_EXISTS) != 0) {
-               if (access (filename, F_OK) == 0)
-                       return TRUE;
-       }
-
-       if ((test & G_FILE_TEST_IS_EXECUTABLE) != 0) {
-               if (access (filename, X_OK) == 0)
-                       return TRUE;
-       }
-       if ((test & G_FILE_TEST_IS_SYMLINK) != 0) {
-               have_stat = (lstat (filename, &st) == 0);
-               if (have_stat && S_ISLNK (st.st_mode))
-                       return TRUE;
-       }
-#endif
-
-       if ((test & G_FILE_TEST_IS_REGULAR) != 0) {
-               if (!have_stat)
-                       have_stat = (stat (filename, &st) == 0);
-               if (have_stat && S_ISREG (st.st_mode))
-                       return TRUE;
-       }
-       if ((test & G_FILE_TEST_IS_DIR) != 0) {
-               if (!have_stat)
-                       have_stat = (stat (filename, &st) == 0);
-               if (have_stat && S_ISDIR (st.st_mode))
-                       return TRUE;
-       }
-       return FALSE;
-}