+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <atalk/util.h>
#include <atalk/logger.h>
-
-#define OPEN_LOGS_AS_UID 0
+#include <atalk/unix.h>
#define COUNT_ARRAY(array) (sizeof((array))/sizeof((array)[0]))
"CNID", \
"AFPDaemon", \
"DSI", \
- "ATalkDaemon", \
- "PAPDaemon", \
"UAMS", \
- "end_of_list_marker"} \
+ "FCE", \
+ "ad", \
+ "end_of_list_marker"}
/* =========================================================================
Config
DEFAULT_LOG_CONFIG, /* logtype_cnid */
DEFAULT_LOG_CONFIG, /* logtype_afpd */
DEFAULT_LOG_CONFIG, /* logtype_dsi */
- DEFAULT_LOG_CONFIG, /* logtype_atalkd */
- DEFAULT_LOG_CONFIG, /* logtype_papd */
- DEFAULT_LOG_CONFIG /* logtype_uams */
+ DEFAULT_LOG_CONFIG, /* logtype_uams */
+ DEFAULT_LOG_CONFIG, /* logtype_fce */
+ DEFAULT_LOG_CONFIG /* logtype_ad */
};
static void syslog_setup(int loglevel, enum logtypes logtype, int display_options, int facility);
static void log_setup(const char *filename, enum loglevels loglevel, enum logtypes logtype)
{
- uid_t process_uid;
-
if (loglevel == 0) {
/* Disable */
if (type_configs[logtype].set) {
free(tmp);
} else {
- process_uid = geteuid();
- if (process_uid) {
- if (seteuid(OPEN_LOGS_AS_UID) == -1) {
- process_uid = 0;
- }
- }
+ become_root();
type_configs[logtype].fd = open(filename,
O_CREAT | O_WRONLY | O_APPEND,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
- if (process_uid) {
- if (seteuid(process_uid) == -1) {
- LOG(log_error, logtype_logger, "can't seteuid back %s", strerror(errno));
- exit(EXITERR_SYS);
- }
- }
+ become_root();
}
/* Check for error opening/creating logfile */
loglevel, logtype);
/* If default wasnt setup its fd is -1 */
- iov[0].iov_base = log_details_buffer;
- iov[0].iov_len = strlen(log_details_buffer);
- iov[1].iov_base = temp_buffer;
- iov[1].iov_len = strlen(temp_buffer);
- writev( fd, iov, 2);
+ write(fd, log_details_buffer, strlen(log_details_buffer));
+ write(fd, temp_buffer, strlen(temp_buffer));
} else {
write(fd, temp_buffer, strlen(temp_buffer));
}