libreport 2.17.15
A tool to inform users about various problems on the running system
Loading...
Searching...
No Matches
dump_dir.h File Reference
#include "libreport_types.h"
#include "report_result.h"
#include <stdint.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <glib.h>

Go to the source code of this file.

Data Structures

struct  dump_dir
 

Typedefs

typedef int(* save_data_call_back) (struct dump_dir *, void *args)
 

Enumerations

enum  dump_dir_flags {
  DD_FAIL_QUIETLY_ENOENT = (1 << 0) , DD_FAIL_QUIETLY_EACCES = (1 << 1) , DD_OPEN_FOLLOW = (1 << 2) , DD_OPEN_READONLY = (1 << 3) ,
  DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE = (1 << 4) , DD_DONT_WAIT_FOR_LOCK = (1 << 5) , DD_CREATE_PARENTS = (1 << 6) , DD_OPEN_FD_ONLY = (1 << 7)
}
 
enum  { DD_STAT_ACCESSIBLE_BY_UID = 1 , DD_STAT_OWNED_BY_UID = DD_STAT_ACCESSIBLE_BY_UID << 1 , DD_STAT_NO_OWNER = DD_STAT_OWNED_BY_UID << 1 }
 

Functions

int create_symlink_lockfile (const char *filename, const char *pid_str)
 
int create_symlink_lockfile_at (int dir_fd, const char *filename, const char *pid_str)
 
int secure_openat_read (int dir_fd, const char *filename)
 
void dd_close (struct dump_dir *dd)
 
struct dump_dirdd_opendir (const char *dir, int flags)
 
struct dump_dirdd_fdopendir (struct dump_dir *dd, int flags)
 
struct dump_dirdd_create_skeleton (const char *dir, uid_t uid, mode_t mode, int flags)
 
int dd_reset_ownership (struct dump_dir *dd)
 
struct dump_dirdd_create (const char *dir, uid_t uid, mode_t mode)
 
void dd_create_basic_files (struct dump_dir *dd, uid_t uid, const char *chroot_dir)
 
int dd_exist (const struct dump_dir *dd, const char *path)
 
void dd_sanitize_mode_and_owner (struct dump_dir *dd)
 
DIR * dd_init_next_file (struct dump_dir *dd)
 
int dd_get_next_file (struct dump_dir *dd, char **short_name, char **full_name)
 
void dd_clear_next_file (struct dump_dir *dd)
 
char * load_text_file (const char *path, unsigned flags)
 
char * dd_load_text_ext (const struct dump_dir *dd, const char *name, unsigned flags)
 
char * dd_load_text (const struct dump_dir *dd, const char *name)
 
int dd_load_int32 (const struct dump_dir *dd, const char *name, int32_t *value)
 
int dd_load_uint32 (const struct dump_dir *dd, const char *name, uint32_t *value)
 
int dd_load_int64 (const struct dump_dir *dd, const char *name, int64_t *value)
 
int dd_load_uint64 (const struct dump_dir *dd, const char *name, uint64_t *value)
 
int dd_get_env_variable (struct dump_dir *dd, const char *name, char **value)
 
void dd_save_text (struct dump_dir *dd, const char *name, const char *data)
 
void dd_save_binary (struct dump_dir *dd, const char *name, const char *data, unsigned size)
 
int dd_copy_file (struct dump_dir *dd, const char *name, const char *source_path)
 
int dd_copy_file_unpack (struct dump_dir *dd, const char *name, const char *source_path)
 
int dd_unpack_coredump (struct dump_dir *dd, const char *coredump_archive_filename)
 
int dd_copy_file_at (struct dump_dir *dd, const char *name, int src_dir_fd, const char *src_name)
 
off_t dd_copy_fd (struct dump_dir *dd, const char *name, int fd, int copy_flags, off_t maxsize)
 
int dd_item_stat (struct dump_dir *dd, const char *name, struct stat *statbuf)
 
long dd_get_item_size (struct dump_dir *dd, const char *name)
 
int dd_get_items_count (struct dump_dir *dd)
 
int dd_delete_item (struct dump_dir *dd, const char *name)
 
int dd_open_item (struct dump_dir *dd, const char *name, int flags)
 
FILE * dd_open_item_file (struct dump_dir *dd, const char *name, int flags)
 
int dd_delete (struct dump_dir *dd)
 
int dd_rename (struct dump_dir *dd, const char *new_path)
 
int dd_chown (struct dump_dir *dd, uid_t new_uid)
 
off_t dd_compute_size (struct dump_dir *dd, int flags)
 
int dd_set_owner (struct dump_dir *dd, uid_t owner)
 
int dd_set_no_owner (struct dump_dir *dd)
 
uid_t dd_get_owner (struct dump_dir *dd)
 
time_t dd_get_first_occurrence (struct dump_dir *dd)
 
time_t dd_get_last_occurrence (struct dump_dir *dd)
 
int libreport_add_reported_to_data (char **reported_to, const char *line)
 
int libreport_add_reported_to_entry_data (char **reported_to, struct report_result *result)
 
void libreport_add_reported_to (struct dump_dir *dd, const char *line)
 
void libreport_add_reported_to_entry (struct dump_dir *dd, struct report_result *result)
 
report_result_t * libreport_find_in_reported_to_data (const char *reported_to, const char *report_label)
 
report_result_t * libreport_find_in_reported_to (struct dump_dir *dd, const char *report_label)
 
GList * libreport_read_entire_reported_to_data (const char *reported_to)
 
GList * libreport_read_entire_reported_to (struct dump_dir *dd)
 
void delete_dump_dir (const char *dirname)
 
int dump_dir_accessible_by_uid (const char *dirname, uid_t uid)
 
int dd_accessible_by_uid (struct dump_dir *dd, uid_t uid)
 
int dump_dir_stat_for_uid (const char *dirname, uid_t uid)
 
int dd_stat_for_uid (struct dump_dir *dd, uid_t uid)
 
int dd_mark_as_notreportable (struct dump_dir *dd, const char *reason)
 
struct dump_dircreate_dump_dir (const char *base_dir_name, const char *type, uid_t uid, save_data_call_back save_data, void *args)
 
struct dump_dircreate_dump_dir_ext (const char *base_dir_name, const char *type, pid_t pid, uid_t uid, save_data_call_back save_data, void *args)
 
int dd_create_archive (struct dump_dir *dd, const char *archive_name, const_string_vector_const_ptr_t exclude_elements, int flags)
 

Variables

uid_t dd_g_super_user_uid
 
gid_t dd_g_fs_group_gid
 

Typedef Documentation

◆ save_data_call_back

typedef int(* save_data_call_back) (struct dump_dir *, void *args)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
DD_STAT_ACCESSIBLE_BY_UID 
DD_STAT_OWNED_BY_UID 
DD_STAT_NO_OWNER 

◆ dump_dir_flags

Enumerator
DD_FAIL_QUIETLY_ENOENT 
DD_FAIL_QUIETLY_EACCES 
DD_OPEN_FOLLOW 
DD_OPEN_READONLY 
DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE 
DD_DONT_WAIT_FOR_LOCK 
DD_CREATE_PARENTS 
DD_OPEN_FD_ONLY 

Function Documentation

◆ create_dump_dir()

struct dump_dir * create_dump_dir ( const char * base_dir_name,
const char * type,
uid_t uid,
save_data_call_back save_data,
void * args )

◆ create_dump_dir_ext()

struct dump_dir * create_dump_dir_ext ( const char * base_dir_name,
const char * type,
pid_t pid,
uid_t uid,
save_data_call_back save_data,
void * args )

◆ create_symlink_lockfile()

int create_symlink_lockfile ( const char * filename,
const char * pid_str )

◆ create_symlink_lockfile_at()

int create_symlink_lockfile_at ( int dir_fd,
const char * filename,
const char * pid_str )

◆ dd_accessible_by_uid()

int dd_accessible_by_uid ( struct dump_dir * dd,
uid_t uid )

◆ dd_chown()

int dd_chown ( struct dump_dir * dd,
uid_t new_uid )

◆ dd_clear_next_file()

void dd_clear_next_file ( struct dump_dir * dd)

◆ dd_close()

void dd_close ( struct dump_dir * dd)

◆ dd_compute_size()

off_t dd_compute_size ( struct dump_dir * dd,
int flags )

◆ dd_copy_fd()

off_t dd_copy_fd ( struct dump_dir * dd,
const char * name,
int fd,
int copy_flags,
off_t maxsize )

◆ dd_copy_file()

int dd_copy_file ( struct dump_dir * dd,
const char * name,
const char * source_path )

◆ dd_copy_file_at()

int dd_copy_file_at ( struct dump_dir * dd,
const char * name,
int src_dir_fd,
const char * src_name )

◆ dd_copy_file_unpack()

int dd_copy_file_unpack ( struct dump_dir * dd,
const char * name,
const char * source_path )

◆ dd_create()

struct dump_dir * dd_create ( const char * dir,
uid_t uid,
mode_t mode )

◆ dd_create_archive()

int dd_create_archive ( struct dump_dir * dd,
const char * archive_name,
const_string_vector_const_ptr_t exclude_elements,
int flags )

◆ dd_create_basic_files()

void dd_create_basic_files ( struct dump_dir * dd,
uid_t uid,
const char * chroot_dir )

◆ dd_create_skeleton()

struct dump_dir * dd_create_skeleton ( const char * dir,
uid_t uid,
mode_t mode,
int flags )

◆ dd_delete()

int dd_delete ( struct dump_dir * dd)

◆ dd_delete_item()

int dd_delete_item ( struct dump_dir * dd,
const char * name )

◆ dd_exist()

int dd_exist ( const struct dump_dir * dd,
const char * path )

◆ dd_fdopendir()

struct dump_dir * dd_fdopendir ( struct dump_dir * dd,
int flags )

◆ dd_get_env_variable()

int dd_get_env_variable ( struct dump_dir * dd,
const char * name,
char ** value )

◆ dd_get_first_occurrence()

time_t dd_get_first_occurrence ( struct dump_dir * dd)

◆ dd_get_item_size()

long dd_get_item_size ( struct dump_dir * dd,
const char * name )

◆ dd_get_items_count()

int dd_get_items_count ( struct dump_dir * dd)

◆ dd_get_last_occurrence()

time_t dd_get_last_occurrence ( struct dump_dir * dd)

◆ dd_get_next_file()

int dd_get_next_file ( struct dump_dir * dd,
char ** short_name,
char ** full_name )

◆ dd_get_owner()

uid_t dd_get_owner ( struct dump_dir * dd)

Gets the owner of the dump directory.

If meta-data 'owner' is not present or readable, returns filesystem owner. Can be used with DD_OPEN_FD_ONLY.

Parameters
ddThe dump directory in question.
Returns
The dump directory owner's UID or (uid_t)-1 on error (consult errno).

◆ dd_init_next_file()

DIR * dd_init_next_file ( struct dump_dir * dd)

◆ dd_item_stat()

int dd_item_stat ( struct dump_dir * dd,
const char * name,
struct stat * statbuf )

◆ dd_load_int32()

int dd_load_int32 ( const struct dump_dir * dd,
const char * name,
int32_t * value )

◆ dd_load_int64()

int dd_load_int64 ( const struct dump_dir * dd,
const char * name,
int64_t * value )

◆ dd_load_text()

char * dd_load_text ( const struct dump_dir * dd,
const char * name )

◆ dd_load_text_ext()

char * dd_load_text_ext ( const struct dump_dir * dd,
const char * name,
unsigned flags )

◆ dd_load_uint32()

int dd_load_uint32 ( const struct dump_dir * dd,
const char * name,
uint32_t * value )

◆ dd_load_uint64()

int dd_load_uint64 ( const struct dump_dir * dd,
const char * name,
uint64_t * value )

◆ dd_mark_as_notreportable()

int dd_mark_as_notreportable ( struct dump_dir * dd,
const char * reason )

◆ dd_open_item()

int dd_open_item ( struct dump_dir * dd,
const char * name,
int flags )

◆ dd_open_item_file()

FILE * dd_open_item_file ( struct dump_dir * dd,
const char * name,
int flags )

◆ dd_opendir()

struct dump_dir * dd_opendir ( const char * dir,
int flags )

◆ dd_rename()

int dd_rename ( struct dump_dir * dd,
const char * new_path )

◆ dd_reset_ownership()

int dd_reset_ownership ( struct dump_dir * dd)

◆ dd_sanitize_mode_and_owner()

void dd_sanitize_mode_and_owner ( struct dump_dir * dd)

◆ dd_save_binary()

void dd_save_binary ( struct dump_dir * dd,
const char * name,
const char * data,
unsigned size )

◆ dd_save_text()

void dd_save_text ( struct dump_dir * dd,
const char * name,
const char * data )

◆ dd_set_no_owner()

int dd_set_no_owner ( struct dump_dir * dd)

◆ dd_set_owner()

int dd_set_owner ( struct dump_dir * dd,
uid_t owner )

◆ dd_stat_for_uid()

int dd_stat_for_uid ( struct dump_dir * dd,
uid_t uid )

◆ dd_unpack_coredump()

int dd_unpack_coredump ( struct dump_dir * dd,
const char * coredump_archive_filename )

◆ delete_dump_dir()

void delete_dump_dir ( const char * dirname)

◆ dump_dir_accessible_by_uid()

int dump_dir_accessible_by_uid ( const char * dirname,
uid_t uid )

◆ dump_dir_stat_for_uid()

int dump_dir_stat_for_uid ( const char * dirname,
uid_t uid )

◆ libreport_add_reported_to()

void libreport_add_reported_to ( struct dump_dir * dd,
const char * line )

◆ libreport_add_reported_to_data()

int libreport_add_reported_to_data ( char ** reported_to,
const char * line )

◆ libreport_add_reported_to_entry()

void libreport_add_reported_to_entry ( struct dump_dir * dd,
struct report_result * result )

◆ libreport_add_reported_to_entry_data()

int libreport_add_reported_to_entry_data ( char ** reported_to,
struct report_result * result )

◆ libreport_find_in_reported_to()

report_result_t * libreport_find_in_reported_to ( struct dump_dir * dd,
const char * report_label )

◆ libreport_find_in_reported_to_data()

report_result_t * libreport_find_in_reported_to_data ( const char * reported_to,
const char * report_label )

◆ libreport_read_entire_reported_to()

GList * libreport_read_entire_reported_to ( struct dump_dir * dd)

◆ libreport_read_entire_reported_to_data()

GList * libreport_read_entire_reported_to_data ( const char * reported_to)

◆ load_text_file()

char * load_text_file ( const char * path,
unsigned flags )

◆ secure_openat_read()

int secure_openat_read ( int dir_fd,
const char * filename )

Variable Documentation

◆ dd_g_fs_group_gid

gid_t dd_g_fs_group_gid
extern

◆ dd_g_super_user_uid

uid_t dd_g_super_user_uid
extern