log_control
static struct log_control log_control = {
log_control.log_debug = debug;
log_control.log_nentries = 0;
for (log_control.log_nentries = 0;
logging_specs[log_control.log_nentries];
log_control.log_nentries++);
log_control.log_entries = (struct log_entry *)
malloc(log_control.log_nentries * sizeof(struct log_entry));
if (log_control.log_entries) {
for (i=0; i<log_control.log_nentries; i++) {
log_control.log_entries[i].log_type = K_LOG_NONE;
log_control.log_entries[i].log_2free = logging_specs[i];
log_control.log_entries[i].lfu_filep = f;
log_control.log_entries[i].log_type = K_LOG_FILE;
log_control.log_entries[i].lfu_fname = &cp[5];
log_control.log_entries[i].lsu_facility = LOG_AUTH;
log_control.log_entries[i].lsu_facility = facilities[j].value;
log_control.log_entries[i].log_type = K_LOG_SYSLOG;
log_facility = log_control.log_entries[i].lsu_facility;
log_control.log_entries[i].lfu_filep =
if (log_control.log_entries[i].lfu_filep) {
log_control.log_entries[i].log_type = K_LOG_STDERR;
log_control.log_entries[i].lfu_fname =
log_control.log_entries[i].ldu_filep =
if (log_control.log_entries[i].ldu_filep) {
set_cloexec_file(log_control.log_entries[i].ldu_filep);
log_control.log_entries[i].log_type = K_LOG_CONSOLE;
log_control.log_entries[i].ldu_devname = "console";
log_control.log_entries[i].ldu_filep =
if (log_control.log_entries[i].ldu_filep) {
set_cloexec_file(log_control.log_entries[i].ldu_filep);
log_control.log_entries[i].log_type = K_LOG_DEVICE;
log_control.log_entries[i].ldu_devname = &cp[7];
if (log_control.log_entries[i].log_type == K_LOG_NONE) {
for (i=0; i<log_control.log_nentries; i++)
if (log_control.log_entries)
free(log_control.log_entries);
log_control.log_entries = &def_log_entry;
log_control.log_entries->log_type = K_LOG_SYSLOG;
log_control.log_entries->log_2free = (krb5_pointer) NULL;
log_facility = log_control.log_entries->lsu_facility = LOG_AUTH;
log_control.log_nentries = 1;
if (log_control.log_nentries) {
log_control.log_whoami = strdup(whoami);
log_control.log_hostname = (char *) malloc(MAXHOSTNAMELEN + 1);
if (log_control.log_hostname) {
if (gethostname(log_control.log_hostname, MAXHOSTNAMELEN) == -1) {
free(log_control.log_hostname);
log_control.log_hostname = NULL;
log_control.log_hostname[MAXHOSTNAMELEN] = '\0';
log_control.log_opened = 1;
return((log_control.log_nentries) ? 0 : ENOENT);
for (lindex = 0; lindex < log_control.log_nentries; lindex++) {
switch (log_control.log_entries[lindex].log_type) {
fclose(log_control.log_entries[lindex].lfu_filep);
DEVICE_CLOSE(log_control.log_entries[lindex].ldu_filep);
if (log_control.log_entries[lindex].log_2free)
free(log_control.log_entries[lindex].log_2free);
if (log_control.log_entries != &def_log_entry)
free(log_control.log_entries);
log_control.log_entries = (struct log_entry *) NULL;
log_control.log_nentries = 0;
if (log_control.log_whoami)
free(log_control.log_whoami);
log_control.log_whoami = (char *) NULL;
if (log_control.log_hostname)
free(log_control.log_hostname);
log_control.log_hostname = (char *) NULL;
if (log_control.log_opened)
log_control.log_hostname ? log_control.log_hostname : "",
log_control.log_whoami ? log_control.log_whoami : "",
if (log_control.log_nentries == 0) {
for (lindex = 0; lindex < log_control.log_nentries; lindex++) {
if (priority == LOG_DEBUG && !log_control.log_debug &&
log_control.log_entries[lindex].log_type != K_LOG_SYSLOG)
switch (log_control.log_entries[lindex].log_type) {
if (fprintf(log_control.log_entries[lindex].lfu_filep, "%s\n",
fprintf(stderr, log_file_err, log_control.log_whoami,
log_control.log_entries[lindex].lfu_fname);
fflush(log_control.log_entries[lindex].lfu_filep);
if (DEVICE_PRINT(log_control.log_entries[lindex].ldu_filep,
fprintf(stderr, log_device_err, log_control.log_whoami,
log_control.log_entries[lindex].ldu_devname);
for (lindex = 0; lindex < log_control.log_nentries; lindex++) {
if (log_control.log_entries[lindex].log_type == K_LOG_FILE) {
fclose(log_control.log_entries[lindex].lfu_filep);
f = fopen(log_control.log_entries[lindex].lfu_fname, "a+");
log_control.log_entries[lindex].lfu_filep = f;
log_control.log_entries[lindex].lfu_fname,