bool
ply_logger_open_file (ply_logger_t *logger,
- const char *filename)
+ const char *filename,
+ bool world_readable)
{
int fd;
+ mode_t mode;
assert (logger != NULL);
assert (filename != NULL);
- fd = open (filename, PLY_LOGGER_OPEN_FLAGS, 0600);
+ if (world_readable)
+ mode = 0644;
+ else
+ mode = 0600;
+
+ fd = open (filename, PLY_LOGGER_OPEN_FLAGS, mode);
if (fd < 0)
return false;
+ if (fchmod (fd, mode) < 0)
+ return false;
+
ply_logger_set_output_fd (logger, fd);
free (logger->filename);
ply_logger_t *ply_logger_new (void);
void ply_logger_free (ply_logger_t *logger);
bool ply_logger_open_file (ply_logger_t *logger,
- const char *filename);
+ const char *filename,
+ bool world_readable);
void ply_logger_close_file (ply_logger_t *logger);
void ply_logger_set_output_fd (ply_logger_t *logger,
int fd);
/* convenience macros
*/
#define ply_open_log_file(filename) \
- ply_logger_open_file (ply_logger_get_default (), filename)
+ ply_logger_open_file (ply_logger_get_default (), filename, false)
#define ply_close_log_file() \
ply_logger_close_file (ply_logger_get_default ())
#define ply_flush_log() \
assert (session->logger != NULL);
ply_save_errno ();
- log_is_opened = ply_logger_open_file (session->logger, filename);
+ log_is_opened = ply_logger_open_file (session->logger, filename, true);
if (log_is_opened)
ply_logger_flush (session->logger);
ply_restore_errno ();