File Utilities

File Utilities — Варианты функций связанных с файлами.

Краткое описание


#include <glib.h>
#include <glib/gstdio.h>


enum        GFileError;
#define     G_FILE_ERROR
enum        GFileTest;
GFileError  g_file_error_from_errno         (gint err_no);
gboolean    g_file_get_contents             (const gchar *filename,
                                             gchar **contents,
                                             gsize *length,
                                             GError **error);
gboolean    g_file_set_contents             (const gchar *filename,
                                             const gchar *contents,
                                             gssize length,
                                             GError **error);
gboolean    g_file_test                     (const gchar *filename,
                                             GFileTest test);
gint        g_mkstemp                       (gchar *tmpl);
gint        g_file_open_tmp                 (const gchar *tmpl,
                                             gchar **name_used,
                                             GError **error);
gchar*      g_file_read_link                (const gchar *filename,
                                             GError **error);
int         g_mkdir_with_parents            (const gchar *pathname,
                                             int mode);

            GDir;
GDir*       g_dir_open                      (const gchar *path,
                                             guint flags,
                                             GError **error);
const gchar* g_dir_read_name                (GDir *dir);
void        g_dir_rewind                    (GDir *dir);
void        g_dir_close                     (GDir *dir);

            GMappedFile;
GMappedFile* g_mapped_file_new              (const gchar *filename,
                                             gboolean writable,
                                             GError **error);
void        g_mapped_file_free              (GMappedFile *file);
gsize       g_mapped_file_get_length        (GMappedFile *file);
gchar*      g_mapped_file_get_contents      (GMappedFile *file);

int         g_open                          (const gchar *filename,
                                             int flags,
                                             int mode);
int         g_rename                        (const gchar *oldfilename,
                                             const gchar *newfilename);
int         g_mkdir                         (const gchar *filename,
                                             int mode);
int         g_stat                          (const gchar *filename,
                                             struct stat *buf);
int         g_lstat                         (const gchar *filename,
                                             struct stat *buf);
int         g_unlink                        (const gchar *filename);
int         g_remove                        (const gchar *filename);
int         g_rmdir                         (const gchar *filename);
FILE*       g_fopen                         (const gchar *filename,
                                             const gchar *mode);
FILE*       g_freopen                       (const gchar *filename,
                                             const gchar *mode,
                                             FILE *stream);
int         g_chmod                         (const gchar *filename,
                                             int mode);
int         g_access                        (const gchar *filename,
                                             int mode);
int         g_creat                         (const gchar *filename,
                                             int mode);
int         g_chdir                         (const gchar *path);

Описание

Есть группа функций которые являются оболочками для основных POSIX функций имеющих дело с именами файлов (g_open(), g_rename(), g_mkdir(), g_stat(), g_unlink(), g_remove(), g_fopen(), g_freopen()). Указанные оболочки позволяют обрабатывать имена файлов с любыми Unicode символами в Windows без необходимости использования ifdefs и расширенного API символов в коде приложения.

Аргумент pathname должен быть в кодировке имён файлов GLib. В POSIX это фактическая кодировка на диске которая может соответствовать установкам locale процесса (или переменной окружения G_FILENAME_ENCODING), или нет.

В Windows кодировкой имён файлов GLib является UTF-8. Помните что Microsoft C library не использует UTF-8, но имеет раздельный APIs для текущей системной кодовой страницы и расширенных символов (UTF-16). Оболочки GLib вызывают расширенный символьный API, если представлен (на современных системах Windows), иначе конвертируют в/из системной кодовой страницы.

Другая группа функций позволяет открывать и читать каталоги в кодировке имён файлов GLib. Такие как g_dir_open(), g_dir_read_name(), g_dir_rewind(), g_dir_close().

Детали

enum GFileError

typedef enum
{
  G_FILE_ERROR_EXIST,
  G_FILE_ERROR_ISDIR,
  G_FILE_ERROR_ACCES,
  G_FILE_ERROR_NAMETOOLONG,
  G_FILE_ERROR_NOENT,
  G_FILE_ERROR_NOTDIR,
  G_FILE_ERROR_NXIO,
  G_FILE_ERROR_NODEV,
  G_FILE_ERROR_ROFS,
  G_FILE_ERROR_TXTBSY,
  G_FILE_ERROR_FAULT,
  G_FILE_ERROR_LOOP,
  G_FILE_ERROR_NOSPC,
  G_FILE_ERROR_NOMEM,
  G_FILE_ERROR_MFILE,
  G_FILE_ERROR_NFILE,
  G_FILE_ERROR_BADF,
  G_FILE_ERROR_INVAL,
  G_FILE_ERROR_PIPE,
  G_FILE_ERROR_AGAIN,
  G_FILE_ERROR_INTR,
  G_FILE_ERROR_IO,
  G_FILE_ERROR_PERM,
  G_FILE_ERROR_NOSYS,
  G_FILE_ERROR_FAILED
} GFileError;

Значения соответствующие errno кодам возвращаемым из файловых операций в UNIX. В отличие от errno кодов, GFileError значения доступны во всех системах, даже в Windows. Точное значение каждого кода зависит от выполняемой вами опреции; UNIX документация даёт больше деталей. Следующие описания error кодов взяты из руководства GNU C Library и находятся под действием копирайта этого руководства.

Это не очень переносимо для создания подробного предположения о точных ошибках которые будут возвращены из полученной операции. Некоторые ошибки не происходят в некоторых системах и т.д., иногда есть тонкое различие в том когда система сообщит о полученной ошибке и т.д..

G_FILE_ERROR_EXIST Операция не разрешена; только владелец файла (или другого ресурса) или процесс со специальными привилегиями может выполнить операцию.
G_FILE_ERROR_ISDIR Файл является каталогом; вы не можете открыть каталог для записи, или создать/удалить жесткую ссылку в нём.
G_FILE_ERROR_ACCES Запрещённое действие; права на файл не позволяют произвести операцию.
G_FILE_ERROR_NAMETOOLONG Слишком длинное имя файла.
G_FILE_ERROR_NOENT Нет такого файла или каталога. Это ошибка "file doesn't exist" для обычных файлов на которые ссылаются в контекстах ожидая что они уже существуют.
G_FILE_ERROR_NOTDIR Файл который не является каталогом, был запрошен как каталог.
G_FILE_ERROR_NXIO Нет такого устройства или адреса. Система попыталась использовать устройство представленное файлом который вы определили и не смогла найти устройство. Это может означать что файл устройства был неправильно установлен, физическое устройство отсутствует или неправильно подключено к компьютеру.
G_FILE_ERROR_NODEV Файл имеет тип который не поддерживает отображение.
G_FILE_ERROR_ROFS Каталог не может быть изменён, потомучто он находится на файловой системе только для чтения.
G_FILE_ERROR_TXTBSY Текстовый файл занят.
G_FILE_ERROR_FAULT Вы перешли в указатель на испорченную память. (GLib не гарантирует возврат этой ошибки, не перемещайтесь в указатели на испорченную память.)
G_FILE_ERROR_LOOP Слишкрм много уровней символических ссылок при поиске имени файла. Это часто указывает на циклические символические ссылки.
G_FILE_ERROR_NOSPC Нет свободного пространства на устройстве; запись файла на устройство не удалась, так как диск заполнен.
G_FILE_ERROR_NOMEM Нет доступной памяти. Система не может распределить виртуальную память, так как она полная.
G_FILE_ERROR_MFILE Текущий процесс имеет слишком много открытых файлов и не может больше открыть ни одного. Двойные дескрипторы действительно рассчитывают до этого предела.
G_FILE_ERROR_NFILE В системе слишком много разных открытых файлов.
G_FILE_ERROR_BADF Плохой дескриптор файла; например, I/O в дескриптор который был закрыт или прочитан из дескриптора открытого только для записи (или наоборот).
G_FILE_ERROR_INVAL Недопустимый параметр. Используется для указания на различного рода проблемы связанные с указанием неправильных параметров библиотечных функций.
G_FILE_ERROR_PIPE Испорченный канал; нет процесса читающего на другом конце канала. Все библиотечные функции, которые возвращают этот код ошибки, также генерируют сигнал `SIGPIPE'; этот сигнал закрывает программу если обработан или не заблокирован. Поэтому ваша программа фактически никогда не увидит этот код пока она обрабатывает или не блокирует `SIGPIPE'.
G_FILE_ERROR_AGAIN Ресурс временно не доступен; повторите запрос немного позже.
G_FILE_ERROR_INTR Прерванный вызов функции; произошёл асинхронный сигнал и предотвратил завершение вызова. Когда это происходит вы должны повторить вызов снова.
G_FILE_ERROR_IO Ошибка ввода/вывода; обычно используется для физических ошибок чтения или записи. То есть диск или другое физическое устройство вернуло ошибку.
G_FILE_ERROR_PERM Опереция не разрешена; только владелец файла (или другого ресурса) или процесс со специальными правами может выполнить операцию.
G_FILE_ERROR_NOSYS Функция не реализована; это указывает что в системе отсутствует некоторая функциональность.
G_FILE_ERROR_FAILED Не соответствует ошибочному коду UNIX; это стандартный код ошибки "failed for unspecified reason" представленный во всех перечислениях GError кодов ошибок. Возвращается если нет определённого кода.

G_FILE_ERROR

#define G_FILE_ERROR g_file_error_quark ()

Домен ошибки для файловых операций. Ошибки в этом домене из перечисления GFileError. Смотрите GError для информации о доменах ошибки.


enum GFileTest

typedef enum
{
  G_FILE_TEST_IS_REGULAR    = 1 << 0,
  G_FILE_TEST_IS_SYMLINK    = 1 << 1,
  G_FILE_TEST_IS_DIR        = 1 << 2,
  G_FILE_TEST_IS_EXECUTABLE = 1 << 3,
  G_FILE_TEST_EXISTS        = 1 << 4
} GFileTest;

Перечисление для тестирования файла используя g_file_test().

G_FILE_TEST_IS_REGULAR TRUE если файл обычный (не ссылка или каталог)
G_FILE_TEST_IS_SYMLINK TRUE если файл является символической ссылкой.
G_FILE_TEST_IS_DIR TRUE если файл является каталогом.
G_FILE_TEST_IS_EXECUTABLE TRUE если файл исполняемый.
G_FILE_TEST_EXISTS TRUE если файл существует. Может быть или не быть обычным файлом.

g_file_error_from_errno ()

GFileError  g_file_error_from_errno         (gint err_no);

Получает константу GFileError основанную на помещённой errno. Например, если вы поместили EEXIST эта функция вернёт G_FILE_ERROR_EXIST. В отличие от значений errno, вы можете предполагать что все значения GFileError будут существовать при портировании.

Обычно значение GFileError происходит из GError возвращаемой из функций манипулирования файлами. Поэтому вы должны использовать g_file_error_from_errno() при создании GError.

err_no : значение "errno"
Возвращает : GFileError соответствующую полученной errno

g_file_get_contents ()

gboolean    g_file_get_contents             (const gchar *filename,
                                             gchar **contents,
                                             gsize *length,
                                             GError **error);

Читает весь файл в распределённую память, с хорошей проверкой ошибок.

Если вызов был выполнен успешно, то возвращает TRUE и устанавливает contents в файловый контекст, а length в длину файлового контекста в байтах. Строка сохраняемая в contents будет nul-завершённой, таким образом для текстового файла вы можете поместить NULL для аргумента length. Если вызов не выполнен, то возвращает FALSE и устанавливает error. Домен ошибки это G_FILE_ERROR. Возможные коды ошибок берутся в перечислении GFileError. В случае ошибки, contents устанавливается в значение NULL, а length в нулевое значение.

filename : имя файла из которого читается содержимое, в кодировке имён файлов GLib
contents : расположение для хранения распределённой строки
length : расположение для хранения длины содержимого в байтах, или NULL
error : расположение для возвращаемой GError, или NULL
Возвращает : TRUE при успешном выполнении, FALSE если произошла ошибка

g_file_set_contents ()

gboolean    g_file_set_contents             (const gchar *filename,
                                             const gchar *contents,
                                             gssize length,
                                             GError **error);

Записывает весь contents в файл с именем filename, с хорошим контролем ошибок. Если файл с именем filename уже существует он будет переписан.

Эта запись атомарная в том смысле что сначала записывается в во временный файл который затем переименовывается в конечное имя. Помните:

  • В Unix, если filename уже является жёсткой ссылкой, то связь с filename будет сломана. А также, так как файл перезаписан, существующие права доступа, метаданные и т.д. могут быть утеряны. Если filename символическая ссылка, то сама связь будет заменена на не связанный файл.
  • В Windows переименованный файл не удаляет существующий файл, поэтому в Windows есть условие "гонки" между существующим удаляемым файлом и временным переименовываемым файлом.
  • В Windows нет способа удаления файла который открыт другим процессом, или отображён в память. Поэтому, эта функция терпит неудачу если filename уже существует и открыт.

Если вызов был успешен, возвращает TRUE. Если вызов неудался, возвращает FALSE и устанавливает error. Домен ошибки - G_FILE_ERROR. Возможные коды ошибок берутся из перечисления GFileError enumeration.

filename : имя файла для записи контекста contents, в кодировке имён файлов GLib
contents : строка для записи в файл
length : длина contents, или -1 если contents является nul-завершённой строкой
error : расположение для возвращаемой GError, или NULL
Возвращает : TRUE при успешном выполнении, FALSE если произошла ошибка

Начиная с версии 2.8


g_file_test ()

gboolean    g_file_test                     (const gchar *filename,
                                             GFileTest test);

Возвращает TRUE если любой из тестов в битовом поле test является TRUE. Например, (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR) вернёт TRUE если файл существует; проверка является ли он каталогом не имеет значения, так как тест существования имеет значение TRUE. С текущем набором доступных тестов, нет никакого смысла помещать больше чем один тест одновременно.

Помимо G_FILE_TEST_IS_SYMLINK все тесты поддерживают символические тесты, поэтому для символической ссылки на обычный файл g_file_test() вернёт TRUE и для G_FILE_TEST_IS_SYMLINK и для G_FILE_TEST_IS_REGULAR.

Помните, для висящей символической ссылки g_file_test() вернёт TRUE для G_FILE_TEST_IS_SYMLINK и FALSE для других флагов.

Вы никогда не должны использовать g_file_test() для тестирования безопасности операции, потомучто всегда есть возможность условия изменяющегося прежде чем вы фактически выполнили операцию. Например, вы можете подумать что можно использовать G_FILE_TEST_IS_SYMLINK, чтобы определить можно ли безопасно записать в файл не опасаясь что он находится в другом месте. Это не работает!

/* Не делайте это */
 if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK)) {
   fd = g_open (filename, O_WRONLY);
   /* запись в fd */
 }

Также помните что G_FILE_TEST_EXISTS и G_FILE_TEST_IS_EXECUTABLE реализованы с использованием системного вызова access(). Это обычно не имеет значения, но если ваша программа имеет setuid или setgid это значит что эти тесты дадут вам ответ для реального user ID и group ID, а не действующего user ID и group ID.

В Windows, нет символических ссылок, поэтому тест для G_FILE_TEST_IS_SYMLINK будет всегда возвращать FALSE. Тест для G_FILE_TEST_IS_EXECUTABLE будет просто проверять что файл существует и его имя указывает что он исполняемый, проверяя известные расширения и их список в переменной окружения PATHEXT.

filename : имя проверяемого файла в кодировке имён файлов GLib
test : логическое поле флагов GFileTest
Возвращает : был ли тест TRUE

g_mkstemp ()

gint        g_mkstemp                       (gchar *tmpl);

Открывает временный файл. Смотрите документацию mkstemp() в большинстве UNIX-подобных системах.

В качестве параметра используется строка которая должна соответствовать правилам шаблонов mkstemp(), то есть содержать строку "XXXXXX". g_mkstemp() более гибкая чем mkstemp() в которой последовательность не должна находится в самом конце шаблона. Строка X изменяется для формирования имени не существующего файла. Строка должна быть в кодировке имён файлов GLib. Наиболее важно что в Windows она должна быть в UTF-8.

tmpl : шаблон имени файла
Возвращает : Дескриптор файла (как из open()) для файла открытого для записи и чтения. Файл открывается в двоичном режиме на платформах где есть различия. Дескриптор файла должен быть закрыт с помощью close(). В случае ошибки, возвращается -1.

g_file_open_tmp ()

gint        g_file_open_tmp                 (const gchar *tmpl,
                                             gchar **name_used,
                                             GError **error);

Открывает файл для записи в привилегированный каталог временных файлов (который возвращается из g_get_tmp_dir()).

tmpl должен быть строкой в кодировке имён файлов GLib содержащей последовательность шести символов 'X', также как параметр в g_mkstemp(). Однако в отличие от этой функции, шаблон должен быть только базовым именем, ни какие компоненты каталога не допускаются. Если шаблон NULL, используется шаблон по умолчанию.

Помните что в отличие от g_mkstemp()mkstemp()) tmpl не изменяется, и может таким образом быть буквенной строкой только для чтения.

Фактически используется имя возвращаемое в name_used если не-NULL. Эта строка должна быть освобождена с помощью g_free() когда больше не нужна. Возвращаемое имя находится в кодировке имён файлов GLib.

tmpl : Шаблон для имени файла, как в g_mkstemp(), только базовое имя, или NULL, для использования шаблона по умолчанию.
name_used : расположение для хранения фактически используемого имени
error : расположение для возвращаемой GError
Возвращает : Дескриптор файла (как из open()) открытого для чтения и записи. Файл открывается в двоичном режиме на платформах где есть разница. Дескриптор файла должен быть закрыт с помощью close(). В случае ошибки, возвращает -1 и устанавливает error.

g_file_read_link ()

gchar*      g_file_read_link                (const gchar *filename,
                                             GError **error);

Читает содержимое символической ссылки filename также как POSIX функция readlink(). Возвращаемая строка находится в кодировке используемой для имён файлов. Использует g_filename_to_utf8() для конвертации в UTF-8.

filename : символическая ссылка
error : размещение для возвращаемой GError
Возвращает : Вновь распределённая строка с содержимым символической ссылки, или NULL если произошла ошибка.

Начиная с версии 2.4


g_mkdir_with_parents ()

int         g_mkdir_with_parents            (const gchar *pathname,
                                             int mode);

Создаёт каталог если он ещё не существует. Также создаёт необходимые промежуточные родительские каталоги.

pathname : имя пути в кодировке имён файлов GLib
mode : права доступа для вновь созданных каталогов
Возвращает : 0 если каталог существует, или был полностью создан. Возвращает -1 если произошла ошибка, с установкой errno.

Начиная с версии 2.8


GDir

typedef struct _GDir GDir;

Непрозрачная структура представляющая открытый каталог.


g_dir_open ()

GDir*       g_dir_open                      (const gchar *path,
                                             guint flags,
                                             GError **error);

Открывает каталог для чтения. Имена файлов в каталоге могут быть найдены с помощью g_dir_read_name().

path : путь к интересующему вас каталогу. В Unix в дисковой кодировке (on-disk encoding). В Windows в UTF-8
flags : В текущее время должен быть установлен в 0. Зарезервирован для использования в будующем.
error : расположение для возвращаемой GError, или NULL. Если не-NULL, будет установлена ошибка если и только если g_dir_open() закончилась неудачей.
Возвращает : вновь распределённая GDir при успешном выполнении, NULL при неудаче. Если не-NULL, вы должны освободить результат с помощью g_dir_close() когда вы закончите.

g_dir_read_name ()

const gchar* g_dir_read_name                (GDir *dir);

Находит имя следующего входа в каталоге. Входы '.' и '..' пропускаются. В Windows, возвращаемое имя находится в кодировке UTF-8. В Unix, она находится в дисковой кодировке (on-disk encoding).

dir : GDir* созданная с помощью g_dir_open()
Возвращает : Имя входа или NULL если нет больше входов. Возвращаемым значением владеет GLib и оно не должно модифицироваться или освобождаться.

g_dir_rewind ()

void        g_dir_rewind                    (GDir *dir);

Сбрасывает полученный каталог до первой записи. Следующий вызов g_dir_read_name() снова вернёт первый вход.

dir : GDir* созданная с помощью g_dir_open()

g_dir_close ()

void        g_dir_close                     (GDir *dir);

Закрывает каталоги и освобождает все связанные с ними ресурсы.

dir : GDir* созданная с помощью g_dir_open()

GMappedFile

typedef struct _GMappedFile GMappedFile;

GMappedFile представляет отображение файла созданное с помощью g_mapped_file_new(). Она имеет только закрытые элементы и не должна использоваться непосредственно.


g_mapped_file_new ()

GMappedFile* g_mapped_file_new              (const gchar *filename,
                                             gboolean writable,
                                             GError **error);

Отображает файл в памяти. В UNIX, она использует функцию mmap().

Если writable равна TRUE, буфер отображения может модифицироваться, иначе она представляет ошибку для изменения отображённого буфера. Модификации буфера невидимы для других процессов отображающих тот же файл и не записываются обратно в файл.

Помните что модификации основного файла могут затронуть содержимое GMappedFile. Поэтому отображение должно использоваться только если файл не будет изменён, или все модификации файла сделаны атомарно (например используя g_file_set_contents()).

filename : путь файла для загрузки, в кодировке имён файлов GLib
writable : если отображение должно быть изменяемым
error : расположение для возвращаемой GError, или NULL
Возвращает : вновь распределённая GMappedFile которая должна освобождаться с помощью g_mapped_file_free(), или NULL если отображение не удалось.

Начиная с версии 2.8


g_mapped_file_free ()

void        g_mapped_file_free              (GMappedFile *file);

Сбрасывает буфер отображения для file и освобождает его.

file : GMappedFile

Начиная с версии 2.8


g_mapped_file_get_length ()

gsize       g_mapped_file_get_length        (GMappedFile *file);

Возвращает размер содержимого GMappedFile.

file : GMappedFile
Возвращает : размер содержимого file.

Начиная с версии 2.8


g_mapped_file_get_contents ()

gchar*      g_mapped_file_get_contents      (GMappedFile *file);

Returns the contents of a GMappedFile.

Помните что содержимое может быть не ноль-завершённым (zero-terminated), даже если GMappedFile поддерживается текстовым файлом.

file : GMappedFile
Возвращает : содержимое file.

Начиная с версии 2.8


g_open ()

int         g_open                          (const gchar *filename,
                                             int flags,
                                             int mode);

Оболочка для POSIX функции open(). Функция open() используется для конвертации имени пути в дескриптор файла. Помните что в POSIX системах дескриптор файла реализуется системной операцией. В Windows, это C библиотека которая реализует open() и дескриптор файла. Фактическое Windows API для открытия файлов является другим.

Смотрите руководство C library для детальной информации о open().

filename : имя пути в кодировке имён файлов GLib (UTF-8 в Windows)
flags : как в open()
mode : как в open()
Возвращает : новый дескриптор файла, или -1 если произошла ошибка. Возвращаемое значение может быть использовано точно также как значение из open().

Начиная с версии 2.6


g_rename ()

int         g_rename                        (const gchar *oldfilename,
                                             const gchar *newfilename);

Оболочка для POSIX функции rename(). Функция rename() переименовывает файл, перемещая его между каталогами если необходимо.

Смотрите руководство для вашей C библиотеки для получения деталей о том как работает rename() в вашей системе. Помните что в Win9x не возможно переименовать файл если файл с новым именем уже существует. Также это не возможно вообще в Windows для открытых файлов.

oldfilename : имя пути в кодировке имён файлов GLib (UTF-8 в Windows)
newfilename : имя пути в кодировке имён файлов GLib
Возвращает : 0 если переименование выполнено, -1 если произошла ошибка

Начиная с версии 2.6


g_mkdir ()

int         g_mkdir                         (const gchar *filename,
                                             int mode);

Оболочка для POSIX функции mkdir(). Функция mkdir() пытается создать каталог с полученным именем и правами доступа.

Смотрите руководство C библиотеки для больших деталей о mkdir().

filename : имя пути в кодировке имён файлов GLib (UTF-8 в Windows)
mode : права доступа для использования вновь созданного каталога
Возвращает : 0 если каталог был полностью создан, -1 если произошла ошибка

Начиная с версии 2.6


g_stat ()

int         g_stat                          (const gchar *filename,
                                             struct stat *buf);

Оболочка для POSIX функции stat(). Функция stat() возвращает информацию о файле.

Смотрите руководство C библиотеки для больших деталей о stat().

filename : имя пути в кодировке имён файлов GLib (UTF-8 в Windows)
buf : указатель на структуру stat, которая заполнена информацией о файле.
Возвращает : 0 если информация полностью получена, -1 если произошла ошибка

Начиная с версии 2.6


g_lstat ()

int         g_lstat                         (const gchar *filename,
                                             struct stat *buf);

Оболочка для POSIX функции lstat(). Функция lstat() похожа на stat() за исключением того что в случае символической ссылки она возвращает информацию о символической ссылке непосредственно, а не о файле на который она ссылается. Если система не поддерживает символических ссылок g_lstat() идентична g_stat().

Смотрите руководство C библиотеки для больших деталей о lstat().

filename : имя пути в кодировке имён файлов GLib (UTF-8 в Windows)
buf : указатель на структуру stat, которая заполняется информацией о файле
Возвращает : 0 если информация была полностью получена, -1 если произошла ошибка

Начиная с версии 2.6


g_unlink ()

int         g_unlink                        (const gchar *filename);

Оболочка для POSIX функции unlink(). Функция unlink() удаляет имя из файловой системы. Если оно было последней ссылкой на файл и нет процессов открывших его, дисковое пространство освобождается от файла.

Смотрите руководство C библиотеки для больших деталей о unlink(). Помните что в Windows, она не может удалить файлы которые открыты каким нибудь процессом, или отображены в памяти.

filename : имя пути в кодировке имён файлов GLib (UTF-8 в Windows)
Возвращает : 0 если имя полностью удалено, -1 если произошла ошибка

Начиная с версии 2.6


g_remove ()

int         g_remove                        (const gchar *filename);

Оболочка для POSIX функции remove(). Функция remove() удаляет имя файла из файловой системы.

Смотрите руководство C библиотеки для больших деталей о том как работает remove() в вашей системе. В Unix, remove() удаляет также каталоги, так как она вызывает unlink() для файлов и rmdir() для каталогов. В Windows, хотя remove() в C библиотеке работает только для файлов, эта функция вызовет сначала remove() а затем если это не удалось rmdir(), поэтому работает и для файлов и для каталогов. Помните однако, что в Windows, она не сможет удалить файл который открыт каким нибудь процессом, или отображён в память.

Если эта функция закончилась неудачно в Windows вы не можете получить слишком много из значения ошибки. rmdir() пробует выполниться не зависимо от того что remove() завершилась неудачно. Любое значение errno установленное remove() будет переписано rmdir().

filename : имя пути в кодировке имён файлов GLib (UTF-8 в Windows)
Возвращает : 0 если файл был полностью удалён, -1 если произошла ошибка

Начиная с версии 2.6


g_rmdir ()

int         g_rmdir                         (const gchar *filename);

Оболочка для POSIX функции rmdir(). Функция rmdir() каталог из файловой системы.

Смотрите руководство C библиотеки для больших деталей о том как работает rmdir() в вашей системе.

filename : имя пути в кодировке имён файлов GLib (UTF-8 в Windows)
Возвращает : 0 если каталог был полностью удалён, -1 если произошла ошибка

Начиная с версии 2.6


g_fopen ()

FILE*       g_fopen                         (const gchar *filename,
                                             const gchar *mode);

Оболочка для POSIX функции fopen(). Функция fopen() открывает файл и связывает его с новым потоком.

Смотрите руководство C библиотеки для деталей о fopen().

filename : имя пути в кодировке имён файлов GLib (UTF8 в Windows)
mode : строка описывающая режим в котором должен быть открыт файл
Возвращает : Указатель FILE если файл был успешно открыт, или NULL если произошла ошибка

Начиная с версии 2.6


g_freopen ()

FILE*       g_freopen                       (const gchar *filename,
                                             const gchar *mode,
                                             FILE *stream);

Оболочка для POSIX функции freopen(). Функция freopen() открывает файл и связывает его с существующим потоком.

Смотрите руководство С библиотеки для больших деталей о freopen().

filename : имя пути в кодировке имён файлов GLib (UTF8 в Windows)
mode : строка описывающая режим в котором должен быть открыт файл
stream : существующий поток который будет использоваться, или NULL
Возвращает : Указатель FILE если файл успешно открыт, или NULL если произошла ошибка.

Начиная с версии 2.6


g_chmod ()

int         g_chmod                         (const gchar *filename,
                                             int mode);

Оболочка для POSIX функции chmod(). Функция chmod() используется для установки прав на файл. Помните что в Windows механизм защиты файла не соответсвует POSIX, а основан на функции chmod() в библиотеке C library просто очищая или устанавливая атрибут READONLY. Он не связан с другими ACL. Программы которые нуждаются в управлении правами доступа файла в Windows естественно должны использовать Win32 API.

Смотрите руководство С библиотеки для больших деталей о chmod().

filename : имя пути в кодировке имён файлов GLib (UTF8 в Windows)
mode : как в chmod()
Возвращает : ноль если операция полностью выполнена, -1 при ошибке.

Начиная с версии 2.8


g_access ()

int         g_access                        (const gchar *filename,
                                             int mode);

Оболочка для POSIX функции access(). Эта функция используется для тестирования имени пути на доступ чтения, записи или исполнения, или просто существование. В Windows, основная функция access() в C библиотеке только проверяет параметр READONLY, и не смотрит остальные ACL. Программное обеспечение, которое должно более точно обрабатывать права доступа в Windows, должно использовать Win32 API.

Смотрите руководство С библиотеки для больших деталей о access().

filename : имя пути в кодировке имён файлов GLib (UTF8 в Windows)
mode : как в access()
Возвращает : ноль если имя пути ссылается на существующий объект в файловой системе который прошёл все тесты доступа, или -1 если произошла ошибка.

Начиная с версии 2.8


g_creat ()

int         g_creat                         (const gchar *filename,
                                             int mode);

Оболочка для POSIX функции creat(). Функция creat() используется для конвертации имени пути в дескриптор файла, создавая файл если необходимо. Помните что в POSIX системах дескриптор файла реализуется операционной системой. В Windows, это выполняет C библиотека которая реализует creat() и дескриптор файла. Фактически Windows API для открытия файлов несколько другое.

Смотрите руководство С библиотеки для больших деталей о creat().

filename : имя пути в кодировке имён файлов GLib (UTF8 в Windows)
mode : как в creat()
Возвращает : новый дескриптор файла, или -1 если произошла ошибка. Возвращаемое значение может использоваться точно также как значение из creat().

Начиная с версии 2.8


g_chdir ()

int         g_chdir                         (const gchar *path);

Оболочка для POSIX функции chdir(). Функция изменяет текущий каталог процесса на path.

Смотрите руководство вашей C библиотеки для больших деталей о chdir().

path : имя пути в кодировке имён файлов GLib (UTF8 в Windows)
Возвращает : 0 при успешном выполнении, -1 если произошла ошибка.

Начиная с версии 2.8