/* * Copyright (C) 2018 Facebook * * This file is part of libbtrfsutil. * * libbtrfsutil is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * libbtrfsutil is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with libbtrfsutil. If not, see . */ #ifndef BTRFSUTILPY_H #define BTRFSUTILPY_H #define PY_SSIZE_T_CLEAN #include #include #include #include "structmember.h" #include typedef struct { PyObject_HEAD struct btrfs_util_qgroup_inherit *inherit; } QgroupInherit; extern PyTypeObject BtrfsUtilError_type; extern PyStructSequence_Desc SubvolumeInfo_desc; extern PyTypeObject SubvolumeInfo_type; extern PyTypeObject QgroupInherit_type; /* * Helpers for path arguments based on posixmodule.c in CPython. */ struct path_arg { bool allow_fd; char *path; int fd; Py_ssize_t length; PyObject *object; PyObject *cleanup; }; int path_converter(PyObject *o, void *p); void path_cleanup(struct path_arg *path); void SetFromBtrfsUtilError(enum btrfs_util_error err); void SetFromBtrfsUtilErrorWithPath(enum btrfs_util_error err, struct path_arg *path); void SetFromBtrfsUtilErrorWithPaths(enum btrfs_util_error err, struct path_arg *path1, struct path_arg *path2); PyObject *filesystem_sync(PyObject *self, PyObject *args, PyObject *kwds); PyObject *start_sync(PyObject *self, PyObject *args, PyObject *kwds); PyObject *wait_sync(PyObject *self, PyObject *args, PyObject *kwds); PyObject *is_subvolume(PyObject *self, PyObject *args, PyObject *kwds); PyObject *subvolume_id(PyObject *self, PyObject *args, PyObject *kwds); PyObject *subvolume_path(PyObject *self, PyObject *args, PyObject *kwds); PyObject *subvolume_info(PyObject *self, PyObject *args, PyObject *kwds); PyObject *get_subvolume_read_only(PyObject *self, PyObject *args, PyObject *kwds); PyObject *set_subvolume_read_only(PyObject *self, PyObject *args, PyObject *kwds); PyObject *get_default_subvolume(PyObject *self, PyObject *args, PyObject *kwds); PyObject *set_default_subvolume(PyObject *self, PyObject *args, PyObject *kwds); PyObject *create_subvolume(PyObject *self, PyObject *args, PyObject *kwds); void add_module_constants(PyObject *m); #endif /* BTRFSUTILPY_H */