- else
- {
- /*
- memcpy(logs, log_file_arr[logtype_default], sizeof(log_file_data_pair));
- */
- log_file_arr[logtype] = logs;
- (*logs)[1].log_file = NULL;
- }
- }
-
- /* I think this checks if we're logging to stdout or not. Probably unused */
- if ( ((*logs)[1].log_file == stdout) && ((*logs)[1].log_file != NULL) )
- {
- fclose((*logs)[1].log_file);
- (*logs)[1].log_file = NULL;
- }
-
- /* check if we need to append the given filename to a directory */
- if (strlen(global_log_data.log_file_directory)>0)
- {
- lastchar[0] = global_log_data.
- log_file_directory[strlen(global_log_data.log_file_directory)-1];
-
- if (lastchar[0] == '/' || lastchar[0] == '\\' || lastchar[0] == ':')
- lastchar[0] = 0;
- else
- /* this should probably be a platform specific path separator */
- lastchar[0] = '/';
-
- lastchar[1] = 0;
- }
- else
- lastchar[0] = 0;
-
-#ifdef DEBUG_OUTPUT_TO_SCREEN
- printf("filename is %s stored at location %p\n", (*logs)[1].log_filename,
- (*logs)[1].log_filename);
-#endif /* DEBUG_OUTPUT_TO_SCREEN */
- if (filename == NULL)
- {
- strncpy((*logs)[1].log_filename,
- (*(log_file_arr[0]))[1].log_filename, PATH_MAX);
- }
- else
- {
- sprintf((*logs)[1].log_filename, "%s%s%s",
- global_log_data.log_file_directory,
- lastchar, filename);
- }
- (*logs)[1].log_level = loglevel;
- (*logs)[1].display_options = display_options;
-
-#ifdef DEBUG_OUTPUT_TO_SCREEN
- printf("filename is %s stored at location %p\n", (*logs)[1].log_filename,
- (*logs)[1].log_filename);
-#endif /* DEBUG_OUTPUT_TO_SCREEN */
-
-#ifdef CHECK_STAT_ON_NEW_FILES
- uid = geteuid();
- gid = getegid();
-
-#ifdef DEBUG_OUTPUT_TO_SCREEN
- printf("about to stat file %s\n", (*logs)[1].log_filename);
-#endif
- firstattempt = stat((*logs)[1].log_filename, &statbuf);
-
- if (firstattempt == -1)
- {
-#ifdef DEBUG_OUTPUT_TO_SCREEN
- printf("about to call Log with %d, %d, %s, %s\n",
- log_note, logtype_logger,
- "can't stat Logfile",
- (*logs)[1].log_filename
- );
-#endif
-
- /* syslog(LOG_INFO, "stat failed"); */
- LOG(log_warning, logtype_logger, "stat fails on file %s",
- (*logs)[1].log_filename);