libreport  2.15.2
A tool to inform users about various problems on the running system
Data Structures | Typedefs | Enumerations | Functions | Variables
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_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 
)

◆ 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