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 : строка describing the mode in which the file should be opened
Возвращает : A FILE pointer if the file was successfully opened, or NULL if an error occurred

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


g_freopen ()

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

A wrapper for the POSIX freopen() function. The freopen() function opens a file and associates it with an existing stream.

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

filename : имя пути в кодировке имён файлов GLib (UTF8 в Windows)
mode : строка describing the mode in which the file should be opened
stream : an existing stream which will be reused, or NULL
Возвращает : A FILE pointer if the file was successfully opened, or NULL if an error occurred.

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


g_chmod ()

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

A wrapper for the POSIX chmod() function. The chmod() function is used to set the permissions of a file system object. Note that on Windows the file protection mechanism is not at all POSIX-like, and the underlying chmod() function in the C library just sets or clears the READONLY attribute. It does not touch any ACL. Software that needs to manage file permissions on Windows exactly should use the 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