|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
Copyright (C) 2015 ABRT team
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
This program is free software; you can redistribute it and/or modify
|
|
Packit |
8ea169 |
it under the terms of the GNU General Public License as published by
|
|
Packit |
8ea169 |
the Free Software Foundation; either version 2 of the License, or
|
|
Packit |
8ea169 |
(at your option) any later version.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
This program is distributed in the hope that it will be useful,
|
|
Packit |
8ea169 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
8ea169 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
8ea169 |
GNU General Public License for more details.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
You should have received a copy of the GNU General Public License along
|
|
Packit |
8ea169 |
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
Packit |
8ea169 |
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
------------------------------------------------------------------------------
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
This file declares functions for org.freedesktop.Problems2.Entry interface.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
Proxy for problem directories. Entry can be in one of three states. The
|
|
Packit |
8ea169 |
states are need to distinguish between just created problem directories (i.e.
|
|
Packit |
8ea169 |
not yet processed by abrtd), directories already accepted by abrtd
|
|
Packit |
8ea169 |
("post-create" finished successfully) and directories that were removed
|
|
Packit |
8ea169 |
(because there would be a room for race conditions -> remove directory vs.
|
|
Packit |
8ea169 |
destroy the corresponding D-Bus proxy).
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
#ifndef ABRT_P2_ENTRY_H
|
|
Packit |
8ea169 |
#define ABRT_P2_ENTRY_H
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#include "libabrt.h"
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#include <glib-object.h>
|
|
Packit |
8ea169 |
#include <gio/gio.h>
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
G_BEGIN_DECLS
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#define TYPE_ABRT_P2_ENTRY abrt_p2_entry_get_type ()
|
|
Packit |
8ea169 |
G_DECLARE_FINAL_TYPE(AbrtP2Entry, abrt_p2_entry, ABRT_P2, ENTRY, GObject)
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
AbrtP2Entry *abrt_p2_entry_new(char *dirname);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
typedef enum {
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_STATE_NEW, ///< not yet processed by abrtd
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_STATE_COMPLETE, ///< already processed by abrtd
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_STATE_DELETED, ///< just removed
|
|
Packit |
8ea169 |
} AbrtP2EntryState;
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
AbrtP2Entry *abrt_p2_entry_new_with_state(char *dirname,
|
|
Packit |
8ea169 |
AbrtP2EntryState state);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
AbrtP2EntryState abrt_p2_entry_state(AbrtP2Entry *entry);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_entry_set_state(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
AbrtP2EntryState state);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
int abrt_p2_entry_delete(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
int abrt_p2_entry_accessible_by_uid(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
uid_t uid,
|
|
Packit |
8ea169 |
struct dump_dir **dd);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
const char *abrt_p2_entry_problem_id(AbrtP2Entry *entry);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
struct dump_dir *abrt_p2_entry_open_dump_dir(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
int dd_flags,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_entry_problem_data(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_entry_delete_elements(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GVariant *elements,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
* Properties
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
uid_t abrt_p2_entry_get_owner(AbrtP2Entry *entry, GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
* Read elements
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
enum AbrtP2EntryReadElementsFlags
|
|
Packit |
8ea169 |
{
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_READ_ALL_FD = 0x01,
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_READ_ALL_TYPES = 0x02,
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_READ_ONLY_TEXT = 0x04,
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_READ_ONLY_BIG_TEXT = 0x08,
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_READ_ONLY_BINARY = 0x10,
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_READ_ALL_NO_FD = 0x20,
|
|
Packit |
8ea169 |
};
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_entry_read_elements(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
gint32 flags,
|
|
Packit |
8ea169 |
GVariant *elements,
|
|
Packit |
8ea169 |
GUnixFDList *fd_list,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
long max_size,
|
|
Packit |
8ea169 |
long max_unix_fds,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_entry_read_elements_async(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
gint32 flags,
|
|
Packit |
8ea169 |
GVariant *elements,
|
|
Packit |
8ea169 |
GUnixFDList *fd_list,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
long max_size,
|
|
Packit |
8ea169 |
long max_unix_fds,
|
|
Packit |
8ea169 |
GCancellable *cancellable,
|
|
Packit |
8ea169 |
GAsyncReadyCallback callback,
|
|
Packit |
8ea169 |
gpointer user_data);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_entry_read_elements_finish(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
GAsyncResult *result,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
* Save elements
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
enum AbrP2EntrySaveElementsFlags
|
|
Packit |
8ea169 |
{
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_IO_ERROR_FATAL = (1 << 0),
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_UNSUPPORTED_ERROR_FATAL = (1 << 1),
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_ELEMENTS_COUNT_LIMIT_FATAL = (1 << 2),
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_DATA_SIZE_LIMIT_FATAL = (1 << 3),
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_ALL_FATAL =( ABRT_P2_ENTRY_IO_ERROR_FATAL
|
|
Packit |
8ea169 |
| ABRT_P2_ENTRY_UNSUPPORTED_ERROR_FATAL
|
|
Packit |
8ea169 |
| ABRT_P2_ENTRY_ELEMENTS_COUNT_LIMIT_FATAL
|
|
Packit |
8ea169 |
| ABRT_P2_ENTRY_DATA_SIZE_LIMIT_FATAL),
|
|
Packit |
8ea169 |
};
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
typedef struct
|
|
Packit |
8ea169 |
{
|
|
Packit |
8ea169 |
unsigned elements_count;
|
|
Packit |
8ea169 |
off_t data_size;
|
|
Packit |
8ea169 |
} AbrtP2EntrySaveElementsLimits;
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#define ABRT_P2_ENTRY_SAVE_ELEMENTS_LIMITS_INITIALIZER(l, ec, ds) \
|
|
Packit |
8ea169 |
do { (l).elements_count = (ec); (l).data_size = (ds); } while (0)
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#define ABRT_P2_ENTRY_SAVE_ELEMENTS_LIMITS_ON_STACK(l, ec, ds) \
|
|
Packit |
8ea169 |
AbrtP2EntrySaveElementsLimits l; \
|
|
Packit |
8ea169 |
ABRT_P2_ENTRY_SAVE_ELEMENTS_LIMITS_INITIALIZER(l, ec, ds);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_entry_save_elements(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
gint32 flags,
|
|
Packit |
8ea169 |
GVariant *elements,
|
|
Packit |
8ea169 |
GUnixFDList *fd_list,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
AbrtP2EntrySaveElementsLimits *limits,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_entry_save_elements_async(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
gint32 flags,
|
|
Packit |
8ea169 |
GVariant *elements,
|
|
Packit |
8ea169 |
GUnixFDList *fd_list,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
AbrtP2EntrySaveElementsLimits *limits,
|
|
Packit |
8ea169 |
GCancellable *cancellable,
|
|
Packit |
8ea169 |
GAsyncReadyCallback callback,
|
|
Packit |
8ea169 |
gpointer user_data);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_entry_save_elements_finish(AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
GAsyncResult *result,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
* Utility functions
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
int abrt_p2_entry_save_elements_in_dump_dir(struct dump_dir *dd,
|
|
Packit |
8ea169 |
gint32 flags,
|
|
Packit |
8ea169 |
GVariant *elements,
|
|
Packit |
8ea169 |
GUnixFDList *fd_list,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
AbrtP2EntrySaveElementsLimits *limits,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
G_END_DECLS
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#endif/*ABRT_P2_ENTRY_H*/
|